From 52e9fd8767e305d9b2581bed5832cc6990ec7550 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 2 May 2017 11:58:23 +0200 Subject: Import foo2zjs_20170320dfsg0.orig.tar.xz [dgit import orig foo2zjs_20170320dfsg0.orig.tar.xz] --- COPYING | 414 ++ ChangeLog | 1857 ++++++++ INSTALL | 964 ++++ INSTALL.in | 934 ++++ INSTALL.osx | 409 ++ INSTALL.usb | 43 + Makefile | 1959 ++++++++ PPD/Dell-1355.ppd | 441 ++ PPD/Dell-C1765.ppd | 441 ++ PPD/Epson-AcuLaser_CX17NF.ppd | 441 ++ PPD/Epson-AcuLaser_M1400.ppd | 427 ++ PPD/Fuji_Xerox-DocuPrint_CM205.ppd | 450 ++ PPD/Fuji_Xerox-DocuPrint_CM215.ppd | 450 ++ PPD/Fuji_Xerox-DocuPrint_M215.ppd | 427 ++ PPD/Fuji_Xerox-DocuPrint_P205.ppd | 427 ++ PPD/Generic-OAKT_Printer.ppd | 449 ++ PPD/Generic-ZjStream_Printer.ppd | 501 +++ PPD/HP-Color_LaserJet_1500.ppd | 449 ++ PPD/HP-Color_LaserJet_1600.ppd | 836 ++++ PPD/HP-Color_LaserJet_2600n.ppd | 836 ++++ PPD/HP-Color_LaserJet_CP1215.ppd | 836 ++++ PPD/HP-LaserJet_1000.ppd | 426 ++ PPD/HP-LaserJet_1005.ppd | 426 ++ PPD/HP-LaserJet_1018.ppd | 489 ++ PPD/HP-LaserJet_1020.ppd | 489 ++ PPD/HP-LaserJet_1022.ppd | 489 ++ PPD/HP-LaserJet_1022n.ppd | 503 +++ PPD/HP-LaserJet_1022nw.ppd | 503 +++ PPD/HP-LaserJet_M1005_MFP.ppd | 490 ++ PPD/HP-LaserJet_M1120_MFP.ppd | 490 ++ PPD/HP-LaserJet_M1319_MFP.ppd | 489 ++ PPD/HP-LaserJet_P1005.ppd | 490 ++ PPD/HP-LaserJet_P1006.ppd | 490 ++ PPD/HP-LaserJet_P1007.ppd | 490 ++ PPD/HP-LaserJet_P1008.ppd | 490 ++ PPD/HP-LaserJet_P1505.ppd | 490 ++ PPD/HP-LaserJet_P1505n.ppd | 490 ++ PPD/HP-LaserJet_P2014.ppd | 490 ++ PPD/HP-LaserJet_P2014n.ppd | 490 ++ PPD/HP-LaserJet_P2035.ppd | 489 ++ PPD/HP-LaserJet_P2035n.ppd | 491 ++ PPD/HP-LaserJet_Pro_CP1025nw.ppd | 541 +++ PPD/HP-LaserJet_Pro_M1212nf_MFP.ppd | 490 ++ PPD/HP-LaserJet_Pro_P1102.ppd | 491 ++ PPD/HP-LaserJet_Pro_P1102w.ppd | 491 ++ PPD/HP-LaserJet_Pro_P1566.ppd | 491 ++ PPD/HP-LaserJet_Pro_P1606dn.ppd | 503 +++ PPD/KONICA_MINOLTA-magicolor_1600W.ppd | 511 +++ PPD/KONICA_MINOLTA-magicolor_1680MF.ppd | 511 +++ PPD/KONICA_MINOLTA-magicolor_1690MF.ppd | 511 +++ PPD/KONICA_MINOLTA-magicolor_2430_DL.ppd | 496 +++ PPD/KONICA_MINOLTA-magicolor_2480_MF.ppd | 511 +++ PPD/KONICA_MINOLTA-magicolor_2490_MF.ppd | 511 +++ PPD/KONICA_MINOLTA-magicolor_2530_DL.ppd | 511 +++ PPD/KONICA_MINOLTA-magicolor_4690MF.ppd | 511 +++ PPD/Kyocera-KM-1635.ppd | 458 ++ PPD/Kyocera-KM-2035.ppd | 458 ++ PPD/Lexmark-C500.ppd | 440 ++ PPD/Minolta-Color_PageWorks_Pro_L.ppd | 493 ++ PPD/Minolta-magicolor_2200_DL.ppd | 485 ++ PPD/Minolta-magicolor_2300_DL.ppd | 496 +++ PPD/Minolta-magicolor_2430_DL.ppd | 496 +++ PPD/Oki-C110.ppd | 511 +++ PPD/Oki-C301dn.ppd | 519 +++ PPD/Oki-C3100.ppd | 519 +++ PPD/Oki-C310dn.ppd | 519 +++ PPD/Oki-C3200.ppd | 519 +++ PPD/Oki-C3300.ppd | 519 +++ PPD/Oki-C3400.ppd | 519 +++ PPD/Oki-C3530_MFP.ppd | 519 +++ PPD/Oki-C5100.ppd | 519 +++ PPD/Oki-C511dn.ppd | 519 +++ PPD/Oki-C5200.ppd | 519 +++ PPD/Oki-C5500.ppd | 519 +++ PPD/Oki-C5600.ppd | 519 +++ PPD/Oki-C5650.ppd | 519 +++ PPD/Oki-C5800.ppd | 519 +++ PPD/Oki-C810.ppd | 529 +++ PPD/Olivetti-d-Color_P160W.ppd | 519 +++ PPD/Ricoh-SP_112.ppd | 341 ++ PPD/Ricoh-SP_201Nw.ppd | 341 ++ PPD/Samsung-CLP-300.ppd | 509 +++ PPD/Samsung-CLP-310.ppd | 509 +++ PPD/Samsung-CLP-315.ppd | 509 +++ PPD/Samsung-CLP-325.ppd | 509 +++ PPD/Samsung-CLP-365.ppd | 1173 +++++ PPD/Samsung-CLP-600.ppd | 521 +++ PPD/Samsung-CLP-610.ppd | 521 +++ PPD/Samsung-CLP-620.ppd | 1185 +++++ PPD/Samsung-CLX-2160.ppd | 509 +++ PPD/Samsung-CLX-3160.ppd | 509 +++ PPD/Samsung-CLX-3175.ppd | 509 +++ PPD/Samsung-CLX-3185.ppd | 509 +++ PPD/Xerox-Phaser_3010.ppd | 427 ++ PPD/Xerox-Phaser_3040.ppd | 427 ++ PPD/Xerox-Phaser_6110.ppd | 509 +++ PPD/Xerox-Phaser_6115MFP.ppd | 511 +++ PPD/Xerox-Phaser_6121MFP.ppd | 511 +++ PPD/Xerox-WorkCentre_3045.ppd | 427 ++ PPD/Xerox-WorkCentre_6015.ppd | 441 ++ README | 232 + README.in | 232 + align.ps | 227 + arm2hpdl.1in | 44 + arm2hpdl.c | 251 ++ command2foo2lava-pjl.c | 534 +++ crd/qpdl/black-text.ps | 117 + crd/zjs/2300w-1200@150-l250-kx,ucr100,0-per.crd | 4684 ++++++++++++++++++++ crd/zjs/2300w-1200@150-l250-kx,ucr100,50-per.crd | 4684 ++++++++++++++++++++ crd/zjs/2300w-1200@150-l250-kx,ucr100,75-per.crd | 4684 ++++++++++++++++++++ crd/zjs/2300w-1200@150-l250-kx,ucr125,75-per.crd | 4684 ++++++++++++++++++++ crd/zjs/kh.crd | 4682 +++++++++++++++++++ crd/zjs/kx.crd | 4682 +++++++++++++++++++ crd/zjs/prolog.ps | 78 + crd/zjs/screen1200.ps | 218 + crd/zjs/screen2400.ps | 357 ++ cups.h | 226 + ddst.h | 224 + ddstdecode.1in | 84 + ddstdecode.c | 540 +++ foo2ddst-wrapper.1in | 163 + foo2ddst-wrapper.in | 683 +++ foo2ddst.1in | 162 + foo2ddst.c | 1580 +++++++ foo2hbpl2-wrapper.1in | 248 ++ foo2hbpl2-wrapper.in | 731 +++ foo2hbpl2.1in | 213 + foo2hbpl2.c | 1630 +++++++ foo2hiperc-wrapper.1in | 217 + foo2hiperc-wrapper.in | 750 ++++ foo2hiperc.1in | 180 + foo2hiperc.c | 1719 +++++++ foo2hp.1in | 204 + foo2hp.c | 1832 ++++++++ foo2hp2600-wrapper.1in | 241 + foo2hp2600-wrapper.in | 819 ++++ foo2lava-wrapper.1in | 235 + foo2lava-wrapper.in | 760 ++++ foo2lava.1in | 193 + foo2lava.c | 1703 +++++++ foo2oak-wrapper.1in | 227 + foo2oak-wrapper.in | 732 +++ foo2oak.1in | 200 + foo2oak.c | 2011 +++++++++ foo2qpdl-wrapper.1in | 240 + foo2qpdl-wrapper.in | 756 ++++ foo2qpdl.1in | 205 + foo2qpdl.c | 1856 ++++++++ foo2slx-wrapper.1in | 196 + foo2slx-wrapper.in | 728 +++ foo2slx.1in | 163 + foo2slx.c | 1574 +++++++ foo2xqx-wrapper.1in | 169 + foo2xqx-wrapper.in | 693 +++ foo2xqx.1in | 168 + foo2xqx.c | 1513 +++++++ foo2zjs-pstops.1in | 54 + foo2zjs-pstops.sh | 177 + foo2zjs-wrapper.1in | 272 ++ foo2zjs-wrapper.in | 971 ++++ foo2zjs.1in | 234 + foo2zjs.c | 1951 ++++++++ foomatic-db/driver/foo2ddst.xml | 20 + foomatic-db/driver/foo2hbpl2.xml | 32 + foomatic-db/driver/foo2hiperc-z1.xml | 19 + foomatic-db/driver/foo2hiperc.xml | 34 + foomatic-db/driver/foo2hp.xml | 24 + foomatic-db/driver/foo2lava.xml | 31 + foomatic-db/driver/foo2oak-z1.xml | 20 + foomatic-db/driver/foo2oak.xml | 25 + foomatic-db/driver/foo2qpdl.xml | 33 + foomatic-db/driver/foo2slx.xml | 19 + foomatic-db/driver/foo2xqx.xml | 29 + foomatic-db/driver/foo2zjs-z1.xml | 27 + foomatic-db/driver/foo2zjs-z2.xml | 23 + foomatic-db/driver/foo2zjs-z3.xml | 19 + foomatic-db/driver/foo2zjs.xml | 35 + foomatic-db/opt/foo2ddst-InputSlot.xml | 32 + foomatic-db/opt/foo2ddst-MediaType.xml | 47 + foomatic-db/opt/foo2ddst-PageSize.xml | 87 + foomatic-db/opt/foo2ddst-Resolution.xml | 36 + foomatic-db/opt/foo2hbpl2-ColorMode.xml | 58 + foomatic-db/opt/foo2hbpl2-ICM.xml | 106 + foomatic-db/opt/foo2hbpl2-MediaType.xml | 82 + foomatic-db/opt/foo2hbpl2-PageSize.xml | 85 + foomatic-db/opt/foo2hbpl2-Resolution.xml | 151 + foomatic-db/opt/foo2hiperc-ColorMode.xml | 42 + foomatic-db/opt/foo2hiperc-Compression.xml | 36 + foomatic-db/opt/foo2hiperc-Duplex.xml | 41 + foomatic-db/opt/foo2hiperc-ICM.xml | 176 + foomatic-db/opt/foo2hiperc-InputSlot.xml | 58 + foomatic-db/opt/foo2hiperc-MediaType.xml | 41 + foomatic-db/opt/foo2hiperc-PageSize.xml | 211 + foomatic-db/opt/foo2hiperc-Resolution.xml | 47 + foomatic-db/opt/foo2hp-AlignC.xml | 22 + foomatic-db/opt/foo2hp-AlignM.xml | 22 + foomatic-db/opt/foo2hp-AlignY.xml | 22 + foomatic-db/opt/foo2hp-BitsPerPlane.xml | 36 + foomatic-db/opt/foo2hp-ColorMode.xml | 38 + foomatic-db/opt/foo2hp-Duplex.xml | 37 + foomatic-db/opt/foo2hp-ICM.xml | 87 + foomatic-db/opt/foo2hp-InputSlot.xml | 42 + foomatic-db/opt/foo2hp-MediaType.xml | 117 + foomatic-db/opt/foo2hp-PrinterType.xml | 79 + foomatic-db/opt/foo2lava-ColorMode.xml | 78 + foomatic-db/opt/foo2lava-Duplex.xml | 37 + foomatic-db/opt/foo2lava-ICM.xml | 149 + foomatic-db/opt/foo2lava-InputSlot.xml | 37 + foomatic-db/opt/foo2lava-MediaType.xml | 67 + foomatic-db/opt/foo2lava-PageSize.xml | 97 + foomatic-db/opt/foo2lava-PrinterType.xml | 167 + foomatic-db/opt/foo2lava-Resolution.xml | 43 + foomatic-db/opt/foo2oak-BitsPerPlane.xml | 36 + foomatic-db/opt/foo2oak-ColorMode.xml | 38 + foomatic-db/opt/foo2oak-ICM.xml | 76 + foomatic-db/opt/foo2oak-InputSlot.xml | 42 + foomatic-db/opt/foo2oak-MediaType.xml | 97 + foomatic-db/opt/foo2oak-z1-Duplex.xml | 37 + foomatic-db/opt/foo2oak-z1-InputSlot.xml | 37 + foomatic-db/opt/foo2oak-z1-MediaType.xml | 102 + foomatic-db/opt/foo2oak-z1-PageSize.xml | 141 + foomatic-db/opt/foo2qpdl-ColorAdjustB.xml | 55 + foomatic-db/opt/foo2qpdl-ColorAdjustC.xml | 55 + foomatic-db/opt/foo2qpdl-ColorAdjustCR.xml | 55 + foomatic-db/opt/foo2qpdl-ColorAdjustMG.xml | 55 + foomatic-db/opt/foo2qpdl-ColorAdjustS.xml | 55 + foomatic-db/opt/foo2qpdl-ColorAdjustYB.xml | 55 + foomatic-db/opt/foo2qpdl-ColorMode.xml | 38 + foomatic-db/opt/foo2qpdl-Duplex.xml | 67 + foomatic-db/opt/foo2qpdl-ICM.xml | 202 + foomatic-db/opt/foo2qpdl-InputSlot.xml | 47 + foomatic-db/opt/foo2qpdl-MediaType.xml | 87 + foomatic-db/opt/foo2qpdl-PageSize.xml | 112 + foomatic-db/opt/foo2qpdl-PrinterType.xml | 214 + foomatic-db/opt/foo2qpdl-Resolution.xml | 43 + foomatic-db/opt/foo2slx-ColorMode.xml | 38 + foomatic-db/opt/foo2slx-ICM.xml | 65 + foomatic-db/opt/foo2slx-InputSlot.xml | 32 + foomatic-db/opt/foo2slx-MediaType.xml | 72 + foomatic-db/opt/foo2slx-PageSize.xml | 67 + foomatic-db/opt/foo2slx-Resolution.xml | 36 + foomatic-db/opt/foo2xqx-Density.xml | 47 + foomatic-db/opt/foo2xqx-Duplex.xml | 37 + foomatic-db/opt/foo2xqx-InputSlot.xml | 37 + foomatic-db/opt/foo2xqx-MediaType.xml | 122 + foomatic-db/opt/foo2xqx-Resolution.xml | 36 + foomatic-db/opt/foo2xxx-Copies.xml | 78 + foomatic-db/opt/foo2xxx-Halftone.xml | 97 + foomatic-db/opt/foo2xxx-Nup.xml | 136 + foomatic-db/opt/foo2xxx-NupOrient.xml | 95 + foomatic-db/opt/foo2xxx-Quality.xml | 87 + foomatic-db/opt/foo2zjs-ColorMode.xml | 267 ++ foomatic-db/opt/foo2zjs-Duplex.xml | 90 + foomatic-db/opt/foo2zjs-ICM.xml | 442 ++ foomatic-db/opt/foo2zjs-InputSlot.xml | 279 ++ foomatic-db/opt/foo2zjs-Intent.xml | 79 + foomatic-db/opt/foo2zjs-MediaType.xml | 60 + foomatic-db/opt/foo2zjs-PageSize.xml | 154 + foomatic-db/opt/foo2zjs-PrinterType.xml | 201 + foomatic-db/opt/foo2zjs-Resolution.xml | 131 + foomatic-db/opt/foo2zjs-z1-MediaType.xml | 100 + foomatic-db/opt/foo2zjs-z1-PageSize.xml | 115 + foomatic-db/opt/foo2zjs-z12-Density.xml | 54 + foomatic-db/opt/foo2zjs-z2-MediaType.xml | 110 + foomatic-db/opt/foo2zjs-z2-PageSize.xml | 120 + foomatic-db/opt/foo2zjs-z3-MediaType.xml | 110 + foomatic-db/opt/foo2zjs-z3-PageSize.xml | 135 + foomatic-db/printer/Dell-1355.xml | 71 + foomatic-db/printer/Dell-C1765.xml | 71 + foomatic-db/printer/Epson-AcuLaser_CX17NF.xml | 71 + foomatic-db/printer/Epson-AcuLaser_M1400.xml | 71 + foomatic-db/printer/Fuji_Xerox-DocuPrint_CM205.xml | 71 + foomatic-db/printer/Fuji_Xerox-DocuPrint_CM215.xml | 75 + foomatic-db/printer/Fuji_Xerox-DocuPrint_M215.xml | 71 + foomatic-db/printer/Fuji_Xerox-DocuPrint_P205.xml | 71 + foomatic-db/printer/Generic-OAKT_Printer.xml | 55 + foomatic-db/printer/Generic-ZjStream_Printer.xml | 46 + foomatic-db/printer/HP-Color_LaserJet_1500.xml | 63 + foomatic-db/printer/HP-Color_LaserJet_1600.xml | 58 + foomatic-db/printer/HP-Color_LaserJet_2600n.xml | 58 + foomatic-db/printer/HP-Color_LaserJet_CP1215.xml | 58 + foomatic-db/printer/HP-LaserJet_1000.xml | 60 + foomatic-db/printer/HP-LaserJet_1005.xml | 58 + foomatic-db/printer/HP-LaserJet_1018.xml | 61 + foomatic-db/printer/HP-LaserJet_1020.xml | 61 + foomatic-db/printer/HP-LaserJet_1022.xml | 55 + foomatic-db/printer/HP-LaserJet_1022n.xml | 55 + foomatic-db/printer/HP-LaserJet_1022nw.xml | 55 + foomatic-db/printer/HP-LaserJet_M1005_MFP.xml | 50 + foomatic-db/printer/HP-LaserJet_M1120_MFP.xml | 50 + foomatic-db/printer/HP-LaserJet_M1319_MFP.xml | 55 + foomatic-db/printer/HP-LaserJet_P1005.xml | 51 + foomatic-db/printer/HP-LaserJet_P1006.xml | 51 + foomatic-db/printer/HP-LaserJet_P1007.xml | 50 + foomatic-db/printer/HP-LaserJet_P1008.xml | 50 + foomatic-db/printer/HP-LaserJet_P1505.xml | 50 + foomatic-db/printer/HP-LaserJet_P1505n.xml | 50 + foomatic-db/printer/HP-LaserJet_P2014.xml | 50 + foomatic-db/printer/HP-LaserJet_P2014n.xml | 50 + foomatic-db/printer/HP-LaserJet_P2035.xml | 55 + foomatic-db/printer/HP-LaserJet_P2035n.xml | 55 + foomatic-db/printer/HP-LaserJet_Pro_CP1025nw.xml | 62 + .../printer/HP-LaserJet_Pro_M1212nf_MFP.xml | 50 + foomatic-db/printer/HP-LaserJet_Pro_P1102.xml | 55 + foomatic-db/printer/HP-LaserJet_Pro_P1102w.xml | 55 + foomatic-db/printer/HP-LaserJet_Pro_P1566.xml | 55 + foomatic-db/printer/HP-LaserJet_Pro_P1606dn.xml | 55 + .../printer/KONICA_MINOLTA-magicolor_1600W.xml | 63 + .../printer/KONICA_MINOLTA-magicolor_1680MF.xml | 63 + .../printer/KONICA_MINOLTA-magicolor_1690MF.xml | 63 + .../printer/KONICA_MINOLTA-magicolor_2430_DL.xml | 63 + .../printer/KONICA_MINOLTA-magicolor_2480_MF.xml | 61 + .../printer/KONICA_MINOLTA-magicolor_2490_MF.xml | 61 + .../printer/KONICA_MINOLTA-magicolor_2530_DL.xml | 63 + .../printer/KONICA_MINOLTA-magicolor_4690MF.xml | 61 + foomatic-db/printer/Kyocera-KM-1635.xml | 53 + foomatic-db/printer/Kyocera-KM-2035.xml | 53 + foomatic-db/printer/Lexmark-C500.xml | 54 + .../printer/Minolta-Color_PageWorks_Pro_L.xml | 40 + foomatic-db/printer/Minolta-magicolor_2200_DL.xml | 66 + foomatic-db/printer/Minolta-magicolor_2300_DL.xml | 65 + foomatic-db/printer/Minolta-magicolor_2430_DL.xml | 63 + foomatic-db/printer/Oki-C110.xml | 67 + foomatic-db/printer/Oki-C301dn.xml | 58 + foomatic-db/printer/Oki-C3100.xml | 53 + foomatic-db/printer/Oki-C310dn.xml | 53 + foomatic-db/printer/Oki-C3200.xml | 53 + foomatic-db/printer/Oki-C3300.xml | 53 + foomatic-db/printer/Oki-C3400.xml | 53 + foomatic-db/printer/Oki-C3530_MFP.xml | 55 + foomatic-db/printer/Oki-C5100.xml | 53 + foomatic-db/printer/Oki-C511dn.xml | 58 + foomatic-db/printer/Oki-C5200.xml | 53 + foomatic-db/printer/Oki-C5500.xml | 53 + foomatic-db/printer/Oki-C5600.xml | 53 + foomatic-db/printer/Oki-C5650.xml | 53 + foomatic-db/printer/Oki-C5800.xml | 53 + foomatic-db/printer/Oki-C810.xml | 53 + foomatic-db/printer/Olivetti-d-Color_P160W.xml | 53 + foomatic-db/printer/Ricoh-SP_112.xml | 53 + foomatic-db/printer/Ricoh-SP_201Nw.xml | 53 + foomatic-db/printer/Samsung-CLP-300.xml | 57 + foomatic-db/printer/Samsung-CLP-310.xml | 65 + foomatic-db/printer/Samsung-CLP-315.xml | 65 + foomatic-db/printer/Samsung-CLP-325.xml | 65 + foomatic-db/printer/Samsung-CLP-365.xml | 63 + foomatic-db/printer/Samsung-CLP-600.xml | 54 + foomatic-db/printer/Samsung-CLP-610.xml | 54 + foomatic-db/printer/Samsung-CLP-620.xml | 54 + foomatic-db/printer/Samsung-CLX-2160.xml | 59 + foomatic-db/printer/Samsung-CLX-3160.xml | 59 + foomatic-db/printer/Samsung-CLX-3175.xml | 59 + foomatic-db/printer/Samsung-CLX-3185.xml | 59 + foomatic-db/printer/Xerox-Phaser_3010.xml | 71 + foomatic-db/printer/Xerox-Phaser_3040.xml | 71 + foomatic-db/printer/Xerox-Phaser_6110.xml | 70 + foomatic-db/printer/Xerox-Phaser_6115MFP.xml | 56 + foomatic-db/printer/Xerox-Phaser_6121MFP.xml | 65 + foomatic-db/printer/Xerox-WorkCentre_3045.xml | 71 + foomatic-db/printer/Xerox-WorkCentre_6015.xml | 71 + foomatic-test | 42 + freebsd-install | 103 + gamma-lookup.ps | 117 + gamma.ps | 15 + getweb.in | 520 +++ gipddecode.1in | 108 + gipddecode.c | 840 ++++ hbpl.h | 256 ++ hbpldecode.1in | 209 + hbpldecode.c | 935 ++++ hiperc.h | 171 + hipercdecode.1in | 169 + hipercdecode.c | 465 ++ hplj1000 | 309 ++ hplj1020.desktop | 12 + hplj1020_icon.gif | Bin 0 -> 1796 bytes hplj1020_icon.png | Bin 0 -> 2587 bytes hplj10xx.conf | 75 + hplj10xx.rules | 39 + hplj10xx.rules.old | 39 + hplj10xx_gui.tcl | 209 + icc2ps/AUTHORS | 4 + icc2ps/COPYING | 8 + icc2ps/Makefile | 63 + icc2ps/README | 94 + icc2ps/README.foo2zjs | 13 + icc2ps/cmscam02.c | 490 ++ icc2ps/cmscam97.c | 721 +++ icc2ps/cmscgats.c | 2703 +++++++++++ icc2ps/cmscnvrt.c | 637 +++ icc2ps/cmserr.c | 110 + icc2ps/cmsgamma.c | 954 ++++ icc2ps/cmsgmt.c | 1243 ++++++ icc2ps/cmsintrp.c | 1105 +++++ icc2ps/cmsio0.c | 735 +++ icc2ps/cmsio1.c | 3726 ++++++++++++++++ icc2ps/cmslut.c | 843 ++++ icc2ps/cmsmatsh.c | 382 ++ icc2ps/cmsmtrx.c | 816 ++++ icc2ps/cmsnamed.c | 171 + icc2ps/cmspack.c | 2146 +++++++++ icc2ps/cmspcs.c | 601 +++ icc2ps/cmsps2.c | 1717 +++++++ icc2ps/cmssamp.c | 668 +++ icc2ps/cmsvirt.c | 899 ++++ icc2ps/cmswtpnt.c | 695 +++ icc2ps/cmsxform.c | 2014 +++++++++ icc2ps/foo2zjs-icc2ps.1in | 54 + icc2ps/icc2ps.c | 264 ++ icc2ps/icc34.h | 1029 +++++ icc2ps/lcms.h | 2069 +++++++++ icc2ps/xgetopt.c | 75 + includer-man | 131 + jbig.c | 3288 ++++++++++++++ jbig.h | 235 + jbig_ar.c | 417 ++ jbig_ar.h | 55 + lavadecode.1in | 102 + lavadecode.c | 564 +++ macros.man | 172 + modify-ppd | 73 + msexpand | 183 + myftpput | 106 + oak.h | 217 + oakdecode.1in | 98 + oakdecode.c | 718 +++ opldecode.1in | 121 + opldecode.c | 425 ++ osx-hotplug/Makefile | 73 + osx-hotplug/local.localhost.startup.plist | 15 + osx-hotplug/osx-hplj-hotplug.1in | 37 + osx-hotplug/osx-hplj-hotplug.m | 698 +++ ppd-adjust | 3 + printer-profile.1in | 68 + printer-profile.sh | 357 ++ qpdl.h | 168 + qpdldecode.1in | 132 + qpdldecode.c | 613 +++ regress.txt | 79 + slx.h | 254 ++ slxdecode.1in | 109 + slxdecode.c | 598 +++ testpage.ps | 416 ++ usb_printerid.1in | 50 + usb_printerid.c | 74 + xqx.h | 224 + xqxdecode.1in | 111 + xqxdecode.c | 456 ++ zjs.h | 318 ++ zjsdecode.1in | 105 + zjsdecode.c | 888 ++++ 451 files changed, 173178 insertions(+) create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 INSTALL.in create mode 100644 INSTALL.osx create mode 100644 INSTALL.usb create mode 100644 Makefile create mode 100644 PPD/Dell-1355.ppd create mode 100644 PPD/Dell-C1765.ppd create mode 100644 PPD/Epson-AcuLaser_CX17NF.ppd create mode 100644 PPD/Epson-AcuLaser_M1400.ppd create mode 100644 PPD/Fuji_Xerox-DocuPrint_CM205.ppd create mode 100644 PPD/Fuji_Xerox-DocuPrint_CM215.ppd create mode 100644 PPD/Fuji_Xerox-DocuPrint_M215.ppd create mode 100644 PPD/Fuji_Xerox-DocuPrint_P205.ppd create mode 100644 PPD/Generic-OAKT_Printer.ppd create mode 100644 PPD/Generic-ZjStream_Printer.ppd create mode 100644 PPD/HP-Color_LaserJet_1500.ppd create mode 100644 PPD/HP-Color_LaserJet_1600.ppd create mode 100644 PPD/HP-Color_LaserJet_2600n.ppd create mode 100644 PPD/HP-Color_LaserJet_CP1215.ppd create mode 100644 PPD/HP-LaserJet_1000.ppd create mode 100644 PPD/HP-LaserJet_1005.ppd create mode 100644 PPD/HP-LaserJet_1018.ppd create mode 100644 PPD/HP-LaserJet_1020.ppd create mode 100644 PPD/HP-LaserJet_1022.ppd create mode 100644 PPD/HP-LaserJet_1022n.ppd create mode 100644 PPD/HP-LaserJet_1022nw.ppd create mode 100644 PPD/HP-LaserJet_M1005_MFP.ppd create mode 100644 PPD/HP-LaserJet_M1120_MFP.ppd create mode 100644 PPD/HP-LaserJet_M1319_MFP.ppd create mode 100644 PPD/HP-LaserJet_P1005.ppd create mode 100644 PPD/HP-LaserJet_P1006.ppd create mode 100644 PPD/HP-LaserJet_P1007.ppd create mode 100644 PPD/HP-LaserJet_P1008.ppd create mode 100644 PPD/HP-LaserJet_P1505.ppd create mode 100644 PPD/HP-LaserJet_P1505n.ppd create mode 100644 PPD/HP-LaserJet_P2014.ppd create mode 100644 PPD/HP-LaserJet_P2014n.ppd create mode 100644 PPD/HP-LaserJet_P2035.ppd create mode 100644 PPD/HP-LaserJet_P2035n.ppd create mode 100644 PPD/HP-LaserJet_Pro_CP1025nw.ppd create mode 100644 PPD/HP-LaserJet_Pro_M1212nf_MFP.ppd create mode 100644 PPD/HP-LaserJet_Pro_P1102.ppd create mode 100644 PPD/HP-LaserJet_Pro_P1102w.ppd create mode 100644 PPD/HP-LaserJet_Pro_P1566.ppd create mode 100644 PPD/HP-LaserJet_Pro_P1606dn.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_1600W.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_1680MF.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_1690MF.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_2430_DL.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_2480_MF.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_2490_MF.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_2530_DL.ppd create mode 100644 PPD/KONICA_MINOLTA-magicolor_4690MF.ppd create mode 100644 PPD/Kyocera-KM-1635.ppd create mode 100644 PPD/Kyocera-KM-2035.ppd create mode 100644 PPD/Lexmark-C500.ppd create mode 100644 PPD/Minolta-Color_PageWorks_Pro_L.ppd create mode 100644 PPD/Minolta-magicolor_2200_DL.ppd create mode 100644 PPD/Minolta-magicolor_2300_DL.ppd create mode 100644 PPD/Minolta-magicolor_2430_DL.ppd create mode 100644 PPD/Oki-C110.ppd create mode 100644 PPD/Oki-C301dn.ppd create mode 100644 PPD/Oki-C3100.ppd create mode 100644 PPD/Oki-C310dn.ppd create mode 100644 PPD/Oki-C3200.ppd create mode 100644 PPD/Oki-C3300.ppd create mode 100644 PPD/Oki-C3400.ppd create mode 100644 PPD/Oki-C3530_MFP.ppd create mode 100644 PPD/Oki-C5100.ppd create mode 100644 PPD/Oki-C511dn.ppd create mode 100644 PPD/Oki-C5200.ppd create mode 100644 PPD/Oki-C5500.ppd create mode 100644 PPD/Oki-C5600.ppd create mode 100644 PPD/Oki-C5650.ppd create mode 100644 PPD/Oki-C5800.ppd create mode 100644 PPD/Oki-C810.ppd create mode 100644 PPD/Olivetti-d-Color_P160W.ppd create mode 100644 PPD/Ricoh-SP_112.ppd create mode 100644 PPD/Ricoh-SP_201Nw.ppd create mode 100644 PPD/Samsung-CLP-300.ppd create mode 100644 PPD/Samsung-CLP-310.ppd create mode 100644 PPD/Samsung-CLP-315.ppd create mode 100644 PPD/Samsung-CLP-325.ppd create mode 100644 PPD/Samsung-CLP-365.ppd create mode 100644 PPD/Samsung-CLP-600.ppd create mode 100644 PPD/Samsung-CLP-610.ppd create mode 100644 PPD/Samsung-CLP-620.ppd create mode 100644 PPD/Samsung-CLX-2160.ppd create mode 100644 PPD/Samsung-CLX-3160.ppd create mode 100644 PPD/Samsung-CLX-3175.ppd create mode 100644 PPD/Samsung-CLX-3185.ppd create mode 100644 PPD/Xerox-Phaser_3010.ppd create mode 100644 PPD/Xerox-Phaser_3040.ppd create mode 100644 PPD/Xerox-Phaser_6110.ppd create mode 100644 PPD/Xerox-Phaser_6115MFP.ppd create mode 100644 PPD/Xerox-Phaser_6121MFP.ppd create mode 100644 PPD/Xerox-WorkCentre_3045.ppd create mode 100644 PPD/Xerox-WorkCentre_6015.ppd create mode 100644 README create mode 100644 README.in create mode 100644 align.ps create mode 100644 arm2hpdl.1in create mode 100644 arm2hpdl.c create mode 100644 command2foo2lava-pjl.c create mode 100644 crd/qpdl/black-text.ps create mode 100644 crd/zjs/2300w-1200@150-l250-kx,ucr100,0-per.crd create mode 100644 crd/zjs/2300w-1200@150-l250-kx,ucr100,50-per.crd create mode 100644 crd/zjs/2300w-1200@150-l250-kx,ucr100,75-per.crd create mode 100644 crd/zjs/2300w-1200@150-l250-kx,ucr125,75-per.crd create mode 100644 crd/zjs/kh.crd create mode 100644 crd/zjs/kx.crd create mode 100644 crd/zjs/prolog.ps create mode 100644 crd/zjs/screen1200.ps create mode 100644 crd/zjs/screen2400.ps create mode 100644 cups.h create mode 100644 ddst.h create mode 100644 ddstdecode.1in create mode 100644 ddstdecode.c create mode 100644 foo2ddst-wrapper.1in create mode 100755 foo2ddst-wrapper.in create mode 100644 foo2ddst.1in create mode 100644 foo2ddst.c create mode 100644 foo2hbpl2-wrapper.1in create mode 100755 foo2hbpl2-wrapper.in create mode 100644 foo2hbpl2.1in create mode 100644 foo2hbpl2.c create mode 100644 foo2hiperc-wrapper.1in create mode 100755 foo2hiperc-wrapper.in create mode 100644 foo2hiperc.1in create mode 100644 foo2hiperc.c create mode 100644 foo2hp.1in create mode 100644 foo2hp.c create mode 100644 foo2hp2600-wrapper.1in create mode 100755 foo2hp2600-wrapper.in create mode 100644 foo2lava-wrapper.1in create mode 100755 foo2lava-wrapper.in create mode 100644 foo2lava.1in create mode 100644 foo2lava.c create mode 100644 foo2oak-wrapper.1in create mode 100755 foo2oak-wrapper.in create mode 100644 foo2oak.1in create mode 100644 foo2oak.c create mode 100644 foo2qpdl-wrapper.1in create mode 100755 foo2qpdl-wrapper.in create mode 100644 foo2qpdl.1in create mode 100644 foo2qpdl.c create mode 100644 foo2slx-wrapper.1in create mode 100755 foo2slx-wrapper.in create mode 100644 foo2slx.1in create mode 100644 foo2slx.c create mode 100644 foo2xqx-wrapper.1in create mode 100755 foo2xqx-wrapper.in create mode 100644 foo2xqx.1in create mode 100644 foo2xqx.c create mode 100644 foo2zjs-pstops.1in create mode 100755 foo2zjs-pstops.sh create mode 100644 foo2zjs-wrapper.1in create mode 100755 foo2zjs-wrapper.in create mode 100644 foo2zjs.1in create mode 100644 foo2zjs.c create mode 100644 foomatic-db/driver/foo2ddst.xml create mode 100644 foomatic-db/driver/foo2hbpl2.xml create mode 100644 foomatic-db/driver/foo2hiperc-z1.xml create mode 100644 foomatic-db/driver/foo2hiperc.xml create mode 100644 foomatic-db/driver/foo2hp.xml create mode 100644 foomatic-db/driver/foo2lava.xml create mode 100644 foomatic-db/driver/foo2oak-z1.xml create mode 100644 foomatic-db/driver/foo2oak.xml create mode 100644 foomatic-db/driver/foo2qpdl.xml create mode 100644 foomatic-db/driver/foo2slx.xml create mode 100644 foomatic-db/driver/foo2xqx.xml create mode 100644 foomatic-db/driver/foo2zjs-z1.xml create mode 100644 foomatic-db/driver/foo2zjs-z2.xml create mode 100644 foomatic-db/driver/foo2zjs-z3.xml create mode 100644 foomatic-db/driver/foo2zjs.xml create mode 100644 foomatic-db/opt/foo2ddst-InputSlot.xml create mode 100644 foomatic-db/opt/foo2ddst-MediaType.xml create mode 100644 foomatic-db/opt/foo2ddst-PageSize.xml create mode 100644 foomatic-db/opt/foo2ddst-Resolution.xml create mode 100644 foomatic-db/opt/foo2hbpl2-ColorMode.xml create mode 100644 foomatic-db/opt/foo2hbpl2-ICM.xml create mode 100644 foomatic-db/opt/foo2hbpl2-MediaType.xml create mode 100644 foomatic-db/opt/foo2hbpl2-PageSize.xml create mode 100644 foomatic-db/opt/foo2hbpl2-Resolution.xml create mode 100644 foomatic-db/opt/foo2hiperc-ColorMode.xml create mode 100644 foomatic-db/opt/foo2hiperc-Compression.xml create mode 100644 foomatic-db/opt/foo2hiperc-Duplex.xml create mode 100644 foomatic-db/opt/foo2hiperc-ICM.xml create mode 100644 foomatic-db/opt/foo2hiperc-InputSlot.xml create mode 100644 foomatic-db/opt/foo2hiperc-MediaType.xml create mode 100644 foomatic-db/opt/foo2hiperc-PageSize.xml create mode 100644 foomatic-db/opt/foo2hiperc-Resolution.xml create mode 100644 foomatic-db/opt/foo2hp-AlignC.xml create mode 100644 foomatic-db/opt/foo2hp-AlignM.xml create mode 100644 foomatic-db/opt/foo2hp-AlignY.xml create mode 100644 foomatic-db/opt/foo2hp-BitsPerPlane.xml create mode 100644 foomatic-db/opt/foo2hp-ColorMode.xml create mode 100644 foomatic-db/opt/foo2hp-Duplex.xml create mode 100644 foomatic-db/opt/foo2hp-ICM.xml create mode 100644 foomatic-db/opt/foo2hp-InputSlot.xml create mode 100644 foomatic-db/opt/foo2hp-MediaType.xml create mode 100644 foomatic-db/opt/foo2hp-PrinterType.xml create mode 100644 foomatic-db/opt/foo2lava-ColorMode.xml create mode 100644 foomatic-db/opt/foo2lava-Duplex.xml create mode 100644 foomatic-db/opt/foo2lava-ICM.xml create mode 100644 foomatic-db/opt/foo2lava-InputSlot.xml create mode 100644 foomatic-db/opt/foo2lava-MediaType.xml create mode 100644 foomatic-db/opt/foo2lava-PageSize.xml create mode 100644 foomatic-db/opt/foo2lava-PrinterType.xml create mode 100644 foomatic-db/opt/foo2lava-Resolution.xml create mode 100644 foomatic-db/opt/foo2oak-BitsPerPlane.xml create mode 100644 foomatic-db/opt/foo2oak-ColorMode.xml create mode 100644 foomatic-db/opt/foo2oak-ICM.xml create mode 100644 foomatic-db/opt/foo2oak-InputSlot.xml create mode 100644 foomatic-db/opt/foo2oak-MediaType.xml create mode 100644 foomatic-db/opt/foo2oak-z1-Duplex.xml create mode 100644 foomatic-db/opt/foo2oak-z1-InputSlot.xml create mode 100644 foomatic-db/opt/foo2oak-z1-MediaType.xml create mode 100644 foomatic-db/opt/foo2oak-z1-PageSize.xml create mode 100644 foomatic-db/opt/foo2qpdl-ColorAdjustB.xml create mode 100644 foomatic-db/opt/foo2qpdl-ColorAdjustC.xml create mode 100644 foomatic-db/opt/foo2qpdl-ColorAdjustCR.xml create mode 100644 foomatic-db/opt/foo2qpdl-ColorAdjustMG.xml create mode 100644 foomatic-db/opt/foo2qpdl-ColorAdjustS.xml create mode 100644 foomatic-db/opt/foo2qpdl-ColorAdjustYB.xml create mode 100644 foomatic-db/opt/foo2qpdl-ColorMode.xml create mode 100644 foomatic-db/opt/foo2qpdl-Duplex.xml create mode 100644 foomatic-db/opt/foo2qpdl-ICM.xml create mode 100644 foomatic-db/opt/foo2qpdl-InputSlot.xml create mode 100644 foomatic-db/opt/foo2qpdl-MediaType.xml create mode 100644 foomatic-db/opt/foo2qpdl-PageSize.xml create mode 100644 foomatic-db/opt/foo2qpdl-PrinterType.xml create mode 100644 foomatic-db/opt/foo2qpdl-Resolution.xml create mode 100644 foomatic-db/opt/foo2slx-ColorMode.xml create mode 100644 foomatic-db/opt/foo2slx-ICM.xml create mode 100644 foomatic-db/opt/foo2slx-InputSlot.xml create mode 100644 foomatic-db/opt/foo2slx-MediaType.xml create mode 100644 foomatic-db/opt/foo2slx-PageSize.xml create mode 100644 foomatic-db/opt/foo2slx-Resolution.xml create mode 100644 foomatic-db/opt/foo2xqx-Density.xml create mode 100644 foomatic-db/opt/foo2xqx-Duplex.xml create mode 100644 foomatic-db/opt/foo2xqx-InputSlot.xml create mode 100644 foomatic-db/opt/foo2xqx-MediaType.xml create mode 100644 foomatic-db/opt/foo2xqx-Resolution.xml create mode 100644 foomatic-db/opt/foo2xxx-Copies.xml create mode 100644 foomatic-db/opt/foo2xxx-Halftone.xml create mode 100644 foomatic-db/opt/foo2xxx-Nup.xml create mode 100644 foomatic-db/opt/foo2xxx-NupOrient.xml create mode 100644 foomatic-db/opt/foo2xxx-Quality.xml create mode 100644 foomatic-db/opt/foo2zjs-ColorMode.xml create mode 100644 foomatic-db/opt/foo2zjs-Duplex.xml create mode 100644 foomatic-db/opt/foo2zjs-ICM.xml create mode 100644 foomatic-db/opt/foo2zjs-InputSlot.xml create mode 100644 foomatic-db/opt/foo2zjs-Intent.xml create mode 100644 foomatic-db/opt/foo2zjs-MediaType.xml create mode 100644 foomatic-db/opt/foo2zjs-PageSize.xml create mode 100644 foomatic-db/opt/foo2zjs-PrinterType.xml create mode 100644 foomatic-db/opt/foo2zjs-Resolution.xml create mode 100644 foomatic-db/opt/foo2zjs-z1-MediaType.xml create mode 100644 foomatic-db/opt/foo2zjs-z1-PageSize.xml create mode 100644 foomatic-db/opt/foo2zjs-z12-Density.xml create mode 100644 foomatic-db/opt/foo2zjs-z2-MediaType.xml create mode 100644 foomatic-db/opt/foo2zjs-z2-PageSize.xml create mode 100644 foomatic-db/opt/foo2zjs-z3-MediaType.xml create mode 100644 foomatic-db/opt/foo2zjs-z3-PageSize.xml create mode 100644 foomatic-db/printer/Dell-1355.xml create mode 100644 foomatic-db/printer/Dell-C1765.xml create mode 100644 foomatic-db/printer/Epson-AcuLaser_CX17NF.xml create mode 100644 foomatic-db/printer/Epson-AcuLaser_M1400.xml create mode 100644 foomatic-db/printer/Fuji_Xerox-DocuPrint_CM205.xml create mode 100644 foomatic-db/printer/Fuji_Xerox-DocuPrint_CM215.xml create mode 100644 foomatic-db/printer/Fuji_Xerox-DocuPrint_M215.xml create mode 100644 foomatic-db/printer/Fuji_Xerox-DocuPrint_P205.xml create mode 100644 foomatic-db/printer/Generic-OAKT_Printer.xml create mode 100644 foomatic-db/printer/Generic-ZjStream_Printer.xml create mode 100644 foomatic-db/printer/HP-Color_LaserJet_1500.xml create mode 100644 foomatic-db/printer/HP-Color_LaserJet_1600.xml create mode 100644 foomatic-db/printer/HP-Color_LaserJet_2600n.xml create mode 100644 foomatic-db/printer/HP-Color_LaserJet_CP1215.xml create mode 100644 foomatic-db/printer/HP-LaserJet_1000.xml create mode 100644 foomatic-db/printer/HP-LaserJet_1005.xml create mode 100644 foomatic-db/printer/HP-LaserJet_1018.xml create mode 100644 foomatic-db/printer/HP-LaserJet_1020.xml create mode 100644 foomatic-db/printer/HP-LaserJet_1022.xml create mode 100644 foomatic-db/printer/HP-LaserJet_1022n.xml create mode 100644 foomatic-db/printer/HP-LaserJet_1022nw.xml create mode 100644 foomatic-db/printer/HP-LaserJet_M1005_MFP.xml create mode 100644 foomatic-db/printer/HP-LaserJet_M1120_MFP.xml create mode 100644 foomatic-db/printer/HP-LaserJet_M1319_MFP.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P1005.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P1006.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P1007.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P1008.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P1505.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P1505n.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P2014.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P2014n.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P2035.xml create mode 100644 foomatic-db/printer/HP-LaserJet_P2035n.xml create mode 100644 foomatic-db/printer/HP-LaserJet_Pro_CP1025nw.xml create mode 100644 foomatic-db/printer/HP-LaserJet_Pro_M1212nf_MFP.xml create mode 100644 foomatic-db/printer/HP-LaserJet_Pro_P1102.xml create mode 100644 foomatic-db/printer/HP-LaserJet_Pro_P1102w.xml create mode 100644 foomatic-db/printer/HP-LaserJet_Pro_P1566.xml create mode 100644 foomatic-db/printer/HP-LaserJet_Pro_P1606dn.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_1600W.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_1680MF.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_1690MF.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_2430_DL.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_2480_MF.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_2490_MF.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_2530_DL.xml create mode 100644 foomatic-db/printer/KONICA_MINOLTA-magicolor_4690MF.xml create mode 100644 foomatic-db/printer/Kyocera-KM-1635.xml create mode 100644 foomatic-db/printer/Kyocera-KM-2035.xml create mode 100644 foomatic-db/printer/Lexmark-C500.xml create mode 100644 foomatic-db/printer/Minolta-Color_PageWorks_Pro_L.xml create mode 100644 foomatic-db/printer/Minolta-magicolor_2200_DL.xml create mode 100644 foomatic-db/printer/Minolta-magicolor_2300_DL.xml create mode 100644 foomatic-db/printer/Minolta-magicolor_2430_DL.xml create mode 100644 foomatic-db/printer/Oki-C110.xml create mode 100644 foomatic-db/printer/Oki-C301dn.xml create mode 100644 foomatic-db/printer/Oki-C3100.xml create mode 100644 foomatic-db/printer/Oki-C310dn.xml create mode 100644 foomatic-db/printer/Oki-C3200.xml create mode 100644 foomatic-db/printer/Oki-C3300.xml create mode 100644 foomatic-db/printer/Oki-C3400.xml create mode 100644 foomatic-db/printer/Oki-C3530_MFP.xml create mode 100644 foomatic-db/printer/Oki-C5100.xml create mode 100644 foomatic-db/printer/Oki-C511dn.xml create mode 100644 foomatic-db/printer/Oki-C5200.xml create mode 100644 foomatic-db/printer/Oki-C5500.xml create mode 100644 foomatic-db/printer/Oki-C5600.xml create mode 100644 foomatic-db/printer/Oki-C5650.xml create mode 100644 foomatic-db/printer/Oki-C5800.xml create mode 100644 foomatic-db/printer/Oki-C810.xml create mode 100644 foomatic-db/printer/Olivetti-d-Color_P160W.xml create mode 100644 foomatic-db/printer/Ricoh-SP_112.xml create mode 100644 foomatic-db/printer/Ricoh-SP_201Nw.xml create mode 100644 foomatic-db/printer/Samsung-CLP-300.xml create mode 100644 foomatic-db/printer/Samsung-CLP-310.xml create mode 100644 foomatic-db/printer/Samsung-CLP-315.xml create mode 100644 foomatic-db/printer/Samsung-CLP-325.xml create mode 100644 foomatic-db/printer/Samsung-CLP-365.xml create mode 100644 foomatic-db/printer/Samsung-CLP-600.xml create mode 100644 foomatic-db/printer/Samsung-CLP-610.xml create mode 100644 foomatic-db/printer/Samsung-CLP-620.xml create mode 100644 foomatic-db/printer/Samsung-CLX-2160.xml create mode 100644 foomatic-db/printer/Samsung-CLX-3160.xml create mode 100644 foomatic-db/printer/Samsung-CLX-3175.xml create mode 100644 foomatic-db/printer/Samsung-CLX-3185.xml create mode 100644 foomatic-db/printer/Xerox-Phaser_3010.xml create mode 100644 foomatic-db/printer/Xerox-Phaser_3040.xml create mode 100644 foomatic-db/printer/Xerox-Phaser_6110.xml create mode 100644 foomatic-db/printer/Xerox-Phaser_6115MFP.xml create mode 100644 foomatic-db/printer/Xerox-Phaser_6121MFP.xml create mode 100644 foomatic-db/printer/Xerox-WorkCentre_3045.xml create mode 100644 foomatic-db/printer/Xerox-WorkCentre_6015.xml create mode 100755 foomatic-test create mode 100755 freebsd-install create mode 100644 gamma-lookup.ps create mode 100644 gamma.ps create mode 100755 getweb.in create mode 100644 gipddecode.1in create mode 100644 gipddecode.c create mode 100644 hbpl.h create mode 100644 hbpldecode.1in create mode 100644 hbpldecode.c create mode 100644 hiperc.h create mode 100644 hipercdecode.1in create mode 100644 hipercdecode.c create mode 100755 hplj1000 create mode 100644 hplj1020.desktop create mode 100644 hplj1020_icon.gif create mode 100644 hplj1020_icon.png create mode 100644 hplj10xx.conf create mode 100644 hplj10xx.rules create mode 100644 hplj10xx.rules.old create mode 100755 hplj10xx_gui.tcl create mode 100644 icc2ps/AUTHORS create mode 100644 icc2ps/COPYING create mode 100644 icc2ps/Makefile create mode 100644 icc2ps/README create mode 100644 icc2ps/README.foo2zjs create mode 100644 icc2ps/cmscam02.c create mode 100644 icc2ps/cmscam97.c create mode 100644 icc2ps/cmscgats.c create mode 100644 icc2ps/cmscnvrt.c create mode 100644 icc2ps/cmserr.c create mode 100644 icc2ps/cmsgamma.c create mode 100644 icc2ps/cmsgmt.c create mode 100644 icc2ps/cmsintrp.c create mode 100644 icc2ps/cmsio0.c create mode 100644 icc2ps/cmsio1.c create mode 100644 icc2ps/cmslut.c create mode 100644 icc2ps/cmsmatsh.c create mode 100644 icc2ps/cmsmtrx.c create mode 100644 icc2ps/cmsnamed.c create mode 100644 icc2ps/cmspack.c create mode 100644 icc2ps/cmspcs.c create mode 100644 icc2ps/cmsps2.c create mode 100644 icc2ps/cmssamp.c create mode 100644 icc2ps/cmsvirt.c create mode 100644 icc2ps/cmswtpnt.c create mode 100644 icc2ps/cmsxform.c create mode 100644 icc2ps/foo2zjs-icc2ps.1in create mode 100644 icc2ps/icc2ps.c create mode 100644 icc2ps/icc34.h create mode 100644 icc2ps/lcms.h create mode 100644 icc2ps/xgetopt.c create mode 100755 includer-man create mode 100644 jbig.c create mode 100644 jbig.h create mode 100644 jbig_ar.c create mode 100644 jbig_ar.h create mode 100644 lavadecode.1in create mode 100644 lavadecode.c create mode 100644 macros.man create mode 100755 modify-ppd create mode 100755 msexpand create mode 100755 myftpput create mode 100644 oak.h create mode 100644 oakdecode.1in create mode 100644 oakdecode.c create mode 100644 opldecode.1in create mode 100644 opldecode.c create mode 100644 osx-hotplug/Makefile create mode 100644 osx-hotplug/local.localhost.startup.plist create mode 100644 osx-hotplug/osx-hplj-hotplug.1in create mode 100644 osx-hotplug/osx-hplj-hotplug.m create mode 100755 ppd-adjust create mode 100644 printer-profile.1in create mode 100755 printer-profile.sh create mode 100644 qpdl.h create mode 100644 qpdldecode.1in create mode 100644 qpdldecode.c create mode 100644 regress.txt create mode 100644 slx.h create mode 100644 slxdecode.1in create mode 100644 slxdecode.c create mode 100644 testpage.ps create mode 100644 usb_printerid.1in create mode 100644 usb_printerid.c create mode 100644 xqx.h create mode 100644 xqxdecode.1in create mode 100644 xqxdecode.c create mode 100644 zjs.h create mode 100644 zjsdecode.1in create mode 100644 zjsdecode.c diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..6a1b8dc --- /dev/null +++ b/COPYING @@ -0,0 +1,414 @@ +Copyright HP... + sihp1000.img (2001) + sihp1005.img (2002) + sihp1018.img (2005) + sihp1020.img (2005) + sihpP1005.img (2009) + sihpP1006.img (2009) + sihpP1505.img (2009) + hpclj2500rgb.icm (2002) + hpclj2600n-0.icm (2003) 3700 + +Copyright Konica Minolta... + CPWL12W.icm (1998) + CPWL24W.icm (1998) + CPWL6W.icm (1998) + DL2200RGB.icm (1999) + DL2312.icm (2001) + DL2324.icm (2001) + km2430_0.icm (2003) + km2430_1.icm (2003) + km2430_2.icm (2003) + km2530_0.icm (2003) + km2530_1.icm (2003) + km2530_2.icm (2003) + +Copyright Lexmark... + lexRPCA200.icm (2006) + +Copyright Oki Data Corporation... + OK3200L1.icm (2005) + OK3200L2.icm (2005) + C3400-L1-BIN-ICC_0603150.icm (2006) + C3400-L2-BIN-ICC_0604110.icm (2006) + OK5600L1.icm (2005) + OK5600L2.icm (2005) + OK5600L3.icm (2005) + OKC310H1.icm (2010) + OKC310H2.icm (2010) + OKC310H3.icm (2010) + OKC301H1.icm (2012) + OKC301H2.icm (2012) + OKC301H3.icm (2012) + OKC511H1.icm (2012) + OKC511H2.icm (2012) + OKC511H3.icm (2012) + +Copyright Rick Richardson. All Rights Reserved. + hpclj2600n-1.icm (2006) + samclp300-0.icm (2007) + km2530-jconner-d50.icm (2007) + hp1215-argyll-0.icm (2008) + samclp315-argyll-0.icm (2009) + km-1600-rgb-392-bpp1.icm (2009) + hp-cp1025-rgb-392-bpp1.icm (2010) + +Copyright Samsung... + CLP-300*cms* (2006) + CLP-600*cms* (2006) + +PATENTS + Markus Kuhn writes: + + "JBIG1 NOW PATENT FREE + + United States Patent 5,404,140, the last of the JBIG1 patents, expired + today (04/04/2012). Therefore, from today, using JBIG-KIT no longer + requires any patent licence anywhere on the planet. + + See http://www.lightbluetouchpaper.org/2012/04/04/one-line-software-patent/ + for a few thoughts on this curious patent, which covers only a single, + simple "if" statement in the encoder and decoder." + +Everything else is... +----------------------------------------------------------------------------- + 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 + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..a15626a --- /dev/null +++ b/ChangeLog @@ -0,0 +1,1857 @@ +2017-03-20 Rick Richardson + * Add ddstdecode, for decoding some Ricoh printers. + +2016-10-21 Rick Richardson + * Makefile: install-hotplug-prog + Add /lib/systemd/systemd-udevd to the list for Ubuntu 16. + +2016-09-02 Rick Richardson + * New Printer: Xerox Phaser 3040 using the foo2hbpl2 driver. + +2016-08-30 Rick Richardson + * New Printer: Xerox Phaser 3010 using the foo2hbpl2 driver. + +2016-03-13 Rick Richardson + * icc2ps/lcms.h: USE_CUSTOM_SWAB defined. + +2015-10-24 Rick Richardson + * foomatic-db/printer/Epson-AcuLaser_CX17NF.xml: + Change margins on Epson AcuLaser CX17NF. + +2015-10-11 Rick Richardson + * New Printer: Epson AcuLaser CX17NF using the foo2hbpl2 driver. + +2015-07-04 pavel.shvagirev + * Modify: hplj10XX to not call us twice on Ubuntu 14. + +2015-05-11 Rick Richardson + * Bug in foomatic-db/printer/Xerox-Phaser_6115MFP.xml . Should use + foo2lava driver. Thanks to user "ophers". + +2015-02-11 Rick Richardson + * New Printer: Oki C511 using foo2hiperc. + +2014-12-21 Rick Richardson + * osx-hotplug: make it work with OS X 10.10 + +2014-12-04 Rick Richardson + * make cups: add "Sandboxing Relaxed" to cups-files.conf iff cups >= 2 + +2014-09-25 Rick Richardson + * foo2hblp2, foo2hblp2-wrapper, foomatic et al: + Add paper size A5. + * foo2hblp2 foomatic db entries: + Changed resolution to 600x600, 1200x600, and 1200x1200. + Note: need to recreate the printers if you want more choices! + +2014-05-19 Rick Richardson + * HP CLJ CP1215: Adjust margins: *HWMargins: 18 14.40 18 14 + +2014-05-04 Rick Richardson + * foo2hbpl2-wrapper: Change PAPER=21 to PAPER=0 for custom page sizes. + +2014-04-17 Rick Richardson + * New Printer: Fuji Xerox DocuPrint CM215 MFP using the foo2hbpl2 + driver. + +2014-04-08 Rick Richardson + * Upgrade to JBIGKIT 2.1 + +2014-04-01 Rick Richardson + * foo2hbpl2 foomatic-db files and PPDs: + Bug with default PageSize. + PLEASE delete and recreate the foo2hbpl2 printers. + +2014-03-22 Rick Richardson + * hbpldecode: another redundancy from Dave Coffin + +2014-03-18 Rick Richardson + * hbpldecode: More envelope sizes. + +2014-03-17 Rick Richardson + * foo2hbpl2.c: Bug, was using A4(1) instead of letter(4) by default + * hbpldecode: Print out paper codes. + +2014-03-15 Rick Richardson + * hbpldecode: More changes from Dave. Still gets + Segmentation fault (core dumped) + * hbpldecode: Changed unsigned to int in 2 places. Works good!!! + +2014-03-13 Rick Richardson + * hbpldecode: Bug with no -d/-r. + +2014-03-13 Rick Richardson + * hbpldecode: Changes to pick apart version 1 from + Dave Coffin + * I get: + Decoding page 1 to page-01.ppm ... + Segmentation fault (core dumped) + +2014-03-02 Rick Richardson + * New Printer: Fuji Xerox DocuPrint M215 MFP using the foo2hbpl2 driver. + +2014-02-09 Rick Richardson + * New Printer: Xerox WorkCentre 3045 MFP using the foo2hbpl2 driver. + +2014-01-26 Rick Richardson + * foo2qpdl et al: with -z3 (e.g. CLP-365) you can adjust + Brightness and Contrast for monochrome prints, and you can adjust + Saturation, Cyan-Red, Magenta-Green, Yellow-Blue Balances. + * foo2hp: somewhere a bug in foomatic (probably 4.x) crept in + so foo2hp-AlignCMYK.xml was only processing one option instead + of three options! Split the file into foo2hp-AlignC.xml, + foo2hp-AlignM.xml, and foo2hp-AlignY.xml. + +2014-01-24 Rick Richardson + * New Printer: Dell C1765nf/nfw using the foo2hbpl2 driver. + +2014-01-08 Rick Richardson + * New Printer: Epson AcuLaser M1400 using the foo2hbpl2 driver. + +2013-12-25 Rick Richardson + * New Printer: HP LaserJet Pro M1212nf MFP using the foo2xqx driver. + +2013-12-01 Rick Richardson + * foo2hiperc: clean up man pages + +2013-11-29 Rick Richardson + * foo2hiperc-wrapper, foomatic and PPD stuff: + add -z1 for Oki C810 so everything will be + rotated 90 degrees EXCEPT paper==a3 OR paper==ledger/tabloid + +2013-11-18 Rick Richardson + * New Printer: Oki C810 with A3 size paper. + +2013-08-13 Rick Richardson + * printer-profile: add Samsung clp-365. + +2013-08-06 Rick Richardson + * New Printer: Fuji Xerox DocuPrint P205 + * foo2hbpl2: Bpp = ResX / ResY + +2013-07-31 Rick Richardson + * foo2zjs-pstops: Fix for FreeBSD + +2013-06-18 Rick Richardson + * Fix typo's in manual pages. + +2013-05-27 Rick Richardson + * foomatic-db/printer/Samsung-CLX-3185.xml: fix typo + + "Please move "FileDevice Yes" on line 139 of /etc/cups/cupsd.conf +2013-03-21 Rick Richardson + * Makefile: change cups target /etc/cups/cups-files.conf if it exists. + "Please move "FileDevice Yes" on line 139 of /etc/cups/cupsd.conf + to the /etc/cups/cups-files.conf file; this will become an error + in a future release." + +2013-03-06 Rick Richardson + * cleanup on foo2hblp2. + +2013-03-03 Rick Richardson + * printer-profile: add dell 1355. + * foo2hbpl2: merge in changes from Peter Korf + * hbpldecode: swap yellow and cyan + * New Printers: Fuji Xerox DocuPrint CM205 + * hbpldecode: implement -d option + +2013-03-02 Rick Richardson + * foo2hbpl2 et al: Added manual pages. + * foo2hbpl2 et al: added new page sizes for envelopes + +2013-03-01 Rick Richardson + * foo2hbpl2, foo2hbpl2-wrapper, foomatic and PPD stuff: Added + * New Printers: Dell 1355 and Xerox WorkCentre 6015 + - pre-alpha quality !!!!!! + * merge in changes from Peter Korf + +2013-02-20 Rick Richardson + * install-hotplug: Fedora 18 changed "/usr/lib/udev/udevd" + to "/usr/lib/systemd/systemd-udevd". + +2013-02-19 Rick Richardson + * hbpldecode: Handle \r\n in the PCL stream. + * hbpldecode: Update for HBPL version 2 + +2013-01-22 Rick Richardson + * New Printer: Samsung CLX-3185, CLX-3185FW + +2013-01-14 Rick Richardson + * hplj10xx_gui.tcl: Bug: add "replace" parm in "old" + +2013-01-13 Rick Richardson + * hplj1000: add a sleep 3 + +2013-01-04 Rick Richardson + * New Printer: Okidata C301dn + +2013-01-02 Rick Richardson + * New Printer: Samsung CLP-365W + +2012-09-09 Rick Richardson + * Makefile: Add DESTDIR to CUPS_SERVERBIN + +2012-06-01 Rick Richardson + * Makefile, hplj1000: remove /lib/udev/rules.d/86-hpmud_plugin.rules + Same thing as 2010-12-10, different path! + +2012-05-10 Rick Richardson + * Makefile: gratiutous movement of udevd in F17 + +2012-05-04 Rick Richardson + * hplj1000: put an "exit" in + +2012-02-23 Rick Richardson + * foo2zjs-pstops: put gs9 code in, but no CMYK color profiles (yet). + +2011-12-27 Rick Richardson + * Makefile: install-ppd for Mac + +2011-12-26 Rick Richardson + * Makefile: make cups FileDevice Yes + +2011-12-02 Rick Richardson + * Makefile: ignore warning from missing cups-config + * Makefile: "make cups" for Fedora 16 + +2011-11-23 Rick Richardson + * Makefile: command2foo2lava-pjl won't work with cups < 1.4 + * foo2zjs-pstops.sh: also do %%Page: (1) 1 + +2011-11-12 Rick Richardson + * foo2zjs: there is a bug in HP printers p1102 (-z2) and + cp1025 (-z3). Workaround is to set MX=0. + * foo2zjs-wrapper: fix initial offset for -z2 and -z3 printers. + +2011-11-08 Rick Richardson + * foo2oak: don't error out if padlen == 0 + +2011-11-05 Rick Richardson + * Makefile: change "make cups" target to also add a "FileDev Yes" line + to /etc/cups/cupsd.conf. Because cups 1.4.6+ does not like + the usb:/dev/usb/lp0 syntax, but file:/dev/usb/lp0 works. + +2011-10-23 Rick Richardson + * updated the C110 ieee1284 string. + +2011-10-23 Rick Richardson + * foo2zjs-wrapper: put gs9 code in, but no CMYK color profiles (yet). + +2011-10-20 Rick Richardson + * hplj1000: Reverse the checks for Ubuntu 11.10. + +2011-10-14 Rick Richardson + * foomatic-db, PPDs: New printer "KONICA_MINOLTA-magicolor_2430" + like Minolta-magicolor_2430 except for Manufacturer. + +2011-10-14 Till Kamppeeter + * hplj1000: make it work with usblp and CUPS (libusb) + +2011-10-10 Rick Richardson + * lavadecode: print the compression (JBIG or unknown) + +2011-10-09 Rick Richardson + * lavadecode: adjust for magicolor 3730 + +2011-09-01 Rick Richardson + * Updated: printer-profile script to Argyll_V1.3.4 + +2011-08-10 Rick Richardson + * foomatic-db, PPDs: Bug with Samsung CLP-325, CLP-325W. + PLEASE delete and recreate CLP-325 printers. + +2011-08-07 Rick Richardson + * foo2oak-wrapper: KM-1635/2035: don't rotate on A3 or ledger size paper + +2011-07-31 Rick Richardson + * Makefile: all-test checks for dc -V and gsed (OSX only). + +2011-07-30 Rick Richardson + * foo2zjs-pstops: Use gsed instead of sed on Mac OSX + +2011-07-22 Rick Richardson + * osx-hotplug/osx-hplj-hotplug.m: cleanup for xcode 4.x + +2011-07-17 Rick Richardson + * opt/foo2lava-ColorMode.xml, PPD's: Removed -C1 -C2 -C3 opts; + they are for magicolor 2300 DL only. + +2011-06-09 Rick Richardson + * Cleanup: remove "unused-but-set-variable". + +2011-06-02 Rick Richardson + * New program: hbpldecode for decoding Fuji-Zerox cp105b + and Dell 1250c. + +2011-05-25 Rick Richardson + * make install on Fedora 15: + Use "rpm -e --nodeps system-config-printer-udev" instead of "yum". + +2011-03-08 Rick Richardson + * hplj10xx.conf: For FreeBSD 8, s/zjx/xqx/ for HP LJ P???? printers + Ref: Yury G. Kudryashov + +2011-02-10 Rick Richardson + * Makefile: fix perms on PPD files. + +2011-01-31 Rick Richardson + * New Printer: Oki C310dn. + +2011-01-23 Rick Richardson + * osx-hotplug/osx-hplj-hotplug.1in: Man page + +2011-01-21 Rick Richardson + * osx-hotplug/osx-hplj-hotplug.m: + If FWVER is present, then no download is needed. + +2011-01-20 Rick Richardson + * Makefile: make install-hotplug for OSX. + +2011-01-19 Rick Richardson + * Change foo2hp2600-wrapper to remove "expr substr ..." and + replace it with "echo ... | sed ..." for OSX (because expr != gexpr) + +2011-01-18 Rick Richardson + * New program: osx-hplj-hotplug + Does hotplug on Mac OSX. Add a line to /etc/rc.local and reboot: + + killall osx-hplj-hotplug; osx-hplj-hotplug \ + >/tmp/osx-hplj-hotplug 2>&1 & +2011-04-15 Rick Richardson + * New Printer: Samsung CLP-325, CLP-325W. + +2011-03-08 Rick Richardson + * hplj10xx.conf: For FreeBSD 8, s/zjx/xqx/ for HP LJ P???? printers + Ref: Yury G. Kudryashov + +2011-02-10 Rick Richardson + * Makefile: fix perms on PPD files. + +2011-01-31 Rick Richardson + * New Printer: Oki C310dn. + +2011-01-23 Rick Richardson + * osx-hotplug/osx-hplj-hotplug.1in: Man page + +2011-01-21 Rick Richardson + * osx-hotplug/osx-hplj-hotplug.m: + If FWVER is present, then no download is needed. + +2011-01-20 Rick Richardson + * Makefile: make install-hotplug for OSX. + +2011-01-19 Rick Richardson + * Change foo2hp2600-wrapper to remove "expr substr ..." and + replace it with "echo ... | sed ..." for OSX (because expr != gexpr) + +2011-01-18 Rick Richardson + * New program: osx-hplj-hotplug + Does hotplug on Mac OSX. Add a line to /etc/rc.local and reboot: + + killall osx-hplj-hotplug; osx-hplj-hotplug \ + >/tmp/osx-hplj-hotplug 2>&1 & + +2011-01-14 Rick Richardson + * foo2*-wrapper, foomatic-db, PPDs: Add Halftone Algoritm. + Standard (QUALITY=1), Accurate Screens (QUALITY=as), + Well Tempered Screens (QUALITY=wts). WTS is the default. + PLEASE delete and recreate ALL printers. + +2011-01-09 Rick Richardson + * foo2*-wrapper: + use QUALITY=1 instead of QUALITY=wts due to a bug in gs (8.71+) + +2011-01-09 Rick Richardson + * foomatic-db, PPDs: Change ICM value for CLX-3175 (comestic) + +2010-12-22 Rick Richardson + * New printers: HP LaserJet 1022n, HP LaserJet 1022nw + * hplj1020.desktop: change Name and Comment + +2010-12-13 Rick Richardson + * foo2zjs.c: with -z3, use BIH width for ZJI_RASTER_X + Tested with a real HP LaserJet Pro CP1025nw printer. + + * ICM for -z3 is done. Do: make; ./getweb 1025; make install + and PLEASE delete and recreate the foo2zjs-z3 printers + +2010-12-12 Rick Richardson + * foo2zjs.c: with -z3, adjust to mod(128) pixels. + +2010-12-10 Rick Richardson + * Makefile, hplj1000 et al: + rm /etc/udev/rules.d/*hpmud*laserjet_{1000,1005,1018, 1020, + p1005,p1006,p1007,p1008,p1505}* + + Needed for Ubuntu 10.04 and greater with the proprietary "hplip" + package installed. + + rm /etc/udev/rules.d/*hpmud_support.rules + + Needed for Fedora 13+ + +2010-12-09 Rick Richardson + * foo2zjs.c, foo2zjs-wrapper.in, zjsdecode, ppd/*, foomatic-db/*: + Add 4x6, 5x8, and 10x15 page size for HP LaserJet Pro CP1025nw + +2010-12-08 Rick Richardson + * foo2zjs.c, foo2zjs-wrapper.in, zjsdecode: + Add -z3 for HP LaserJet Pro CP1025nw + * New Printer: HP LaserJet Pro CP1025nw + ALPHA quality!!! No ICM for color yet!!! + +2010-11-12 Rick Richardson + * New Printer: Olivetti d-Color P160W + +2010-11-02 Rick Richardson + * foo2oak-wrapper: Change default HP CLJ 1500 ICM file. Do: + make; ./getweb 1500; make install + +2010-10-26 Rick Richardson + * foo2*wrapper: Typo in GAMMAFILE + +2010-10-26 József CZOMPÓ + * foo2oak et al: Add tray 2. + * foo2oak.c: make -A and -B compatible with foo2hp, foo2zjs. + +2010-10-16 Rick Richardson + * foo2lava.c: Iff MODE_COLOR and nbie = 1, then it is a mono page. + +2010-10-12 Rick Richardson + * getweb: move dl2300.tar.gz + +2010-08-17 Rick Richardson + * New foo2lava printer: Xerox Phaser 6121MFP (printer only) + +2010-08-09 Rick Richardson + * Makefile: only do command2foo2lava-pjl IFF cups-devel package + is installed + +2010-08-07 Rick Richardson + * foo2qpdl: -z3 resolution + +2010-07-28 Rick Richardson + * Added manual page for foo2zjs-icc2ps. + +2010-07-26 Rick Richardson + * command2foo2lava-pjl.c: switched to use foo2zjsNegateMarkerLevels + +2010-07-25 Rick Richardson + * command2foo2lava-pjl.c: improved formatting + +2010-07-24 Rick Richardson + * foo2*-wrapper: add eval gs.foo for BSD + +2010-07-22 Rick Richardson + * Modify "modify-ppd" file for *cupsSNMPSupplies: False + * Modify: foo2zjs for Duplex and -z2 (HP P1606dn) + +2010-07-20 Rick Richardson + * Reinhold Kainhofer + * New file: command2foo2lava-pjl.c + * New file: modify-ppd + * Change PPD's for Konica Minolta mc1600W, mc1680MF, mc1690MF, + mc2490 MF, mc2530 DL, mc4690MF, and Oki C110 if cups-devel + is installed. + Used for reporting marker (toner) levels via PJL on + foo2lava printers. + * command2foo2lava-pjl.c: Add a sleep(5) for mc2530 DL + * command2foo2lava-pjl.c: Add IMGDRUM, CONSUMETONERCOUNTERFEIT* + * command2foo2lava-pjl.c: Read PPD file for product + +2010-06-20 Rick Richardson + * foo2zjs, foo2zjs-wrapper, foomatic and ppd file: + Add Printer Density. For HP zjs printers. Please remove + and recreate the printers. + +2010-06-19 Rick Richardson + * Add manual page for gipddecode. + * foo2xqx, foo2xqx-wrapper, foomatic and ppd file: + Add Printer Density. For HP xqx printers. Please remove + and recreate the printers. + +2010-06-15 Rick Richardson + * foo2qpdl foomatic-db and PPD files: fix Duplex for clp-6100, clp-610, + clp-620. Manual Duplex is no longer supported. Use Gnome-Manual-Duplex + instead. + + Please delete and recreate the Samsung CLP-6?? printers. + + * New Printer: Oki C110 + +2010-05-28 Rick Richardson + * Split out foo2zjs into: + foo2zjs - Minolta 2200 DL, 2300 DL, HP 1000, HP 1005 + foo2zjs-z1 - HP 1018, 1020, 1022, M1319MFP, P2035 + foo2zjs-z2 - HP Laserjet Pro P1102, P1102w, P1566, P1606dn + + * Add new paper sizes and media types to foo2zjs-z1 and foo2zjs-z2 + A6, 16K *, Postcard and Double Postcard, German Legal (8.5 x 13!) + + * PLEASE delete and recreate the foo2zjs-z1 and foo2zjs-z2 printers!!! + Otherwise, Page Size will be "Letter" even if you set it to A4. + This is a Cups problem (cups-1.4.2-26.fc11.i586). + +2010-05-24 Rick Richardson + * Modify: foo2xxx-{Copies,Nup,NupOrient}.xml: include foo2oak-z1 driver + +2010-05-07 Rick Richardson + * Modify: foo2zjs.c: if Model == MODEL_HP_PRO, blank initial lines + for 0.25". Sheesh!!! + * Modify: foo2zjs-wrapper: -z2 set_clipping 2 + +2010-05-06 Rick Richardson + * Modify: foo2qpdl.c: modolo 256 on custom paper size. + +2010-05-04 Rick Richardson + * Modify: foo2qpdl-wrapper: modolo 256 some papers (i.e. env#10) + +2010-05-02 Rick Richardson + * Modify: hplj10xx_gui.tcl to put in the status + +2010-05-01 Rick Richardson + * Upgrade P1005, P1006, P1505 firmware to 09/16/2009 + +2010-04-29 Rick Richardson + * Modify: hplj10xx_gui.tcl to put in the pagecount + +2010-04-21 Rick Richardson + * New Printers: Oki C5650 + +2010-04-12 Rick Richardson + * New Printers: HP LaserJet Pro P1102, P1102w + * New Printers: HP LaserJet Pro P1566 + * New Printers: HP LaserJet Pro P1606dn + +2010-04-09 Rick Richardson + * hplj10xx.rules: implement old(1.47-) and new(1.48+) rules + +2010-03-29 Rick Richardson + * New Printer: Samsung CLP-620 added to foo2qpdl et al. + +2010-03-26 Rick Richardson + * Makefile: install-hotplug: remove system-config-printer-udev. + +2010-03-11 Rick Richardson + * foo2xqx-wrapper: Add -p257, -p263, -p264 for 16K* paper. + * foomatic-db and .ppd files: Add three 16K papers to foo2xqx driver. + * Makefile: Get rid of Ubuntu 9.*'s + /lib/udev/rules.d/85-hplj10xx.rules + because it does not work! + +2010-03-07 Rick Richardson + * foo2*-wrapper: Bug fix for custom page size. Some versions + of CUPS don't embed the size in the PS file: + %%BeginFeature: *CustomPageSize True + 552.755920410156 765.354370117188 1 0.000000 0.000000 + and only list it in the command line: + foo2zjs-wrapper -pCustom.533x765 + * Fix WARN with cupstestppd PPD/*.ppd: + EnvB5 -> EnvISOB5 + Nup -> NupPages + * Fix FAIL with cupstestppd PPD/*.ppd: + ManualDuplex -> no (replaced by GnomeManualDuplex) + http://sourceforge.net/projects/g-manual-duplex/ + +2010-03-06 Rick Richardson + * New Printers: HP LaserJet P1505n, P2014n, P2035n + +2010-03-02 Rick Richardson + * Updated foo2lava manual pages + * Adjust Makefile so it doesn't do some tests (gs 8.71 is flaky) + +2010-02-26 Rick Richardson + * Added freebsd-install for FreeBSD 8.x + +2010-02-25 Rick Richardson + * Added /etc/devd/hplj10xx.conf for FreeBSD 8.x + +2010-02-07 Rick Richardson + * foo2hp2600-wrapper: add -O to log for debugging. + +2010-01-23 Rick Richardson + * hplj1000 install-usblp: remove bug + +2010-01-06 Rick Richardson + * Updated: printer-profile script to Argyll_V1.1.0_RC4 + +2009-12-03 Rick Richardson + * foo2hiperc.c: C5600: Set Duplex like this: + if (Duplex == DMDUPLEX_OFF) + rec[6] = be32(0); + else + rec[6] = be32( (PageNum & 1) ? 0x100 : 0x200); + * foo2hiperc.c: Don't do EvenPages() when auto-duplex. + +2009-11-12 Rick Richardson + * foo2xqx.c: set PJL ECONOMODE ON/OFF + +2009-11-06 Rick Richardson + * Updated: printer-profile script to Argyll_V1.1.0_RC1 + +2009-10-27 Rick Richardson + * hplj1000: add an exit 0 to install-usblp + +2009-10-25 jkan + * foo2hp.c: add alignment for -b2 + +2009-10-17 Rick Richardson + * clp-310: fix PPD file + +2009-10-14 Rick Richardson + * foo2oak: Fix sprintf bug + +2009-10-13 Rick Richardson + * foo2oak, foo2oak-wrapper: Add short edge + +2009-10-12 Rick Richardson + * foo2oak, foo2oak-wrapper: + Change papercode UNK for KM-1635 + Add OAK_DRIVER record. + Adjust JBG parms + +2009-10-10 Rick Richardson + * foo2oak: Add a DUPLEX record type. + +2009-10-09 Rick Richardson + * foo2oak, foo2oak-wrapper, foomatic, and PPD's: + Add Duplex option for Kyocera Mita KM-1635, KM-2035. + +2009-09-22 Rick Richardson + * foo2hp, foo2hp2600-wrapper, foomatic, and PPD's: + HP LJC CP1215: Add alignment for Cyan, Magenta, or Yellow. + +2009-09-08 Rick Richardson + * For Ubuntu 9.10 Alpha 5: fix Makefile and hplj1000 + to *not* list usblp in /etc/modprobe.d/blacklist* + +2009-06-23 Rick Richardson + * Moved: Minolta-QMS Page Page, 2200 DL, 2300 DL *.icm files + +2009-06-14 Rick Richardson + * New foo2lava printer: + Konica-Minolta magicolor 4690MF + * upgate getweb for the 4690 printer + +2009-06-07 Rick Richardson + * Moved: Minolta-QMS Page Page, 2200 DL, 2300 DL *.icm files + +2009-05-30 Rick Richardson + * Added: Samsung CLP-310 manual pages. + +2009-05-11 Rick Richardson + * On SUSE, /bin/logger instead of /usr/bin/logger + +2009-05-04 Rick Richardson + * Added: Samsung CLP-310 like CLP-315. The case is white! + +2009-04-22 Rick Richardson + * Update: zjsdecode, foo2hp.c: Add ZJI_BITMAP_xxx types. + +2009-04-13 Rick Richardson + * Fix: hplj1000 to protect against /lp* + +2009-03-24 Rick Richardson + * Add: km-1600-rgb-392-bpp1.icm for color correction using + the X-rite ColorMunki and Argyll. + For KONICA MINOLTA 1600W, 1680MF, 1690MF + Delete 1600W, re-download, make, ./getweb 1600w, make install + +2009-03-24 Rick Richardson + * Modify: foo2zjs-icc2ps to "Little CMS" (lcms), v1.18. + $ make regress + [same as 03/01/09] + +2009-03-14 Rick Richardson + * New foo2lava printers: + Konica-Minolta magicolor 1600W + Konica-Minolta magicolor 1680MF + Konica-Minolta magicolor 1690MF + ALPHA QUALITY! PRINTER ONLY! + +2009-03-08 Rick Richardson + * New: printer-profile script using X-Rite ColorMunki and Argyll CMS + +2009-03-08 Rick Richardson + * Updated samclp-315-argyll-0.icm for color correction using + the X-rite ColorMunki and Argyll! + Do: + $ ./getweb 315 + $ su + # make install + +2009-03-07 Rick Richardson + * Clean up fwrite/fread/fscanf warnings on Ubuntu 8.10. + +2009-03-04 Rick Richardson + * zjsdecode: Add bpp=2 when doing -d. Produces a .pgm file. + +2009-03-04 Rick Richardson + * foo2*-wrapper: Add logging of foo2zjs-icc2ps + +2009-03-01 Rick Richardson + * Modify: foo2zjs-icc2ps to "Little CMS" (lcms), v1.18 beta 1. + $ make regress + little cms PostScript converter - v1.5+v1.18beta1+foo2zjs + ca8227261a3b18e10ee7fa720dd90ccb C3400-L1-BIN-ICC_0603150.icm.ps + 91625a11ef859a4c3662379db1ffafd2 C3400-L2-BIN-ICC_0604110.icm.ps + 6dd402051dd3747e40b1a7b1e2e82196 hp1215-argyll-0.icm.ps + 9f104c51f07705599ce874f83c6f8783 hpclj2600n-0.icm.ps + 6f324397fad3c195250ec7a159d293f9 hpclj2600n-1.icm.ps + 96454f21ba7c1ccad1953524670f5f72 km2430_0.icm.ps + 862ca1d836f097ea403ba9f630a5258f km2430_1.icm.ps + 35f478bf58d43db5cc0853caec9a5868 km2430_2.icm.ps + f75cb27671de78d63a81d7be3bff310f km2530_0.icm.ps + a1c0cccd4b898319fc37887a7106466b km2530_1.icm.ps + ab78bcd38fad306ddeda108a43c31c96 km2530_2.icm.ps + 44d45f189f3986eef5b7565159da167e km2530-jconner-d50.icm.ps + 312e49d3deaed093c8b3834487bc7620 lexRPCA2000.icm.ps + e72e37a4f8cb14e36dfe8337b6988aee OK3200L1.icm.ps + 9bab8e1f5a3a78c5e47316941bb4c915 OK3200L2.icm.ps + 1d63e82bae789fc2c5101dbc4077e67c OK5600L1.icm.ps + bd6a812ce413387288d23e4773b80c8b OK5600L2.icm.ps + 8d0d23d861137faf90ab567e2f20afbd OK5600L3.icm.ps + f9d96dc460f49e718ce3a9963e7d7595 samclp300-0.icm.ps + 7014e454afff845627779cda3b28e0c5 samclp315-argyll-0.icm.ps + +2009-02-19 Rick Richardson + * foo2hp: Fix segv when -b2 and -d2 are given. + * foo2hp: Fix PageNum when -b2 is given. + +2009-01-22 Rick Richardson + * New printer: HP LaserJet M1319 MFP. Printer only!! + +2009-01-22 Rick Richardson + * New printer: HP LaserJet P2035 + +2009-01-22 Rick Richardson + * zjsdecode: add -p option for HP LaserJet P2035 + +2009-01-11 Rick Richardson + * foo2oak-wrapper bug fix + +2008-12-31 Rick Richardson + * New printer: Samsung CLX-3175 + +2008-12-29 Rick Richardson + * New printer: Oki C3100 + +2008-12-07 Rick Richardson + * Samsung CLP-315: + - Now use Argyll (samclp-315-argyll-0.icm) for color correction + - make; ./getweb 315; make install + - Delete and recreate Samsung CLP-315 + +2008-12-06 Rick Richardson + * HP CLJ CP1215: + - Now use Argyll (hp1215-argyll-0.icm) for color correction + - make; ./getweb 1215; make install + - Delete and recreate HP Color LaserJet CP1215 + - foo2hp2600-wrapper: implement -z ; 0=1600/2600, 1=1215 + +2008-12-04 Rick Richardson + * foo2zjs-pstops: Fix bug with -w + +2008-10-07 Rick Richardson + * foo2qpdl: bug fix: -z2 (clp-315. clp-610): stripe starts + with 0, not 1. + +2008-09-23 Rick Richardson + * foo2qpdl: bug fix: LONGEDGE does not need to be flipped on CLP-610. + * zjsdecode, gipddecode, slxdecode: fix bug with argc[1] + +2008-09-22 Rick Richardson + * foo2qpdl: Do auto duplex on clp-610 + Delete CLP-610 printer then re-install them (PPD changed) + +2008-09-18 Rick Richardson + * foo2qpdl: Change unknown value (margin?) based on page size. + +2008-09-05 Rick Richardson + * Upgrade to JBIGKIT 2.0 + +2008-07-30 Rick Richardson + * Makefile: rm gipddecode.o on a "make clean". + +2008-07-22 Rick Richardson + * New printer: Samsung CLP-315 + +2008-06-05 Rick Richardson + * New printers: HP LJ P1007 and P1008 + +2008-06-03 Rick Richardson + * Upgrade P1005, P1006, P1505 firmware to 04/15/2008 + +2008-05-23 Rick Richardson + * foomatic-db and PPDs: update ieee string for CP1215 + +2008-05-21 Rick Richardson + * foomatic-db and PPDs: New HP Color LaserJet CP1215 using foo2hp + ALPHA QUALITY, imperfect color correction. + +2008-05-15 Rick Richardson + * foomatic-db and PPDs: New Oki C3530 MFP + +2008-05-01 Rick Richardson + * New Printers: Kyocera Mita KM-1635, KM-2035. + * foomatic-db and PPDs: Kyocera Mita KM-1635, KM-2035. + - PageSize, InputSlot, MediaType + +2008-04-30 Rick Richardson + * foo2oak, foo2oak-wrapper, foo2zjs-pstops: + Implement rotate 90 for Kyocera Mita KM-1635, KM-2035. + * foo2hiperc: fix 600x1200 resolution. + +2008-04-26 Rick Richardson + * foo2lava.c: implement copies. + +2008-04-24 Rick Richardson + * foo2hiperc-wrapper, et al: + Change Input Slot to + auto, tray1, tray2, multi, manual + +2008-04-18 Rick Richardson + * foo2qpdl-wrapper: set clipping to 150x100 for Custom page size. + +2008-04-01 Rick Richardson + * New Printer: Samsung CLP-610 added to foo2qpdl et al. + +2008-03-30 Rick Richardson + * qpdldecode: add new compression mode 0x15 for CLP-610. + +2008-03-24 Rick Richardson + * New printer: HP LaserJet 2014 using foo2xqx. + +2008-03-23 Rick Richardson + * Add: gipddecode.for Granite Image Printer Driver. Used + by Granite Systems, inc. a.k.a Monotype Imaging, e.g. + Dell 1125 MFP, Lexmark X500 + +2008-02-16 Rick Richardson + * Add: manual pages for arm2hpdl, usb_printerid + * Modify: foo2xqx-wrapper to put in WTS. + +2008-02-15 Rick Richardson + * Add: Copies, Nup, NupOrient, Quality to foo2hiperc, foo2slx + foomatic-db and PPD files + +2008-02-07 Rick Richardson + * Add: HP-LaserJet_M1120_MFP using the foo2xqx driver + * Modify: Oki foomatic and PPD entries for C5500/C5600/C5800 + Color Correction + +2008-02-06 Rick Richardson + * Add: C5200 + * Modify: Oki foomatic and PPD entries for C3200/C5100/C5200 + Color Correction + * Modify: Oki foomatic and PPD entries for C3300/C3400 + Color Correction + +2008-02-05 Rick Richardson + * Modify: foo2hiperc. Put out the correct end_doc + * Modify: foo2hiperc. Pad to 256 lines. + +2008-02-02 Rick Richardson + * Modify: foo2hiperc color mode + * Modify: foo2hiperc compessed mode. + +2008-02-01 Rick Richardson + * Modify: foo2hiperc et al. + +2008-01-31 Rick Richardson + * Add: man pages for foo2hiperc. + * Modify: foo2hiperc et al. + +2008-01-30 Rick Richardson + * Add: foo2hiperc et al. Another set of printers added: + Oki C3200n/C3300n/C3400n/C5100n/C5500n + Note: alpha quality, no color correction at all!!! + +2008-01-28 Rick Richardson + * Modify: getweb 2300 + +2008-01-22 Rick Richardson + * Modify: icc2ps to "Little CMS" (lcms), v1.17. + Bugs fixed in icc2ps/cmsio1.c. + +2008-01-22 Rick Richardson + * Modify: icc2ps/cmsio1.c to malloc space for wchar_t right. + +2007-12-27 Rick Richardson + * Modify: foo2*-wrapper to only put in WTS stuff when in COLOR (-c) + Otherwise, gs 8.60/8.61 core dumps with -r1200x600 + +2007-12-19 Rick Richardson + * Modify manual pages for Solaris + * Modify foo2zjs-pstops: remove sed -e "$a" + * Modify foo2oak.c, oakdecode.c for OpenBSD + +2007-12-15 Rick Richardson + * Modify foo2qpdl-InputSlot.xml: Add lower paper tray 2. + +2007-12-13 Rick Richardson + * Modify foo2slx.c: Do manual duplex. + +2007-12-10 Rick Richardson + * Modify foo2slx.c: produce colors in the right order. + +2007-12-10 Rick Richardson + * Modify foo2slx.c: Set ExtraPad to 0. + * Modify foo2slx.c: Use item_int32_write_pad for 0x03, 0x04 + +2007-12-09 Rick Richardson + * Modify foo2*.c: + If called by CUPS, print page accounting stuff to stderr. + Change DEVICE_URL to DEVICE_URI for IsCUPS + This is a misfeature of CUPS only. + * Modify foo2slx.c: Add pad to SLI_0x03. + * Modify foo2slx-wrapper: GAMMAFILE=default for color + +2007-12-08 Rick Richardson + * Modify foo2slx.c: + SLI_COUNT, 1 (0x1) + SLI_0x0e, 0 (0x0) (was SLI_DMCOLLATE) + +2007-12-07 Rick Richardson + * Modify foo2*-wrapper: change CustomPageSize for Acrobat 8.1.1 rpm. + * Modify foo2*-wrapper: change ghostscript for Acrobat 8.1.1: + "gs ... -" to "gs ... -_" + +2007-11-26 Rick Richardson + * Modify Makefile: + OpenSolaris, Solaris Express Developer Edition 9/07, Solaris 11 (beta) + Make networking (2530 dl, Samsung 300, etc.) printers work. + +2007-11-25 Rick Richardson + * Add printers HP LaserJet P1005/P1006/P1505 to foo2xqx driver. + +2007-11-21 Rick Richardson + * Modify: Makefile install usb_printerid /bin + +2007-11-17 Rick Richardson + * Modify: Makefile uninstall + +2007-11-15 Rick Richardson + * Put in comments RE: /bin/ into hp1000 and Makefile + +2007-11-14 Rick Richardson + * Modify: hplj10xx_gui.tcl to use /sys/... + +2007-11-13 Rick Richardson + * Add: hplj10xx_gui.tcl + Usage: $ wish /usr/share/foo2zjs/hplj10xx_gui.tcl + +2007-11-12 Rick Richardson + * Add: GNOME desktop file: hplj1020.desktop + Applications -> System Tools -> HPLJ 10xx Replaced Paper + invokes: usb_printerid /dev/usb/lp0 + +2007-11-10 Rick Richardson + * Modify: hplj10xx.rules to put -%n in the symlink field + +2007-11-06 Rick Richardson + * Modify: *.1in: Only use specialps with -Tps + * Modify: *.1in: get rid of: + grotty:./foo2lava.1:4269: character above first line discarded + +2007-11-05 Rick Richardson + * Modify: foo2*.c bug with -l, -u + * Modify: opldecode.c,.1 change ro to opl. + +2007-11-01 Rick Richardson + * Add: foo2slx et al. Another printer added: Lexmark C500n + Note: alpha quality!!! + +2007-10-30 Rick Richardson + * Modify: foo2zjs-pstops take out CIEColor + * Modify: zjsdecode, qpdldecode + * Modify: foo2qpdl-wrapper: Add default for -G + +2007-10-26 Rick Richardson + * Put version info in getweb and foo2zjs-pstops + * foo2*-wrapper: Make PREFILTER=tee if -D9 + +2007-10-25 Rick Richardson + * Modify: foo2zjs-pstops put it before "%%Page: 1 1" + +2007-10-24 Rick Richardson + * Modify: foo2zjs-pstops so that CIE + WTS are in the right order. + +2007-10-23 Rick Richardson + * foo2lava ICM: km2530-jconner-d50.icm is the default + Do: + $ ./getweb 2530 + $ sudo make install + again. + +2007-10-22 Rick Richardson + * Add: foo2zjs-pstops: Add PS code for foo2*-wrapper + * Modify foo2*-wrapper: Use WTS with Firefox, et al. + +2007-10-20 Rick Richardson + * foomatic-db/opts/*ICM*, PPD/*: improved + +2007-10-19 Rick Richardson + * Replace sihp1020.img with sihp1020-20050309.img. Was 20041129. + $ ./getweb 1020 + # make install + * Resurrect foo2oak + +2007-10-18 Rick Richardson + * foo2zjs-wrapper: Implement WTS when -C10. + * foo2hp2600-wrapper: Segfault on 64-bit and gs 8.14/8.15. + +2007-10-15 Rick Richardson + * foo2*-wrapper: WTS works with this workaround: + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + So WTS works on 8.54-8.57 AND 8.60-8.61. + * INSTALL: + * Well Tempered Screening (WTS) works with ghostscript 8.54-8.60+. + So if you want BEST COLORS, you'll have to install gs 8.54 or + better if you don't have it. + + $ gs --version + 8.15.2 + + $ wget "http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs860/ghostscript-8.60.tar.gz" + $ tar zxf ghostscript-8.60.tar.gz + $ cd ghostscript-8.60 + $ ./autogen.sh + $ make + $ su OR $ sudo cp bin/gs /usr/bin/gs.foo + # cp bin/gs /usr/bin/gs.foo + +2007-10-12 Rick Richardson + * 11-hplj10xx.rules: Cleanup + +2007-10-11 Rick Richardson + * foo2lava-wrapper, foo2hp2600-wrapper, foo2qpdl-wrapper: + Avoid WTS if gs is 8.60/8.61. + +2007-10-10 Rick Richardson + * Add: Well Tempered Screening (WTS) to foo2lava-wrapper + # CUPS also does grief by adding its own PS code to the input file. + # We take care of that with the sed command. Thus, Well Tempered + # Screening (WTS) now works! + +2007-09-19 Rick Richardson + * foo2lava: If 2480MF then switch CYAN/YELLOW. + * foo2lava: If 2530DL, output DOTS + +2007-09-18 Rick Richardson + * Modify: Changes to Makefile to get it to build on OpenBSD. + * foo2lava: If 2480MF then don't output DOTS. + +2007-09-01 Rick Richardson + * foomatic: Eliminate 600x600 from 2200 DL. + +2007-08-22 Rick Richardson + * Add: foo2qpdl et al for Samsung CLX-2160. + +2007-07-18 Rick Richardson + * foo2lava: Puts DOTS/WHITEDOTS immediately after JBIG, for 2490. + +2007-07-15 Rick Richardson + * foo2hp foo2lava foo2oak foo2qpdl foo2xqx foo2zjs: + If called by CUPS, print page accounting stuff to stderr. + This is a misfeature of CUPS only. + +2007-07-12 Rick Richardson + * foo2{zjs,lava,xqx}-wrapper: Bug: color && res=600 + * lavadecode: Bug: -d decfile + +2007-07-01 Rick Richardson + * KonicaMinolta-magicolor_2530_DL.xml and .ppd: + Change IEEE-1284 string. + +2007-06-29 Rick Richardson + * foo2qpdl: Change to limit chunk size to 0x80000 for CLP-600. + +2007-06-27 Rick Richardson + * qpdldecode: Increase buffer to 5120*1024. + +2007-06-24 Rick Richardson + * qpdldecode: xres/yes decode. + +2007-06-23 Rick Richardson + * qpdldecode: Put in want and got for the checksum. + +2007-06-10 Rick Richardson + * *-wrapper: MAC OS X: Add /opt/local/bin (gs) to PATH for MAC OS X + DarwinPorts. + +2007-06-07 Rick Richardson + * foo2lava: foomatic entries for 2480. + * foo2lava: ICM entries for 2530, 2490, 2530 + * foo2qpdl: ICM entries for cc none. + * foo2lava: custom page size + +2007-06-04 Rick Richardson + * foo2lava: Add -z1 (2480MF) to produce OPL data. + +2007-06-02 Rick Richardson + * opldecode: Decode OPL print streams, e.g. magicolor 2480 MF. + +2007-06-01 Rick Richardson + * foo2qpdl: Change ICM from -z0 to -C10 -Gsamclp300-0.icm + * getweb: Add 300, 600, 3160, 6110 to get profiles from the web. + + $ make + $ ./getweb 300 # or 3160, 6110 + # make install cups + + Delete Samsung CLP-300/600, CLX-3160, Xerox Phaser 6110/6115MFP + and recreate them again. + +2007-05-16 Rick Richardson + * foo2qpdl-wrapper: fix it again. NOTE: use only gs 7.07 OR gs 8.54+ + to print color!!!! Ubuntu has a problem with gs 8.15!!! + +2007-05-15 Rick Richardson + * foo2qpdl-wrapper: Fix gamma for black text (black-text.ps). + For Samsung CLP-300/600, CLX-3160, Xerox Phaser 6110/6115MFP. + +2007-05-08 Rick Richardson + * foo2*-wrapper: Implement Custom Page Size. + * foo2zjs, foo2lava, foo2xqx: Implement Custom Page Size. + * *.ppd: Implement Custom Page Size. + + $ lpr -Php1022 -o PageSize=Custom.4x6in ~/testpage.ps + +2007-04-27 Rick Richardson + * foo2qpdl.c: Fix bug with 600x600 resolution. + * foo2qpdl.c: COLORMODE=MONO if Mode==MODE_MONO + +2007-04-24 Rick Richardson + * Makefile: Install in /usr/share/ppd/foo2zjs (Debian 4.0). + +2007-04-18 Rick Richardson + * Doc: INSTALL.osx improved. + +2007-04-13 Rick Richardson + * Add: Xerox Phaser 6115MFP + +2007-04-11 Rick Richardson + * getweb: MAC OS X: use 'curl' instead of 'wget' + * *-wrapper: MAC OS X: Add /sw/bin (gs) to PATH for MAC OS X fink. + +2007-04-02 Rick Richardson + * foo2*-wrapper: Fix logging: GAMMAFILE, GSOPTS + +2007-03-13 Rick Richardson + * foo2qpdl: Add ICM profiles to PPD files. + +2007-03-11 Rick Richardson + * foo2qpdl-wrapper: models -z0, -z1 + +2007-03-10 Rick Richardson + * foo2qpdl.c: Implement -d4, -d5 (manual duplex) + * foo2qpdl: PPD et al. + +2007-03-09 Rick Richardson + * foo2qpdl.c: Implement -t (Save Toner) + * foo2qpdl.c: Implement -2/3/4/etc. (Nup) + * foo2qpdl.c: RECTYPE 0x0 is per page. + +2007-03-08 Rick Richardson + * manual.pdf: pdfbookmark -count + * Xerox-Phaser-6110.xml: autodetect + * Xerox-Phaser-6110.ppd: autodetect + +2007-03-03 Rick Richardson + * Add: foo2qpdl et al for Xerox Phaser 6110. + +2007-02-27 Rick Richardson + * foo2lava.c: Cosmetic: \033&l0H instead of \f. + +2007-02-26 Rick Richardson + * foo2lava.c: Insert formfeed (\f). + +2007-02-25 Rick Richardson + * foo2qpdl.c: pn goes from 4, 1, 2, 3 + * foo2lava.c: config image data command #=4(2). + +2007-02-24 Rick Richardson + * foo2qpdl.c: blp16 for color + +2007-02-20 Rick Richardson + * Add: foo2qpdl et al for Samsung CLP-300, CLP-600, CLX-3160. + Only JBIG (type 0x13) compression is implemented. + Alpha quality. + +2007-02-04 Rick Richardson + * foo2lava.c: Set \033*r-1004U for color. + +2007-02-03 Rick Richardson + * foo2lava.c: Set XOFFSET/YOFFSET to ResX / 6. + * foo2lava.c: 26 byte config image data command #=4(2). + * foo2lava.c: Pad JBIG data to a multiple of 32 bytes. + +2007-01-28 Rick Richardson + * foo2lava.c: put in 8 or 26 byte config image data command. + * foo2lava-MediaType.xml: use -m0 for plain paper. + +2007-01-27 Rick Richardson + * foo2lava.c: Pad JBIG data to a multiple of 16 bytes. + +2007-01-20 Rick Richardson + * hplj1000: Add "foo2zjs: " to the output. + +2007-01-08 Rick Richardson + * Makefile: bug with install-hotplug and hplj1000 + +2006-12-24 Rick Richardson + * foo2lava: Add black/non-black pixel counts. Ditto for color. + +2006-12-23 Rick Richardson + * foo2lava-wrapper: Adjust paper sizes. + +2006-12-22 Rick Richardson + * foo2lava: JBIG data (cont) is at the end. + +2006-12-20 Rick Richardson + * lavadecode: Put in [letter], etc. + +2006-12-18 Rick Richardson + * foo2lava: Add Konica Minolta magicolor 2490 MF all-in-one. + PRINTER ONLY! + +2006-12-17 Rick Richardson + * Implement -3,-6,-8,-9,-10,-12,-14,-15,-16,-18 N-up. + +2006-12-12 Rick Richardson + * lavadecode: put comments in. + * lavadecode.1: put example in. + +2006-12-07 Rick Richardson + * all: update email address, copyright. + +2006-12-06 Rick Richardson + * foo2hp: update for new 'RaS3' CUPS header (bpp=2). + +2006-12-04 Rick Richardson + * Fix bug in lavadecode. + * foo2hp: update for new 'RaS3' CUPS header (bpp=2). + +2006-11-30 Rick Richardson + * Add: foo2lava entries for foomatic (part). + * Add: foo2lava entries for foomatic (rest). + +2006-11-29 Rick Richardson + * Add: foo2lava, foo2lava-wrapper for KM magicolor 2530 DL. + +2006-11-26 Rick Richardson + * Add: lavadecode for decoding KM magicolor 2530 DL. + +2006-11-26 Rick Richardson + * foo2xqx cleanup. + +2006-11-25 Rick Richardson + * Implement Duplex for foo2xqx. + +2006-11-24 Rick Richardson + * Fix: foo2xqx-wrapper and foo2xqx for A4. + * Fix: foo2xqx-wrapper and foo2xqx for letter/legal. + +2006-11-23 Rick Richardson + * Add: foo2xqx + * Resolution + * Economode + * Bug: DMMEDIA_STANDARD -> DMMEDIA_PLAIN + +2006-11-21 Rick Richardson + * Add: foo2xqx et al for HP LaserJet M1005 MFP + Beta quality. + * MediaTypes added + * Input Slot added + +2006-10-10 Rick Richardson + * Modify foo2zjs.c: Allow manual duplex on HP 1022. + +2006-10-04 Rick Richardson + * Put tray3 in foo2hp. + +2006-09-29 Rick Richardson + * Change Makefile to delete Ubuntu ppd's. + +2006-09-19 Rick Richardson + * Makefile: "make cups" now works with Slackware. + +2006-09-11 Rick Richardson + * Removed foo2oak and oakdecode + +2006-08-04 Rick Richardson + * Porting base changed to FC5. + +2006-06-25 Rick Richardson + * Modify: foo2hp2600-wrapper to avoid bugs in gs 8.14 and 8.15 (Ubuntu). + gs 8.14/8.15 has bugs in it, so no WTS and no great colors + for Ubuntu unless you upgrade to gs 8.54 OR downgrade to gs 7.07. + +2006-06-20 Rick Richardson + * Modify: Makefile, added install-hotplug-test + +2006-06-19 Rick Richardson + * Modify: icc2ps/lcms.h for *BSD. + +2006-06-07 Rick Richardson + * Modify: hplj10xx.rules to change BUS= to BUS==, SYSFS{}= to SYSFS{}== + (undocumented change per "man udev") + +2006-06-02 Rick Richardson + * Update: hpclj2600n-1.icm to 060513_827411_1.icm (ICCFactory 1) + + Read "COPYING" first!! Only those tarballs from + http://foo2hp.rkkda.com can use the ICM file. No + 3rd-party packages can. + + To update your version: + ./getweb 2600n + su + make install + Really good colors with this one! + +2006-05-23 Rick Richardson + * Modify: icc2ps to "Little CMS" (lcms), v1.15. + Also modify cmsio1.c to remove warnings. + * Modify: hplj10xx.rules to change KERNEL= to KERNEL== + (undocumented change per "man udev") + +2006-05-15 Rick Richardson + * Modify: Makefile to put in test for gcc. + +2006-05-12 Rick Richardson + * Add: Well Tempered Screening (WTS) to foo2hp2600-wrapper + # CUPS also does grief by adding its own PS code to the input file. + # We take care of that with the sed command. Thus, Well Tempered + # Screening (WTS) now works! + * Make default ICM file for HP 1600/2600n to hpclj2600n-1.icm, + a.k.a ICCFactory 1, 060413_131593_1.icm + +2006-05-11 Rick Richardson + * Modify: "./getweb 1020" to get HP LaserJet 1020 files from the web. + * Modify: "./getweb 1018" to get HP LaserJet 1018 files from the web. + * Modify: "./getweb 1005" to get HP LaserJet 1005 files from the web. + * Modify: "./getweb 1000" to get HP LaserJet 1000 files from the web. + +2006-05-10 Rick Richardson + * New printer added: HP LaserJet 1022 + * Change: foomatic-db/printer/HP-Color_LaserJet_*.xml + strings from 2600 to 2600n and Color LaserJet. + * USB support for 2600n now works. + +2006-05-09 Rick Richardson + * Modify: "./getweb 2600n" to get HP 2600n ICM files from the web. + * Modify: "./getweb 1600" to get HP 1600 ICM files from the web. + * Modify: "./getweb 2430" to get Minolta 2430 ICM files from the web. + +2006-05-04 Rick Richardson + * Modify: hplj10xx.rules to change product name from + "hp LaserJet 1005" to "hp LaserJet 1005 series" + +2006-05-01 Rick Richardson + * New printer added: HP LaserJet 1018 + +2006-04-30 Rick Richardson + * Modify: zjs.h, zjsdecode.c for Zenographics ZX 1.1 format. + +2006-04-28 Rick Richardson + * Add: N-up orientation to foo2*wrapper (-o orient) and + foomatic files. + * Modify: do -t (SaveToner) in the HP1020 printer. + * Modify: foo2zjs.c to implement 1200x600 for HP LaserJet 1020 + * Adjust: foomatic and PPD entries for above. + Redhat: printconf-gui, Edit a queue, change nothing, then Apply. + Others: delete and recreate HP 1020 queues. + +2006-04-25 Rick Richardson + * Modify: Makefile to do install-test for foomatic-rip + +2006-04-16 Rick Richardson + * Modify: PPD/* to update *Manufacturer strings. + * Modify: foo2*-wrapper.1 to document -I intent. + * Modify: revert firmware file HP 1020 to 20041118. + +2006-04-14 Rick Richardson + * Modify: firmware file for HP 1020 printer to 2005/03/18. + +2006-04-12 Rick Richardson + * Modify: foo2zjs-wrapper to implement -C10 -Gnone, for + testing ICM files. + +2006-03-27 Rick Richardson + * Add: Manual Duplex to foo2hp/foo2hp2600-wrapper. + Long edge (ManualDuplexNoTumble, -d4) and + short edge (ManualDuplexTumble, -d5). + + First the odd pages are printed. Then the printer pauses + for you to load tray 2. Remove the odd pages and put them in + tray 2. Hit "v/" (continue). Then the even pages are printed. + +2006-03-24 Rick Richardson + *Modify: foo2hp et al to put in envelope pagesizes. + +2006-02-28 Rick Richardson + * Modify: hplj10xx - use ed instead of ex (gentoo "fix") + * Modify: Makefile target "cups" for Gentoo. + +2006-02-27 Rick Richardson + * Modify: foomatic-db/opt/*Nup* to make shortname = 1up. + re-gen PPD's. + +2006-02-23 Rick Richardson + * Modify: zjsdecode.c, set planeNum to 1. + +2006-02-16 Rick Richardson + * Modify: Makefile install-foo to be RedHat FC4 compatible by + removing /var/cache/foomatic/printconf.pickle and letting + printconf-gui recreate it. + +2006-02-08 Rick Richardson + * Modify: /etc/hotplug/usb/hp10xx to add a chmod 0666 for SUSE 10.0 + +2006-01-24 Rick Richardson + * Modify: SUSE 10.0 hotplug changes to + /etc/udev/rules.d/11-hplj10xx.rules + +2006-01-16 Rick Richardson + * Modify: More changes to Makefile to get it to build on FreeBSD. + +2006-01-15 Rick Richardson + * Modify: Makefile to get it to build on FreeBSD. + +2006-01-13 Rick Richardson + * Modify: foomatic DB entries and PPD files for HP LJ 1000/1005/1020. + Add paper margins. + +2006-01-12 Rick Richardson + * Modify: foo2hp2600-wrapper to change default ICM file + when -b1 and gs is 32-bit (gs segfaults on 64-bit). + Much better color when -b1 and 32-bit gs. + +2006-01-07 Rick Richardson + * Add: hp2600n default ICM profile (color correction) to bpp=1. + There is no default for bpp=2 right now, pending pksmraw + support. + +2006-01-04 Rick Richardson + * Modify: foo2hp bpp=2 mirror array. + +2006-01-03 Rick Richardson + * Modify: hplj10?? to work with FC4 and udev. + There is a timeout problem with udev and FC4, so spin off the + firmware download. + +2005-12-30 Rick Richardson + * Modify: foo2hp, foo2hp2600-wrapper to implement -t (Draft Mode). + +2005-12-28 Rick Richardson + * Add make target "make uninstall". + +2005-12-27 Rick Richardson + * Modify: 2430 PPD file, hplj10xx file + +2005-12-23 Rick Richardson + * Modify: foo2zjs, foo2zjs-wrapper to implement -t (Draft Mode). + Only for 1 bpp monochrome. + +2005-12-21 Rick Richardson + * Modify: foo2hp, foo2hp2600-wrapper to implement bpp=2 for mono&color. + +2005-12-20 Rick Richardson + * Modify: foo2hp, foo2hp2600-wrapper to implement bpp=2 for color only. + +2005-12-14 Rick Richardson + * Modify: foo2zjs, foo2zjs-wrapper to implement Draft Mode (-t). + +2005-12-04 Rick Richardson + * Modify: hplj10XX to not call us twice on FC4. + +2005-12-01 Rick Richardson + * Modify: foo2zjs, foo2zjs-wrapper so it prints on HP LJ 1020. + Tested thru Fedora Core 3. + +2005-11-24 Rick Richardson + * Added: hpclj2600n.icm for color calibration + +2005-11-20 Rick Richardson + * Modify: foo2hp & wrapper + 1-bpp color printing + gs 8.xx is best. + +2005-11-13 Rick Richardson + * Added: PPD/HP-Color_LaserJet_2600n.ppd + foomatic DB entries for 2600 + * Modify: getweb.in for foo2hp. + +2005-11-12 Rick Richardson + * Modify: foo2hp.c, bpl16 = (bpl + 15) & ~15; + +2005-11-10 Rick Richardson + * Added: foo2hp + foo2hp2600-wrapper + * Right now, just for test purposes. Use it like this: + $ foo2hp2600-wrapper testpage.ps >xxx + $ zjsdecode -dxxx + * Partial implementation of HP LJ 2600n. + zjsdecode -dxxx < 2600n.prn + +2005-11-06 Rick Richardson + * Add -h (hex output) to zjsdecode. + +2005-11-01 Rick Richardson + * Add hplj10xx.rules for make install-hotplug using udev. + +2005-02-13 Rick Richardson + * Add Minolta 2430. + +2004-10-23 Rick Richardson + * Make code 64-bit clean for x86_64 (but not well tested). + +2004-09-11 Rick Richardson + * foo2zjs-wrapper + Abandon all use of "which", because you need a "which which" + Legwork by Alex Schnar + +2004-09-07 Rick Richardson + * foo2zjs-wrapper: + Fix problem on distros and MacOS where ash is /bin/sh + +2004-07-01 Rick Richardson + * foo2zjs: update to current m2300w {prolog,screen1200}.ps + +2004-06-22 Rick Richardson + * foo2zjs-wrapper: + switch to kh/kx CRD's, which will print pure text pages using + just the K plane, even on a color queue. Make colormode 2 + (graphics+text) the default if no mode is specified. + +2004-06-15 Rick Richardson + * foo2zjs-wrapper: fix bug introduced in last change if gs8 isn't available + +2004-06-13 Rick Richardson + * Adjust foo2zjs-wrapper to try to use a local copy of GS 8.14, + rather than the distro supplied gs 8. Try to pick the best + default color mode based on what is installed on the users + computer. + +2004-06-11 Rick Richardson + * Upgrade to JBIGKIT 1.6 + +2004-06-06 Rick Richardson + * foo2zjs: Add capability to use the 2300w color correction procedure + using tuned CRD's by Gerhard Fuernkranz and Leif Birkenfeld. + Not yet documented nor made the default pending further modifications. + In particular, printing a monochrome document on a color queue + will not yet be optimized to a monochrome print. + * Fix error in "getweb update" + * foo2zjs: Add ability to take input from GS in pksmraw format. + +2004-04-13 Rick Richardson + * Add the ./getweb 2300dl_fw command to download firmware update for + the 2300DL printer. Improve INSTALL documentation. + +2004-04-10 Rick Richardson + * Improve hplj100x USB firmware download script to autodetect printers. + * getweb 1005: Update URL for getting HP 1005 firmware. + * foo2oak: Add foomatic options to allow configuring an ICM profile. + +2004-04-09 Rick Richardson + * foo2oak: Fix argument on END_PAGE command for color printing. + Stefan Huber says this should enable color. + Also fix page length and clipping for A4 paper. + +2004-04-07 Rick Richardson + * Add Makefile target "make install-hotplug" to automatically + download HP LJ1000 firmware files. + +2004-03-27 Rick Richardson + * foo2zjs: minor code change in handling file args to make it the + the same as with foo2oak. + +2004-03-19 Rick Richardson + * foo2oak: only build this on ia32 arch + * Ignore error from groff, OS X has lousy man macros + +2004-02-10 Rick Richardson + * foo2zjs: use the correct bit mirroring array in color duplex mode. + +2004-02-01 Rick Richardson + * foo2zjs: fix clipping bug when length of clipped region is not + a multiple of four. Affected color output. + * foo2oak: fix clipping bug when length of clipped region is not + a multiple of four. Affected 1-bit color output. + * foo2oak: fix output order of color planes (think its YMCK, not CMYK) + +2004-01-20 Rick Richardson + * Remove Glossy from legal media types for 2300DL + +2003-12-29 Clint Morgan + * Updated INSTALL.osx + +2003-12-07 Rick Richardson + * Add Clint Morgan's installation instructions for Mac OS X + (file INSTALL-osx.txt). Thanks Clint. + +2003-12-03 Rick Richardson + * foo2zjs: Remove space in 2 shortnames for pageworks/pro printer. + +2003-11-25 Rick Richardson + * foo2oak: Update LJ1500 with IEEE-1284 strings. + * all: Overhaul for new website location. + +2003-11-12 Rick Richardson + * foo2oak: add 1284 ID strings to foomatic database entry. + * all: Install PPD files in /usr/share/cups/model (if it exists) + +2003-11-11 Rick Richardson + * GET THIS VERSION! + Roadrunner's FTP server was on old backup tapes for over 2 days. + Its entirely possible that you got a shite copy of this driver + in that time period. + +2003-11-09 Rick Richardson + * Update PPD files and add PPD files for OAKT printers. + +2003-11-08 Rick Richardson + * foo2oak: Implement code structure for 2-bit color output using + the ghostscript CUPS device. + This output (4 level color) has not been tuned. + +2003-11-07 Rick Richardson + * foo2oak: Implement the code structure for 2-bit monochrome output, + and add -b2 option to foo2oak-wrapper to select it. + This output (4 level grayscale) has not been tuned. + +2003-11-05 Rick Richardson + * CRITICAL fix for embarrasing memory leak. + + * Add wrappers and binaries for 1-bit OAKT support (HP LaserJet 1500). + Absolutely untested with a real printer. This driver is offered + in binary only. + +2003-10-17 Rick Richardson + * Update README and INSTALL documentation + * Add PPD files from linuxprinting.org + +2003-10-09 Rick Richardson + * Fix long edge duplex mode. I was unaware that foo2zjs + needs to rotate the even page images 180 degrees because + the printer can't even do that by itself :-). + * Upgrade to JBIGKIT 1.5 + * Modified zjsdecode (actually, jbig.c) to decode JBIG the data + produced by other printer drivers when MY > 0. + +2003-08-07 Rick Richardson + * Change icc2ps/lcms.h to set USE_BIG_ENDIAN on OS X + +2003-07-23 Rick Richardson + * Fool with the Ghostscript to foo2zjs plumbing to avoid getting + messages on Postscript's stdout intermingled with the + pbm/bitcmyk output. + +2003-06-29 Rick Richardson + * Add XML files for Minolta Color PageWorks/Pro L + +2003-06-19 Rick Richardson + * If color has been selected, but there isn't any color on the page, + then produce a monochrome ZjStream. + +2003-05-31 Rick Richardson + * Use /usr/bin/logger to log the command line passed to the wrapper, + in case I need it for bug reports. + +2003-05-30 Rick Richardson + * Build usb_printerid only on Linux. + * Other minor changes to get it to compile on the SourceForge + compile farm OS X machine. + +2003-05-27 Rick Richardson + * Add margins (printable area) to 2300 DL foomatic printer description + * Add margins (printable area) to 2200 DL foomatic printer description + * Fixed Duplex foomatic option - it was overriding the + InputSlot option and preventing tray selection. + +2003-05-26 Rick Richardson + * Fixed -d option to zjsdecode + +2003-05-08 Rick Richardson + * Sheesh, added missing foo2zjs-wrapper.in + * Added HP 1005 .xml file from Till. + +2003-05-06 Rick Richardson + * Add missing usb_printerid file. Not needed yet, but + will be used for firmware autodownload. + +2003-05-01 Rick Richardson + * Put correct checksum calculation into arm2hpdl + It should now work properly. + +2003-04-30 Rick Richardson + * Fix warning from grops when creating manual page + +2003-04-30 Rick Richardson + * Add skeletal arm2hpdl program to convert ARM executables + in ELF format to the HP download format. For converting the + sihp1005.img file to the format that the HP LJ1005 printer wants. + Unfortunately, this program is incomplete. The calculation + of the checksum/crc/whatever trailer is incorrect. But I + throw the program out there in case somebody figures out + the algorithm before me. + +2003-04-26 Rick Richardson + * Properly constrain the InputSlot (Media Source) options + for the 2200/2300 DL printers to those values that these + printers actually support. + +2003-04-16 Rick Richardson + * Add hack to fix clipping region for A4 paper on HP1000 + +2003-04-07 Rick Richardson + * Include unistd.h, not getopt.h. + +2003-03-30 Rick Richardson + * Default GSOPTS=-dCOLORSCREEN. + + * Allow more than one -g option to be passed to wrapper. + +2003-03-29 Rick Richardson + * Add foomatic option to select ICM color profile file. + Add foomatic option to select ICM color profile intent. + Remove temporary ICM testing hack. + + * Remove "unset OPTIND", fix for broken 'dash' shell. + + * Rename the "geticc" convenience script to "getweb" and make it + a general tool for retrieving "extra" files needed with some + printer models. Teach it how to download HP firmware files + and to update the foo2zjs software itself. E.G. + ./getweb 2300 # Get Minolta 2300 DL .ICM files + ./getweb 2200 # Get Minolta 2200 DL .ICM files + ./getweb 1000 # Get HP LJ1000 firmware file + ./getweb update # Get latest version of this software. + + * Adjust clipping region based on printer resolution. This may + fix issues with the HP LJ1000, which prints at 600x600. + + * Add regression tests + +2003-03-28 Rick Richardson + * Add foo2zjs-Duplex.xml foomatic option + * Add 'geticc' convenience script, to retrieve ICM profiles + from Minolta website. ./geticc 2200 or ./geticc 2300 + +2003-03-27 Rick Richardson + * Add developmental skeleton of .ICM file handling using icc2ps + to the wrapper. This is used for color correction. + WORK IN PROGRESS TO BE USED ONLY BY EXPERT TESTERS. + For the time being, you must use the foo2zjs-wrapper from + the command line and add a -G option which points to the + .ICM file you want to fool around with. You have to get + the .ICM files from your printer manufacturer's website or + by raping the Windows driver for them. + + For now only, if you put a file into /usr/share/foo2zjs/icm/ + called "testing.icm", the wrapper script will use that as + the .ICM file, even if you don't specify a -G option. + In a real implementation, we will need to select the file + based on the printer model, resolution, quality, media, and + individual user bias. Sigh. + + * Add -F option for prepending job with a firmware download. + Somebody tell me if this is useful. + +2003-03-25 Rick Richardson + * Added foo2zjs-PrinterType.xml option as per Till, which sets + the foo2zjs -P option flag for HP LaserJet 1000 printers. + + * Set clipping region for A4 paper on 2200 DL + +2003-03-24 Rick Richardson + * Update foomatic entries for Till's editorial changes. + +2003-03-23 Rick Richardson + * Add -X option to add extra zero padding to end of BID. Default + the value to 16 bytes. This seems to fix all issues with the + Minolta/QMS 2200DL according to Adam Erickson. In particular, + the 2200 DL will no longer print some pages blank nor hang with + the "Processing" message on the last page of the job. + + * Minor improvements to zjsdecode + +2003-03-22 Rick Richardson + * Install color correct template files to /usr/share/foo2zjs/ + This is in case anybody gets a wild hair and wants to try tuning + the color correction. At this point, they are just placeholders + until I get edjamacated on the process for tuning. + + * Add -G option to foo2zjs-wrapper, to specify a gamma file for + color correction. + + * Add -P option to foo2zjs and wrapper. This turns off the output + of START_PLANE codes, and may be needed by some non-color printers. + The default is now to send start plane codes, even for black and + white print jobs. + + * Add manual pages. + +2003-03-21 Rick Richardson + * Turn on JBG_DELAY_AT option in JBIG encoder. This seems to + fix the problem where some pages would not print properly, + especially color pages where you would get yellow splotches. + + * Add ability to change -l and -u thru the wrapper script. + + * Add ability to specify whether logical clipping values should + be sent to printer with -L . + +2003-03-20 Rick Richardson + * Add options -u WxH and -l WxH to specify upper left and + lower right clipping of the printers unprintable area. + This seems to be required by the 2200 DL, otherwise you + get pixel skew. The 2300 DL seems immune to this problem, + but clipping and then using a logical page offset in the Zjs + stream will work for it as well. + + * Add the ability to output a single color plane using black ink. + This is to help track down an issue where the yellow plane + sometimes goes nuts and prints yellow for the bottom portion + of some pages. Its cheaper to waste black toner than color + toner. Especially yellow toner, which is usually the first + color to empty. + + * Improve "make install" target. + +2003-03-17 Rick Richardson + * Add page number to zjsdecode filenames. + * Fix endianess issues. + +2003-03-12 Rick Richardson + * Fix typo in wrapper script that would prevent anything from + printing when using foomatic. + +2003-03-10 Rick Richardson + * Forgot to include jbg2pbm.c in tarball + +2003-03-08 Rick Richardson + * Add -r option to xjsdecode, for saving raw JBG planes + to a file for examination. + +2003-03-07 Rick Richardson + * When printing B&W, do not output START_PLANE. This may + or may not work around issues with the LJ-1000. + * Incorporate XML changes from Till. + +2003-03-05 Rick Richardson + * Change default color algorithm to convert C=1,M=1,Y=1 to + pure black. Likewise, if B=1 then turn off CMY + * Add 2-up and 4-up options (requires psutils package) + * Add Source option + +2003-03-04 Rick Richardson + * First public release diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..6952158 --- /dev/null +++ b/INSTALL @@ -0,0 +1,964 @@ +TOPICS +------ + * INSTALLATION + * GHOSTSCRIPT BUGS + * FEDORA NOTES + * UBUNTU NOTES + * DEBIAN NOTES + * OPENSUSE 1x.x NOTES + * ACER ASPIRE ONE NOTES + * ASUS EEE PC NOTES + * MAC OS X NOTES + * FREEBSD NOTES + * OPENBSD NOTES + * OPENSOLARIS, SOLARIS EXPRESS DEVELOPER EDITION 9/07, Solaris 11+ NOTES + * MINOLTA-QMS 2200/2300 DL NOTES + * CUPS USB NOTES + * HP LASERJET 1000/1005/1018/1020, P1005/P1006/P1007/P1008/P1505 NOTES + * HP SMART INSTALL NOTES + * PSUTILS AND 2/4-UP CAPABILITY + * CUSTOM PAGE SIZE + * LANDSCAPE ORIENTATION + * SET DEFAULT MEDIA WITH CUPS + * MANUAL DUPLEX + * UPDATE + * UNINSTALLING + * BUG REPORTS + * DEVELOPER AND DEBUGGING TIPS + * CUSTOM ICC/ICM COLOR PRINTER PROFILE (BUY) + * CUSTOM ICC/ICM COLOR PRINTER PROFILE (ARGYLL) + +INSTALLATION +------------ +Unpack: + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + +(Optional) Uninstall: + $ su OR $ sudo make uninstall + # make uninstall + +Compile: + $ make + +Get extra files from the web, such as .ICM profiles (for color correction) +and firmware. Select the model number for your printer: + $ ./getweb 1025 # Get HP LaserJet Pro CP1025nw .ICM files + $ ./getweb 1215 # Get HP Color LaserJet CP1215 .ICM files + $ ./getweb 1500 # Get HP Color LaserJet 1500 .ICM files + $ ./getweb 1600 # Get HP Color LaserJet 1600 .ICM files + $ ./getweb 2600n # Get HP Color LaserJet 2600n .ICM files + + $ ./getweb 1600w # Get Konica Minolta magicolor 1600W .ICM files + $ ./getweb 1680 # Get Konica Minolta magicolor 1680MF .ICM files + $ ./getweb 1690 # Get Konica Minolta magicolor 1690MF .ICM files + $ ./getweb 2480 # Get Konica Minolta magicolor 2480 MF .ICM files + $ ./getweb 2490 # Get Konica Minolta magicolor 2490 MF .ICM files + $ ./getweb 2530 # Get Konica Minolta magicolor 2530 DL .ICM files + $ ./getweb 4690 # Get Konica Minolta magicolor 4690MF .ICM files + $ ./getweb 110 # Get Oki C110 .ICM files + $ ./getweb 6115 # Get Xerox Phaser 6115MFP .ICM files + $ ./getweb 6121 # Get Xerox Phaser 6121MFP.ICM files + + $ ./getweb cpwl # Get Minolta Color PageWorks/Pro L .ICM files + $ ./getweb 2200 # Get Minolta/QMS magicolor 2200 DL .ICM files + $ ./getweb 2300 # Get Minolta/QMS magicolor 2300 DL .ICM files + $ ./getweb 2430 # Get Konica Minolta magicolor 2430 DL .ICM files + + $ ./getweb 300 # Get Samsung CLP-300 .ICM files + $ ./getweb 315 # Get Samsung CLP-315 .ICM files + $ ./getweb 325 # Get Samsung CLP-325 .ICM files + $ ./getweb 360 # Get Samsung CLP-360 .ICM files + $ ./getweb 365 # Get Samsung CLP-365 .ICM files + $ ./getweb 600 # Get Samsung CLP-600 .ICM files + $ ./getweb 610 # Get Samsung CLP-610 .ICM files + $ ./getweb 2160 # Get Samsung CLX-2160 .ICM files + $ ./getweb 3160 # Get Samsung CLX-3160 .ICM files + $ ./getweb 3175 # Get Samsung CLX-3175 .ICM files + $ ./getweb 3185 # Get Samsung CLX-3185 .ICM files + $ ./getweb 6110 # Get Xerox Phaser 6110 and 6110MFP .ICM files + + $ ./getweb 500 # Get Lexmark C500 .ICM files + + $ ./getweb 301 # Get Oki C301dn .ICM files + $ ./getweb c310 # Get Oki C310dn .ICM files + $ ./getweb c511 # Get Oki C511dn .ICM files + $ ./getweb c810 # Get Oki C810 .ICM files + $ ./getweb 3200 # Get Oki C3200 .ICM files + $ ./getweb 3300 # Get Oki C3300 .ICM files + $ ./getweb 3400 # Get Oki C3400 .ICM files + $ ./getweb 3530 # Get Oki C3530 MFP .ICM files + $ ./getweb 5100 # Get Oki C5100 .ICM files + $ ./getweb 5200 # Get Oki C5200 .ICM files + $ ./getweb 5500 # Get Oki C5500 .ICM files + $ ./getweb 5600 # Get Oki C5600 .ICM files + $ ./getweb 5800 # Get Oki C5800 .ICM files + + $ ./getweb 160 # Get Olivetti d-Color P160W .ICM files + + $ ./getweb 1000 # Get HP LaserJet 1000 firmware file + $ ./getweb 1005 # Get HP LaserJet 1005 firmware file + $ ./getweb 1018 # Get HP LaserJet 1018 firmware file + $ ./getweb 1020 # Get HP LaserJet 1020 firmware file + + $ ./getweb P1005 # Get HP LaserJet P1005 firmware file + $ ./getweb P1006 # Get HP LaserJet P1006 firmware file + $ ./getweb P1007 # Get HP LaserJet P1007 firmware file + $ ./getweb P1008 # Get HP LaserJet P1008 firmware file + $ ./getweb P1505 # Get HP LaserJet P1505 firmware file + +Install driver, foomatic XML files, PPD files, and extra files: + $ su OR $ sudo make install + # make install + +(Optional) Install hotplug (for HP LJ 1000/1005/1018/1020/P100[5678]/P1505): + $ su OR $ sudo make install-hotplug + # make install-hotplug + + Unplug and re-plug the USB printer + +If you use CUPS to manage your printers, you must restart cupsd: + # make cups OR $ sudo make cups + +Test operation of programs. Skip this if you don't have the exact same +version of Ghostscript that I have, Fedora ghostscript 8.71-16.fc14, because +it will not pass since different versions of Ghostscript generate different +raster images: + # make test + +Create printers (Fedora 6/7/.../25 and Ubuntu 7.10/8.x/.../16.x): + # system-config-printer + +Create printers (Redhat 7.2/7.3/8.0/9.0, Fedora Core 1-5): + # printconf-gui + +Create printers (Mandrake/Manrivia) + # printerdrake + +Create printers (openSUSE 10.x/11.x) + # yast2 printer + +Create printers (Ubuntu 5.10/6.06/6.10/7.04) + $ sudo gnome-cups-manager + $ sudo make cups # Ubuntu has a bug in gnome-cups-manager + + NOTE: to edit a queue hit "Properties" (click right mouse button). + +Create printers (Debian) + Connect with a web browser to: + http://localhost:631 + And configure printer (HP example shown) to: + HP LaserJet 2600n, Foomatic + foo2zjs (en) + Then edit "Manage Printers->Configure Printer" to suit you, + such as "Page Size" or "Color Mode". + +Create printers (Solaris 11+) + # printmgr + +Create printers (command line using CUPS) + # lpadmin -p "NAME" -v "URI" -E -P file.ppd.gz + i.e. + # lpadmin -p hp1020 -v "usb://HP/LaserJet%201020" -E \ + -P /usr/share/cups/model/HP-LaserJet_1020.ppd.gz + Set the default: + # lpadmin -d "NAME" + +Create at least one queue for monochrome, and another queue +for color printing. Create the queues, then edit them and +set the "device options" as desired. + +For a networked Minolta/QMS 2300 DL, I used a "Queue Type" +of "Unix Printer (LPD)", and set the "Server" to the IP address +of the printer, and the "Queue" to "lp". + +For a networked HP Color Laserjet 2600n, I used a "Queue Type" +of "Networked JetDirect", and set the "Printer" to the IP address +of the printer, and the "Port" to "9100". + +GHOSTSCRIPT BUGS +---------------- + * ghostscript 8.64 is broken w.r.t. color. Don't use! + + * ghostscript 9.00 is broken w.r.t. fonts in landscape mode. + + * ghostscript 9.+ is broken w.r.t. color. Don't use + + * Well Tempered Screening (WTS) works with ghostscript 8.54 thru 8.70+. + So if you want BEST COLORS, you'll have to install gs 8.54 or better + if you don't have it. + + OPTIONAL: + # yum install cups-devel + -OR- + $ sudo apt-get install cups-dev + + $ gs --version + 8.15.2 + + $ wget "http://ghostscript.com/releases/ghostscript-8.71.tar.gz" + $ tar zxf ghostscript-8.71.tar.gz + $ cd ghostscript-8.71 + $ ./autogen.sh + $ make + $ su OR $ sudo cp bin/gs /usr/bin/gs.foo + # cp bin/gs /usr/bin/gs.foo + + (Optional) + # make install OR $ sudo make install + + $ gs.foo --version + 8.71 + + If that doesn't compile (e.g. Ubuntu 11.10+), try this: + $ cd ghostscript-8.71 + $ ./configure --without-jbig2dec + $ make CFLAGS+="-DHAVE_SYS_TIME_H=1" + + * Halftoning Bug: + "The problems with WTS are primarily that it seems to fall down + on the halftone generation for some angles when the lpi is high for + the current resolution." - Ray Johnston + + So choose Standard, Accurate Screens, or reduce the resolution to + 600x600. + + * Ghostscript before 8.55 has a problem with ICM files and 64-bit gcc. + It causes a segfault with km2430_2.icm. So don't select that one. + +FEDORA NOTES +------------ + Install tix, foomatic\*, and system-config-printer FIRST: + # yum install tix foomatic\* system-config-printer + + If you are using a USB printer AND Fedora 12+, do this: + + # grep udev-configure-printer /var/log/messages + /var/log/messages:Jan 23 07:32:54 dual udev-configure-printer: \ + invalid or missing IEEE 1284 Device ID + + # rpm -e --nodeps system-config-printer-udev + + # shutdown -r now + + Power off then on the printer. + + Ref: + http://bugzilla.redhat.com/show_bug.cgi?id=558162 + +UBUNTU NOTES +------------ + Install build-essential, tix, foomatic-filters, groff, dc FIRST: + $ sudo apt-get install build-essential tix foomatic-filters groff dc + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ sudo make uninstall + $ make + $ ./getweb 1020 + OR other printer + $ sudo make install install-hotplug cups + + For 7.10 and later users: + $ sudo system-config-printer + + For 5.10/6.06/6.10/7.04 users: + $ sudo gnome-cups-manager + [configure ColorMode = Color if a color printer] + $ sudo make cups + + Ubuntu has a bug in gnome-cups-manager with Color, so you must + restart cups. No other distro has this bug. + + If that doesn't work, then fire up: + $ firefox http://localhost:631 + + And click on: + Printers -> Set Printer Options -> Color Mode -> Color + Then click on: + Set Printer Options + +DEBIAN NOTES +------------ + Install build-essential, tix, foomatic-filters, groff, cupsys, dc FIRST: + $ su + # apt-get install build-essential tix foomatic-filters groff dc + # apt-get install cups # For all others + OR + # apt-get install cupsys # For lenny and earlier + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ make + $ ./getweb 1020 + OR other printer + $ su + # make install install-hotplug cups + + $ firefox http://localhost:631 + +OPENSUSE 1x.x NOTES +------------------- + Do this: + + # zypper install make gcc + + # zypper service-add \ + http://download.opensuse.org/repositories/Printing/openSUSE_11.3/ \ + Printing + # zypper up -r Printing -t package + + Then install using the above instructions. + +ACER ASPIRE ONE NOTES +--------------------- + + Ref: http://the.taoofmac.com/media/Acer/Aspire\ One/AA1notes.htm + + It is a version of Fedora. + + Get a shell by typing Alt+F2 then Return. + + $ su + # yum install make gcc + + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ make + $ ./getweb 1020 + OR other printer, e.g. 2600n + $ su + # make install install-hotplug cups + + +ASUS EEE PC NOTES +----------------- + + It is a version of Xandros. First: + + Get a shell by typing ctrl-alt-T + $ sudo su - + # vi or kwrite /etc/apt/sources.list + add the following line: + deb ftp://ftp.us.debian.org/debian stable main contrib non-free + # apt-get -f install + # apt-get install wget + # apt-get install build-essential + + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ make + $ ./getweb 1020 + OR other printer, e.g. 2600n + $ sudo make install install-hotplug cups + + Then use the "Add Printer" GUI. + +MAC OS X NOTES +--------------- + Please read the detailed installation instructions by Clint Morgan + and Rick Richardson in the file INSTALL.osx. + +FREEBSD NOTES +------------- + You need the following packages before you start the "make": + # pkg_add -r wget + # pkg_add -r gmake + # pkg_add -r ghostscript-gnu + # pkg_add -r cups + # pkg_add -r foomatic-filters + # pkg_add -r unzip + + Use "gmake" instead of "make". E.G. gmake; ./getweb XXX; gmake install + + USB NOTES FOR FREEBSD 8.0 AND GREATER + ------------------------------------- + $ gmake + $ ./getweb 1020 + OR other printer, e.g. 2600n + # gmake install install-hotplug + # ./freebsd-install + + Use: + usb:/dev/ulpt0 Device with reset #0 + usb:/dev/unlpt0 Device without reset #0 + usb:/dev/ulpt1 Device with reset #1 + usb:/dev/unlpt1 Device without reset #1 + for the URI. + + More information: + http://menhennitt.com.au/wordpress/2009/09/27/printing-to-an-hp-laserjet-1020-from-freebsd-8-using-cups-and-foo2zjs + http://farid.hajji.name/blog/2010/02/02/printing-woes-on-freebsd-8-with-cups/ + + USB NOTES FOR FREEBSD 7.x AND LESSER + ------------------------------------ + - Build the kernel without the ulpt driver. + e.g. + # vi /usr/src/sys/i386/conf/GENERIC + comment out 'device ulpt' + # cd /usr/src/ + # make buildkernel KERNCONF=GENERIC + # make installkernel KERNCONF=GENERIC + reboot + + - Do one of these lines each time the HP printer is powered up: + # cat /usr/share/foo2zjs/firmware/sihp1018.dl > /dev/ugen0.1 + # cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/ugen0.1 + + More information: + http://www.webmiscreants.com/index.php?page=howto_P1006 + +OPENBSD NOTES +------------- + You need the following packages before you start the "make": + # pkg_add wget + # pkg_add gmake + # pkg_add -i ghostscript + # pkg_add cups + # pkg_add unzip + + Use "gmake" instead of "make". E.G. gmake; ./getweb XXX; gmake install + + USB NOTES FOR OPENBSD + - Build the kernel without the ulpt driver. + e.g. + # vi /usr/src/sys/i386/conf/GENERIC + comment out 'device ulpt' + # cd /usr/src/ + # make buildkernel KERNCONF=GENERIC + # make installkernel KERNCONF=GENERIC + reboot + + - Do one of these lines each time the printer is powered up: + # cat /usr/share/foo2zjs/firmware/sihp1018.dl > /dev/ugen0.1 + # cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/ugen0.1 + +OPENSOLARIS, SOLARIS EXPRESS DEVELOPER EDITION 9/07, Solaris 11+ NOTES +---------------------------------------------------------------------- + Use "bash" for your shell. Only network printers are supported. + + $ export PATH=$PATH:/sbin:/usr/sbin:/usr/sfw/bin:/opt/sfw/bin + + Do this: + + [ Load CD Solaris_Software_Companion] + $ cd /media/S10_807_SOFTWARE_COMPANION/Solaris_Software_Companion/Solaris_i386/Packages + $ su root -c "/usr/bin/bash" + # pkgadd -d `pwd` SFWgroff + # pkgadd -d `pwd` SFWgawk + + OR + Browse to: + http://pkg.opensolaris.org/release/en/index.shtml + and Search or Browse Packages and download: + + SUNWscp + SUNWgawk + SUNWgroff + + Then: + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + + $ gmake + $ ./getweb 2530 + OR other printer + + $ su root -c "/usr/bin/bash" + # gmake install + # printmgr + + To see a screen to the GUI: + http://foo2lava.rkkda.com/solaris/ + + NOTE: you cannot see the printer options (Paper Source, Paper Type, + Paper Media, Color Mode, ICM, etc.). There is NO GUI to do it!!! + Sorry. + +MINOLTA-QMS 2200/2300 DL NOTES +------------------------------ + Use the network interface if you can. These printers understand Unix + LPD printer server protocol. So when setting up the printer queue, + you can select "UNIX Printer (lpd queue)", set the lpd queue name to + "lp" (arbitrary), and set the "Server" to the IP address of the + printer. + + These printers also understand several other printer server protocols, + such as JetDirect and IPP, but I have not tried them. In any case, + I'm not aware of any advantages of using them over LPD. + + The USB interface on this printer will work if your printer is at + firmware revision 2.55 or later. Mine was not, but I was able to + get this firmware from the Konica Minolta Europe web site. The USA + site doesn't have it. Upgrading the firmware on your printer can + be dangerous and might turn your printer into a paperweight, so I do + not recommend it unless you need USB and are a computer expert. To + get the v2.55 firmware upgrade, try: + ./getweb 2300dl_fw + +CUPS USB NOTES +-------------- + If you are using the USB port, then the URI should be: + file:/dev/usb/lp0 OR usb:/dev/usb/lp0 + file:/dev/usb/lp1 OR usb:/dev/usb/lp1 + OR + usb://Samsung/CLP-310%20Series + usb://Samsung/CLP-310%20Series + usb://HP/Color%20LaserJet%20CP1215 + usb://HP/Color%20LaserJet%202600n + usb://HP/LaserJet%201000 + usb://HP/LaserJet%201005 + usb://HP/LaserJet%201018 + usb://HP/LaserJet%201020 + usb://HP/LaserJet%20P1005 + usb://HP/LaserJet%20P1006 + usb://HP/LaserJet%20P1007 + usb://HP/LaserJet%20P1008 + usb://HP/LaserJet%20P1505 + usb://HP/LaserJet%20Professional%20P1102w + + Don't use hp:// because that is for hplip (a closed source, + proprietary driver). + + Do a "make cups" as root if you haven't done it before. + +HP LASERJET 1000/1005/1018/1020, P1005/P1006/P1007/P1008/P1505 NOTES +-------------------------------------------------------------------- + These printers need their firmware downloaded to them every time they + are powered up. + + On Linux with USB connected printer: + If you are running Linux and the printer is connected via USB, you + can arrange for the firmware to be automatically downloaded to the + printer by performing one more installation step: + + # make install-hotplug + + Power off then on the printer. Light should flash orange for + ~5 seconds as the firmware is getting downloaded. + + On another OS or with a parallel port connected printer: + + You must send a firmware file to the printer each time you power it + up. If you downloaded the extra files for the HP above, a typical + command line to load the firmware would be ONE of these: + + # cat /usr/share/foo2zjs/firmware/sihp1000.dl > /dev/usb/lp0 + # cat /usr/share/foo2zjs/firmware/sihp1005.dl > /dev/usb/lp0 + # cat /usr/share/foo2zjs/firmware/sihp1018.dl > /dev/usb/lp0 + # cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0 + # cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/usb/lp0 + # cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/usb/lp0 + # cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/usb/lp0 + + Light should flash orange for ~5 seconds as the firmware is + getting downloaded. + + On Mac OS X: + + You must send a firmware file to the printer each time you power it + up. If you downloaded the extra files for the HP above, a typical + command line to load the firmware would be: + + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1018.dl + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1020.dl + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1005.dl + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1006.dl + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1505.dl + + -OR- + + Add a line to /etc/rc.local and reboot: + + killall osx-hplj-hotplug; \ + osx-hplj-hotplug >/tmp/osx-hplj-hotplug 2>&1 & + + -OR- + + Issue a "make install-hotplug" command: + + $ sudo make install-hotplug + + Light should flash orange for ~5 seconds as the firmware is + getting downloaded. + + Firmware Not Downloaded: + # usb_printerid /dev/usb/lp0 + GET_DEVICE_ID string: + MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS: PRINTER;\ + DES:HP LaserJet 1020; + + Firmware Downloaded: + # usb_printerid /dev/usb/lp0 + GET_DEVICE_ID string: + MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS: PRINTER;\ + DES:HP LaserJet 1020;FWVER:20050309; + + NOTE: The original HP files are named '*.img'. Sometimes HP supplies + these files ready-to-download to the printer, sometimes they are raw + ARM executables and need to have a special header added to them before + they can be downloaded. The "make install" step will use the supplied + "arm2hpdl" program to automatically detect which kind of file they are + and convert them (if needed) to the downloadable '*.dl' format. + + These printers do not have a "button" when you run out of paper. + But, there is a GNOME gui in: + + Applications -> System Tools -> HPLJ 10xx Replaced Paper + + It requires tcl, tk, and tix. Fedora 5 and later: + # yum install tcl tk tix + + or, you can simulate this by reloading the paper and doing: + + $ usb_printerid /dev/usb/lp0 + + or, you can open the print cartridge door and then close it. + +HP SMART INSTALL NOTES +---------------------- + The printers HP LaserJet Pro P1102, HP LaserJet Pro CP1025, and simliar + models have a virtual CD-ROM (a fake USB CD drive) in USB mode. You can + disable this three ways: + + Method 1: + NOTE: this is a non-open-source method! + - Connect the printer to a Windows PC and turn it on. + The fake CD-ROM appears on Windows. + - Insert the original Driver CD that ships with the printer + - Run SIUtility.exe or SIUtility64.exe from the UTIL folder and + COMPLETELY DISABLE THIS "HP SMART INSTALL" FEATURE. + + Method 2: + - Install usb_modeswitch and usb_modeswitch-data from your distro's + repository. I.E.: + # yum install usb_modeswitch usb_modeswitch-data + OR + $ sudo apt-get install usb-modeswitch-data + OR + Surf to: http://www.draisberghof.de/usb_modeswitch/ + - Power cycle the printer. + + Method 3: + NOTE: this is a non-open-source method! + - Execute: + $ wget http://hplipopensource.com/hplip-web/smartinstall/\ + SmartInstallDisable-Tool.run + $ sh SmartInstallDisable-Tool.run + +PSUTILS AND 2/4-UP CAPABILITY +----------------------------- + If you would like to use the 2-up/4-up capability, then you need to + get and install Angus Duggan's excellent psutils package. You can + find the source code for psutils here: + + http://knackered.knackered.org/angus/psutils/index.html + + Or an RPM here: + + http://rpmfind.net/linux/rpm2html/search.php?query=psutils + +CUSTOM PAGE SIZE +---------------- + + Append "PageSize=Custom.MMMxNNNin" to the lpr command. E.G. + + $ lpr -P hp2600 -o media=letter -o PageSize=Custom.4x6in ~/testpage.ps + $ lpr -P hp2600 -o media=letter -o PageSize=Custom.10x15cm ~/testpage.ps + $ lpr -P hp1020 -o media=letter -o PageSize=Custom.4x6in ~/testpage.ps + + Or, use a GUI that allows the custom size parameters, e.g. + "evince" - PostScript and PDF File Viewer. + +LANDSCAPE ORIENTATION +--------------------- + This driver just prints Postscript and doesn't know what the + orientation is (*). Other higher level programs format your + data into Postscript, e.g CUPS. + + The CUPS -o landscape option will rotate the page 90 degrees to print + in landscape orientation: + + $ lp -o landscape filename + $ lpr -o landscape filename + + (*) except for N-up printing, because psnup (from psutils) requires it! + +SET DEFAULT MEDIA WITH CUPS +--------------------------- + $ sudo + # lpoptions -o media=A4 + -OR- + # lpoptions -o media=Letter + +MANUAL DUPLEX +------------- + + See: + https://sourceforge.net/projects/g-manual-duplex/ + + Install: + $ make + $ su + # make install -OR- $ sudo make install + [logout] + [login] + + Then: + Using the Gnome 2 or Gnome-3 Classic (fallback) GUI: + 1a) System Tools -> Gnome Manual Duplex + - OR - + 1b) Add to Panel -> Gnome Manual Duplex applet -> Add + 2) Print -> GnomeManualDuplex (Virtual Printer) -> Print + + Using the Gnome 3 Shell GUI: + 1) $ gnome-session-properties + Startup Programs -> GnomeManualDuplex -> Enable + [logout][login] + 2) Print -> GnomeManualDuplex (Virtual Printer) -> Print + + Works with *.ps and *.pdf files. + Works with Gnome-2 or Gnome-3. + + - Print odd pages + - Wait for confimation message + - Insert in the same orientation into the printer + - Print reverse even pages + + Howto (video): + http://www.youtube.com/watch?v=c4Ghomz6RQI + + -OR- + $ psmandup [options] file.ps + + Ref: + Fedora: # yum install a2ps + Ubuntu: $ sudo apt-get install a2ps + + -OR- (Gnome) + Print -> Page Setup -> Only print -> Odd Sheets + + then: + + Print -> Page Setup -> Only print -> Even Sheets + + -OR- (Gnome) + Print -> Job -> Odd Pages + + then: + + Print -> Job -> Even Pages + + -OR- (KDE) + Okular -> Print -> Copies -> Page Set -> Odd Pages + + then: + + Okular -> Print -> Copies -> Page Set -> Even Pages + + Ref: + http://bugzilla.gnome.org/show_bug.cgi?id=520598 + +UPDATE +------ + Here are handy lines you can click on to get the latest version: + + http://foo2zjs.rkkda.com/ + wget http://foo2zjs.rkkda.com/foo2zjs.tar.gz + + My advice: update early and often!!!! + +UNINSTALLING +------------ + This will uninstall everything from your system. + + $ su + # make uninstall + +BUG REPORTS +----------- + PLEASE use the forums at: + http://foo2zjs.rkkda.com/forum/index.php + + I do not read or reply to HTML email or messages sent under an alias. + I failed out of french class, so don't even think about sending + me email in anything but English. + + Rick Richardson + +DEVELOPER AND DEBUGGING TIPS +---------------------------- + If you want to work on this program, I recommend creating a "raw" + printer queue directed at the printer, with no protocol conversions. + OR, simple copy the file to /dev/usb/lp0 (USB) or nc (netcat) the + file (network). + + Then, you can use the "foo2zjs-wrapper" program to convert Postscript + test programs to ZjS format, and inspect them with "zjsdecode" before + deciding whether to print them or not. For example: + + foo2zjs-wrapper testpage.ps > testpage.zm + foo2zjs-wrapper -c testpage.ps > testpage.zc + + zjsdecode < testpage.zm + zjsdecode < testpage.zc + + lpr -Praw testpage.zm + OR + cp testpage.zm /dev/usb/lp0 + OR + nc 192.168.1.NNN 9100 < testpage.zm + + Same thing for the other drivers, e.g. ... + + foo2hiperc-wrapper testpage.ps > testpage.hc + hipercdecode < testpage.hc + nc 192.168.1.NNN 9100 < testpage.hc + + If the printer is an HP LaserJet 10xx or P1xxx and needs to have the + firmware downloaded, this will tell you (P1006): + Before: + usb_printerid /dev/usb/lp0 + MFG:Hewlett-Packard;MDL:HP LaserJet P1006;CMD:ACL;CLS:PRINTER;\ + DES:HP LaserJet P1006; + + After: + usb_printerid /dev/usb/lp0 + MFG:Hewlett-Packard;MDL:HP LaserJet P1006;CMD:ACL;CLS:PRINTER;\ + DES:HP LaserJet P1006;FWVER:20080415; + +CUSTOM ICC/ICM COLOR PRINTER PROFILE (BUY) +------------------------------------------ + + I need: + Dell 1355 or Xerox 6015 default resolution + Samsung CLP-315 default resolution + Samsung CLP-325 default resolution + Samsung CLP-360 or 365 default resolution + Samsung CLP-600 default resolution + Samsung CLP-610 default resolution + Samsung CLP-620 default resolution + HP Color LaserJet 1500 default resolution + HP Color LaserJet CP1215 default resolution, 1-bit and 2-bit + HP Color LaserJet 2600n 2-bit, default resolution + + NOTE: + This works only if you have ghostscript 8.x. If you have gs 9.x, then + read "GHOSTSCRIPT BUGS" and prepare /usr/bin/gs.foo from gs 8.x. + + 0) Pick a vendor, e.g. + google: "Custom Printer Profiles" + + MadManChan's Custom Printer Profiles + http://people.csail.mit.edu/ericchan/photos/profiles.html + Cost: 20 dollars + + PC35 PhotoLab Custom Printer Profiling Services + http://printerprofiles.homestead.com/ + Cost: 30 dollars + + Cathy's Profiles + http://www.cathysprofiles.com/ + Cost: 35 dollars + + "Custom ICC ICM colour printer profile RGB or CMYK" + Seller: personalised101 + http://stores.ebay.ie/The-Graphics-Depot + Cost: 10 pounds + + "We Create a Custom ICC Profile for Your Printer-" + Seller: fotojimbo + http://search.ebay.com/_W0QQsassZfotojimbo + Cost: 10 dollars + + "Custom Color ICC Profile Printer Epson HP Canon 3800" + Seller: Booksmart Studio + http://stores.shop.ebay.com/Booksmart-Studio + Cost: 25 dollars + + 1) Convert the vendor sheet(s) from *.tif to page*.ps (OPTIONAL) + + $ gimp + + OR + + Preferred, using ImageMagick's "convert" + $ convert Color\ Patch\ RGB\ \(Page\ 1\).tif page1.ps + $ convert Color\ Patch\ RGB\ \(Page\ 2\).tif page2.ps + + OR + + From *.jpg to *.ps + $ convert a300DPI_i1-RGB-1.5.jpg -rotate 90 -density 300x300 \ + -quality 100 page1.ps + + 2) Print the Postscript vendor sheet(s) with NO color correction: + + $ foo2hp2600-wrapper -c -C10 -Gnone.icm page1.ps > test1.prn + + $ nc 192.168.1.xxxxxxx 9100 < test1.prn + OR + $ cp test1.prn /dev/usb/lp0 + + repeat for page2.ps (if necessary). + + 3) Send them to the vendor by POSTAL MAIL + + 4) Get back *.icc/*.icm profile by EMAIL or WEB + + 5) Put it in /usr/share/foo2hp/icm/testing.icm + + 6) Print a test picture: + + $ foo2hp2600-wrapper -c -C10 -Gtesting.icm \ + picture.ps > picture.prn + + $ nc 192.168.1.xxxxxxx 9100 < picture.prn + OR + $ cp picture.prn /dev/usb/lp0 + + 7) If it is OK, send "testing.icm" to rick.richardson@comcast.net + for inclusion in foo2zjs. + + Other printers: use foo2qpdl-wrapper and /usr/share/foo2qpdl/icm/ + Other printers: use foo2lava-wrapper and /usr/share/foo2lava/icm/ + +CUSTOM ICC/ICM COLOR PRINTER PROFILE (ARGYLL) +--------------------------------------------- + NOTE: + This works only if you have ghostscript 8.x. If you have gs 9.x, then + read "GHOSTSCRIPT BUGS" and prepare /usr/bin/gs.foo from gs 8.x. + + Reference: + firefox http://www.xritephoto.com/html/colormunkisplash.htm + firefox http://www.argyllcms.com/ + man printer-profile + + DON'T DO THIS ON A 32-BIT (i386) PROCESSOR! + Ghostscript (8.63) has problems. Weird color profile data. + + ONLY DO THIS ON A 64-BIT (x86_64)PROCESSOR. + But, you can use the color profile on i386 and x86_64. + + YOU HAVE BEEN WARNED!!! + + Execute: + $ man printer-profile + $ printer-profile manuf model [rgb|cmyk] [patches] [ink-limit] + + If it is OK, send "testing.icm" to rick.richardson@comcast.net + for inclusion in foo2zjs. diff --git a/INSTALL.in b/INSTALL.in new file mode 100644 index 0000000..723ddca --- /dev/null +++ b/INSTALL.in @@ -0,0 +1,934 @@ +INSTALLATION +------------ +Unpack: + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + +(Optional) Uninstall: + $ su OR $ sudo make uninstall + # make uninstall + +Compile: + $ make + +Get extra files from the web, such as .ICM profiles (for color correction) +and firmware. Select the model number for your printer: + $ ./getweb 1025 # Get HP LaserJet Pro CP1025nw .ICM files + $ ./getweb 1215 # Get HP Color LaserJet CP1215 .ICM files + $ ./getweb 1500 # Get HP Color LaserJet 1500 .ICM files + $ ./getweb 1600 # Get HP Color LaserJet 1600 .ICM files + $ ./getweb 2600n # Get HP Color LaserJet 2600n .ICM files + + $ ./getweb 1600w # Get Konica Minolta magicolor 1600W .ICM files + $ ./getweb 1680 # Get Konica Minolta magicolor 1680MF .ICM files + $ ./getweb 1690 # Get Konica Minolta magicolor 1690MF .ICM files + $ ./getweb 2480 # Get Konica Minolta magicolor 2480 MF .ICM files + $ ./getweb 2490 # Get Konica Minolta magicolor 2490 MF .ICM files + $ ./getweb 2530 # Get Konica Minolta magicolor 2530 DL .ICM files + $ ./getweb 4690 # Get Konica Minolta magicolor 4690MF .ICM files + $ ./getweb 110 # Get Oki C110 .ICM files + $ ./getweb 6115 # Get Xerox Phaser 6115MFP .ICM files + $ ./getweb 6121 # Get Xerox Phaser 6121MFP.ICM files + + $ ./getweb cpwl # Get Minolta Color PageWorks/Pro L .ICM files + $ ./getweb 2200 # Get Minolta/QMS magicolor 2200 DL .ICM files + $ ./getweb 2300 # Get Minolta/QMS magicolor 2300 DL .ICM files + $ ./getweb 2430 # Get Konica Minolta magicolor 2430 DL .ICM files + + $ ./getweb 300 # Get Samsung CLP-300 .ICM files + $ ./getweb 315 # Get Samsung CLP-315 .ICM files + $ ./getweb 325 # Get Samsung CLP-325 .ICM files + $ ./getweb 360 # Get Samsung CLP-360 .ICM files + $ ./getweb 365 # Get Samsung CLP-365 .ICM files + $ ./getweb 600 # Get Samsung CLP-600 .ICM files + $ ./getweb 610 # Get Samsung CLP-610 .ICM files + $ ./getweb 2160 # Get Samsung CLX-2160 .ICM files + $ ./getweb 3160 # Get Samsung CLX-3160 .ICM files + $ ./getweb 3175 # Get Samsung CLX-3175 .ICM files + $ ./getweb 3185 # Get Samsung CLX-3185 .ICM files + $ ./getweb 6110 # Get Xerox Phaser 6110 and 6110MFP .ICM files + + $ ./getweb 500 # Get Lexmark C500 .ICM files + + $ ./getweb 301 # Get Oki C301dn .ICM files + $ ./getweb c310 # Get Oki C310dn .ICM files + $ ./getweb c511 # Get Oki C511dn .ICM files + $ ./getweb c810 # Get Oki C810 .ICM files + $ ./getweb 3200 # Get Oki C3200 .ICM files + $ ./getweb 3300 # Get Oki C3300 .ICM files + $ ./getweb 3400 # Get Oki C3400 .ICM files + $ ./getweb 3530 # Get Oki C3530 MFP .ICM files + $ ./getweb 5100 # Get Oki C5100 .ICM files + $ ./getweb 5200 # Get Oki C5200 .ICM files + $ ./getweb 5500 # Get Oki C5500 .ICM files + $ ./getweb 5600 # Get Oki C5600 .ICM files + $ ./getweb 5800 # Get Oki C5800 .ICM files + + $ ./getweb 160 # Get Olivetti d-Color P160W .ICM files + + $ ./getweb 1000 # Get HP LaserJet 1000 firmware file + $ ./getweb 1005 # Get HP LaserJet 1005 firmware file + $ ./getweb 1018 # Get HP LaserJet 1018 firmware file + $ ./getweb 1020 # Get HP LaserJet 1020 firmware file + + $ ./getweb P1005 # Get HP LaserJet P1005 firmware file + $ ./getweb P1006 # Get HP LaserJet P1006 firmware file + $ ./getweb P1007 # Get HP LaserJet P1007 firmware file + $ ./getweb P1008 # Get HP LaserJet P1008 firmware file + $ ./getweb P1505 # Get HP LaserJet P1505 firmware file + +Install driver, foomatic XML files, PPD files, and extra files: + $ su OR $ sudo make install + # make install + +(Optional) Install hotplug (for HP LJ 1000/1005/1018/1020/P100[5678]/P1505): + $ su OR $ sudo make install-hotplug + # make install-hotplug + + Unplug and re-plug the USB printer + +If you use CUPS to manage your printers, you must restart cupsd: + # make cups OR $ sudo make cups + +Test operation of programs. Skip this if you don't have the exact same +version of Ghostscript that I have, Fedora ghostscript 8.71-16.fc14, because +it will not pass since different versions of Ghostscript generate different +raster images: + # make test + +Create printers (Fedora 6/7/.../25 and Ubuntu 7.10/8.x/.../16.x): + # system-config-printer + +Create printers (Redhat 7.2/7.3/8.0/9.0, Fedora Core 1-5): + # printconf-gui + +Create printers (Mandrake/Manrivia) + # printerdrake + +Create printers (openSUSE 10.x/11.x) + # yast2 printer + +Create printers (Ubuntu 5.10/6.06/6.10/7.04) + $ sudo gnome-cups-manager + $ sudo make cups # Ubuntu has a bug in gnome-cups-manager + + NOTE: to edit a queue hit "Properties" (click right mouse button). + +Create printers (Debian) + Connect with a web browser to: + http://localhost:631 + And configure printer (HP example shown) to: + HP LaserJet 2600n, Foomatic + foo2zjs (en) + Then edit "Manage Printers->Configure Printer" to suit you, + such as "Page Size" or "Color Mode". + +Create printers (Solaris 11+) + # printmgr + +Create printers (command line using CUPS) + # lpadmin -p "NAME" -v "URI" -E -P file.ppd.gz + i.e. + # lpadmin -p hp1020 -v "usb://HP/LaserJet%201020" -E \ + -P /usr/share/cups/model/HP-LaserJet_1020.ppd.gz + Set the default: + # lpadmin -d "NAME" + +Create at least one queue for monochrome, and another queue +for color printing. Create the queues, then edit them and +set the "device options" as desired. + +For a networked Minolta/QMS 2300 DL, I used a "Queue Type" +of "Unix Printer (LPD)", and set the "Server" to the IP address +of the printer, and the "Queue" to "lp". + +For a networked HP Color Laserjet 2600n, I used a "Queue Type" +of "Networked JetDirect", and set the "Printer" to the IP address +of the printer, and the "Port" to "9100". + +GHOSTSCRIPT BUGS +---------------- + * ghostscript 8.64 is broken w.r.t. color. Don't use! + + * ghostscript 9.00 is broken w.r.t. fonts in landscape mode. + + * ghostscript 9.+ is broken w.r.t. color. Don't use + + * Well Tempered Screening (WTS) works with ghostscript 8.54 thru 8.70+. + So if you want BEST COLORS, you'll have to install gs 8.54 or better + if you don't have it. + + OPTIONAL: + # yum install cups-devel + -OR- + $ sudo apt-get install cups-dev + + $ gs --version + 8.15.2 + + $ wget "http://ghostscript.com/releases/ghostscript-8.71.tar.gz" + $ tar zxf ghostscript-8.71.tar.gz + $ cd ghostscript-8.71 + $ ./autogen.sh + $ make + $ su OR $ sudo cp bin/gs /usr/bin/gs.foo + # cp bin/gs /usr/bin/gs.foo + + (Optional) + # make install OR $ sudo make install + + $ gs.foo --version + 8.71 + + If that doesn't compile (e.g. Ubuntu 11.10+), try this: + $ cd ghostscript-8.71 + $ ./configure --without-jbig2dec + $ make CFLAGS+="-DHAVE_SYS_TIME_H=1" + + * Halftoning Bug: + "The problems with WTS are primarily that it seems to fall down + on the halftone generation for some angles when the lpi is high for + the current resolution." - Ray Johnston + + So choose Standard, Accurate Screens, or reduce the resolution to + 600x600. + + * Ghostscript before 8.55 has a problem with ICM files and 64-bit gcc. + It causes a segfault with km2430_2.icm. So don't select that one. + +FEDORA NOTES +------------ + Install tix, foomatic\*, and system-config-printer FIRST: + # yum install tix foomatic\* system-config-printer + + If you are using a USB printer AND Fedora 12+, do this: + + # grep udev-configure-printer /var/log/messages + /var/log/messages:Jan 23 07:32:54 dual udev-configure-printer: \ + invalid or missing IEEE 1284 Device ID + + # rpm -e --nodeps system-config-printer-udev + + # shutdown -r now + + Power off then on the printer. + + Ref: + http://bugzilla.redhat.com/show_bug.cgi?id=558162 + +UBUNTU NOTES +------------ + Install build-essential, tix, foomatic-filters, groff, dc FIRST: + $ sudo apt-get install build-essential tix foomatic-filters groff dc + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ sudo make uninstall + $ make + $ ./getweb 1020 + OR other printer + $ sudo make install install-hotplug cups + + For 7.10 and later users: + $ sudo system-config-printer + + For 5.10/6.06/6.10/7.04 users: + $ sudo gnome-cups-manager + [configure ColorMode = Color if a color printer] + $ sudo make cups + + Ubuntu has a bug in gnome-cups-manager with Color, so you must + restart cups. No other distro has this bug. + + If that doesn't work, then fire up: + $ firefox http://localhost:631 + + And click on: + Printers -> Set Printer Options -> Color Mode -> Color + Then click on: + Set Printer Options + +DEBIAN NOTES +------------ + Install build-essential, tix, foomatic-filters, groff, cupsys, dc FIRST: + $ su + # apt-get install build-essential tix foomatic-filters groff dc + # apt-get install cups # For all others + OR + # apt-get install cupsys # For lenny and earlier + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ make + $ ./getweb 1020 + OR other printer + $ su + # make install install-hotplug cups + + $ firefox http://localhost:631 + +OPENSUSE 1x.x NOTES +------------------- + Do this: + + # zypper install make gcc + + # zypper service-add \ + http://download.opensuse.org/repositories/Printing/openSUSE_11.3/ \ + Printing + # zypper up -r Printing -t package + + Then install using the above instructions. + +ACER ASPIRE ONE NOTES +--------------------- + + Ref: http://the.taoofmac.com/media/Acer/Aspire\ One/AA1notes.htm + + It is a version of Fedora. + + Get a shell by typing Alt+F2 then Return. + + $ su + # yum install make gcc + + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ make + $ ./getweb 1020 + OR other printer, e.g. 2600n + $ su + # make install install-hotplug cups + + +ASUS EEE PC NOTES +----------------- + + It is a version of Xandros. First: + + Get a shell by typing ctrl-alt-T + $ sudo su - + # vi or kwrite /etc/apt/sources.list + add the following line: + deb ftp://ftp.us.debian.org/debian stable main contrib non-free + # apt-get -f install + # apt-get install wget + # apt-get install build-essential + + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + $ make + $ ./getweb 1020 + OR other printer, e.g. 2600n + $ sudo make install install-hotplug cups + + Then use the "Add Printer" GUI. + +MAC OS X NOTES +--------------- + Please read the detailed installation instructions by Clint Morgan + and Rick Richardson in the file INSTALL.osx. + +FREEBSD NOTES +------------- + You need the following packages before you start the "make": + # pkg_add -r wget + # pkg_add -r gmake + # pkg_add -r ghostscript-gnu + # pkg_add -r cups + # pkg_add -r foomatic-filters + # pkg_add -r unzip + + Use "gmake" instead of "make". E.G. gmake; ./getweb XXX; gmake install + + USB NOTES FOR FREEBSD 8.0 AND GREATER + ------------------------------------- + $ gmake + $ ./getweb 1020 + OR other printer, e.g. 2600n + # gmake install install-hotplug + # ./freebsd-install + + Use: + usb:/dev/ulpt0 Device with reset #0 + usb:/dev/unlpt0 Device without reset #0 + usb:/dev/ulpt1 Device with reset #1 + usb:/dev/unlpt1 Device without reset #1 + for the URI. + + More information: + http://menhennitt.com.au/wordpress/2009/09/27/printing-to-an-hp-laserjet-1020-from-freebsd-8-using-cups-and-foo2zjs + http://farid.hajji.name/blog/2010/02/02/printing-woes-on-freebsd-8-with-cups/ + + USB NOTES FOR FREEBSD 7.x AND LESSER + ------------------------------------ + - Build the kernel without the ulpt driver. + e.g. + # vi /usr/src/sys/i386/conf/GENERIC + comment out 'device ulpt' + # cd /usr/src/ + # make buildkernel KERNCONF=GENERIC + # make installkernel KERNCONF=GENERIC + reboot + + - Do one of these lines each time the HP printer is powered up: + # cat /usr/share/foo2zjs/firmware/sihp1018.dl > /dev/ugen0.1 + # cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/ugen0.1 + + More information: + http://www.webmiscreants.com/index.php?page=howto_P1006 + +OPENBSD NOTES +------------- + You need the following packages before you start the "make": + # pkg_add wget + # pkg_add gmake + # pkg_add -i ghostscript + # pkg_add cups + # pkg_add unzip + + Use "gmake" instead of "make". E.G. gmake; ./getweb XXX; gmake install + + USB NOTES FOR OPENBSD + - Build the kernel without the ulpt driver. + e.g. + # vi /usr/src/sys/i386/conf/GENERIC + comment out 'device ulpt' + # cd /usr/src/ + # make buildkernel KERNCONF=GENERIC + # make installkernel KERNCONF=GENERIC + reboot + + - Do one of these lines each time the printer is powered up: + # cat /usr/share/foo2zjs/firmware/sihp1018.dl > /dev/ugen0.1 + # cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/ugen0.1 + # cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/ugen0.1 + +OPENSOLARIS, SOLARIS EXPRESS DEVELOPER EDITION 9/07, Solaris 11+ NOTES +---------------------------------------------------------------------- + Use "bash" for your shell. Only network printers are supported. + + $ export PATH=$PATH:/sbin:/usr/sbin:/usr/sfw/bin:/opt/sfw/bin + + Do this: + + [ Load CD Solaris_Software_Companion] + $ cd /media/S10_807_SOFTWARE_COMPANION/Solaris_Software_Companion/Solaris_i386/Packages + $ su root -c "/usr/bin/bash" + # pkgadd -d `pwd` SFWgroff + # pkgadd -d `pwd` SFWgawk + + OR + Browse to: + http://pkg.opensolaris.org/release/en/index.shtml + and Search or Browse Packages and download: + + SUNWscp + SUNWgawk + SUNWgroff + + Then: + + $ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz + $ tar zxf foo2zjs.tar.gz + $ cd foo2zjs + + $ gmake + $ ./getweb 2530 + OR other printer + + $ su root -c "/usr/bin/bash" + # gmake install + # printmgr + + To see a screen to the GUI: + http://foo2lava.rkkda.com/solaris/ + + NOTE: you cannot see the printer options (Paper Source, Paper Type, + Paper Media, Color Mode, ICM, etc.). There is NO GUI to do it!!! + Sorry. + +MINOLTA-QMS 2200/2300 DL NOTES +------------------------------ + Use the network interface if you can. These printers understand Unix + LPD printer server protocol. So when setting up the printer queue, + you can select "UNIX Printer (lpd queue)", set the lpd queue name to + "lp" (arbitrary), and set the "Server" to the IP address of the + printer. + + These printers also understand several other printer server protocols, + such as JetDirect and IPP, but I have not tried them. In any case, + I'm not aware of any advantages of using them over LPD. + + The USB interface on this printer will work if your printer is at + firmware revision 2.55 or later. Mine was not, but I was able to + get this firmware from the Konica Minolta Europe web site. The USA + site doesn't have it. Upgrading the firmware on your printer can + be dangerous and might turn your printer into a paperweight, so I do + not recommend it unless you need USB and are a computer expert. To + get the v2.55 firmware upgrade, try: + ./getweb 2300dl_fw + +CUPS USB NOTES +-------------- + If you are using the USB port, then the URI should be: + file:/dev/usb/lp0 OR usb:/dev/usb/lp0 + file:/dev/usb/lp1 OR usb:/dev/usb/lp1 + OR + usb://Samsung/CLP-310%20Series + usb://Samsung/CLP-310%20Series + usb://HP/Color%20LaserJet%20CP1215 + usb://HP/Color%20LaserJet%202600n + usb://HP/LaserJet%201000 + usb://HP/LaserJet%201005 + usb://HP/LaserJet%201018 + usb://HP/LaserJet%201020 + usb://HP/LaserJet%20P1005 + usb://HP/LaserJet%20P1006 + usb://HP/LaserJet%20P1007 + usb://HP/LaserJet%20P1008 + usb://HP/LaserJet%20P1505 + usb://HP/LaserJet%20Professional%20P1102w + + Don't use hp:// because that is for hplip (a closed source, + proprietary driver). + + Do a "make cups" as root if you haven't done it before. + +HP LASERJET 1000/1005/1018/1020, P1005/P1006/P1007/P1008/P1505 NOTES +-------------------------------------------------------------------- + These printers need their firmware downloaded to them every time they + are powered up. + + On Linux with USB connected printer: + If you are running Linux and the printer is connected via USB, you + can arrange for the firmware to be automatically downloaded to the + printer by performing one more installation step: + + # make install-hotplug + + Power off then on the printer. Light should flash orange for + ~5 seconds as the firmware is getting downloaded. + + On another OS or with a parallel port connected printer: + + You must send a firmware file to the printer each time you power it + up. If you downloaded the extra files for the HP above, a typical + command line to load the firmware would be ONE of these: + + # cat /usr/share/foo2zjs/firmware/sihp1000.dl > /dev/usb/lp0 + # cat /usr/share/foo2zjs/firmware/sihp1005.dl > /dev/usb/lp0 + # cat /usr/share/foo2zjs/firmware/sihp1018.dl > /dev/usb/lp0 + # cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0 + # cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/usb/lp0 + # cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/usb/lp0 + # cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/usb/lp0 + + Light should flash orange for ~5 seconds as the firmware is + getting downloaded. + + On Mac OS X: + + You must send a firmware file to the printer each time you power it + up. If you downloaded the extra files for the HP above, a typical + command line to load the firmware would be: + + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1018.dl + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1020.dl + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1005.dl + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1006.dl + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1505.dl + + -OR- + + Add a line to /etc/rc.local and reboot: + + killall osx-hplj-hotplug; \ + osx-hplj-hotplug >/tmp/osx-hplj-hotplug 2>&1 & + + -OR- + + Issue a "make install-hotplug" command: + + $ sudo make install-hotplug + + Light should flash orange for ~5 seconds as the firmware is + getting downloaded. + + Firmware Not Downloaded: + # usb_printerid /dev/usb/lp0 + GET_DEVICE_ID string: + MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS: PRINTER;\ + DES:HP LaserJet 1020; + + Firmware Downloaded: + # usb_printerid /dev/usb/lp0 + GET_DEVICE_ID string: + MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS: PRINTER;\ + DES:HP LaserJet 1020;FWVER:20050309; + + NOTE: The original HP files are named '*.img'. Sometimes HP supplies + these files ready-to-download to the printer, sometimes they are raw + ARM executables and need to have a special header added to them before + they can be downloaded. The "make install" step will use the supplied + "arm2hpdl" program to automatically detect which kind of file they are + and convert them (if needed) to the downloadable '*.dl' format. + + These printers do not have a "button" when you run out of paper. + But, there is a GNOME gui in: + + Applications -> System Tools -> HPLJ 10xx Replaced Paper + + It requires tcl, tk, and tix. Fedora 5 and later: + # yum install tcl tk tix + + or, you can simulate this by reloading the paper and doing: + + $ usb_printerid /dev/usb/lp0 + + or, you can open the print cartridge door and then close it. + +HP SMART INSTALL NOTES +---------------------- + The printers HP LaserJet Pro P1102, HP LaserJet Pro CP1025, and simliar + models have a virtual CD-ROM (a fake USB CD drive) in USB mode. You can + disable this three ways: + + Method 1: + NOTE: this is a non-open-source method! + - Connect the printer to a Windows PC and turn it on. + The fake CD-ROM appears on Windows. + - Insert the original Driver CD that ships with the printer + - Run SIUtility.exe or SIUtility64.exe from the UTIL folder and + COMPLETELY DISABLE THIS "HP SMART INSTALL" FEATURE. + + Method 2: + - Install usb_modeswitch and usb_modeswitch-data from your distro's + repository. I.E.: + # yum install usb_modeswitch usb_modeswitch-data + OR + $ sudo apt-get install usb-modeswitch-data + OR + Surf to: http://www.draisberghof.de/usb_modeswitch/ + - Power cycle the printer. + + Method 3: + NOTE: this is a non-open-source method! + - Execute: + $ wget http://hplipopensource.com/hplip-web/smartinstall/\ + SmartInstallDisable-Tool.run + $ sh SmartInstallDisable-Tool.run + +PSUTILS AND 2/4-UP CAPABILITY +----------------------------- + If you would like to use the 2-up/4-up capability, then you need to + get and install Angus Duggan's excellent psutils package. You can + find the source code for psutils here: + + http://knackered.knackered.org/angus/psutils/index.html + + Or an RPM here: + + http://rpmfind.net/linux/rpm2html/search.php?query=psutils + +CUSTOM PAGE SIZE +---------------- + + Append "PageSize=Custom.MMMxNNNin" to the lpr command. E.G. + + $ lpr -P hp2600 -o media=letter -o PageSize=Custom.4x6in ~/testpage.ps + $ lpr -P hp2600 -o media=letter -o PageSize=Custom.10x15cm ~/testpage.ps + $ lpr -P hp1020 -o media=letter -o PageSize=Custom.4x6in ~/testpage.ps + + Or, use a GUI that allows the custom size parameters, e.g. + "evince" - PostScript and PDF File Viewer. + +LANDSCAPE ORIENTATION +--------------------- + This driver just prints Postscript and doesn't know what the + orientation is (*). Other higher level programs format your + data into Postscript, e.g CUPS. + + The CUPS -o landscape option will rotate the page 90 degrees to print + in landscape orientation: + + $ lp -o landscape filename + $ lpr -o landscape filename + + (*) except for N-up printing, because psnup (from psutils) requires it! + +SET DEFAULT MEDIA WITH CUPS +--------------------------- + $ sudo + # lpoptions -o media=A4 + -OR- + # lpoptions -o media=Letter + +MANUAL DUPLEX +------------- + + See: + https://sourceforge.net/projects/g-manual-duplex/ + + Install: + $ make + $ su + # make install -OR- $ sudo make install + [logout] + [login] + + Then: + Using the Gnome 2 or Gnome-3 Classic (fallback) GUI: + 1a) System Tools -> Gnome Manual Duplex + - OR - + 1b) Add to Panel -> Gnome Manual Duplex applet -> Add + 2) Print -> GnomeManualDuplex (Virtual Printer) -> Print + + Using the Gnome 3 Shell GUI: + 1) $ gnome-session-properties + Startup Programs -> GnomeManualDuplex -> Enable + [logout][login] + 2) Print -> GnomeManualDuplex (Virtual Printer) -> Print + + Works with *.ps and *.pdf files. + Works with Gnome-2 or Gnome-3. + + - Print odd pages + - Wait for confimation message + - Insert in the same orientation into the printer + - Print reverse even pages + + Howto (video): + http://www.youtube.com/watch?v=c4Ghomz6RQI + + -OR- + $ psmandup [options] file.ps + + Ref: + Fedora: # yum install a2ps + Ubuntu: $ sudo apt-get install a2ps + + -OR- (Gnome) + Print -> Page Setup -> Only print -> Odd Sheets + + then: + + Print -> Page Setup -> Only print -> Even Sheets + + -OR- (Gnome) + Print -> Job -> Odd Pages + + then: + + Print -> Job -> Even Pages + + -OR- (KDE) + Okular -> Print -> Copies -> Page Set -> Odd Pages + + then: + + Okular -> Print -> Copies -> Page Set -> Even Pages + + Ref: + http://bugzilla.gnome.org/show_bug.cgi?id=520598 + +UPDATE +------ + Here are handy lines you can click on to get the latest version: + + ${URLZJS}/ + wget ${URLZJS}/foo2zjs.tar.gz + + My advice: update early and often!!!! + +UNINSTALLING +------------ + This will uninstall everything from your system. + + $ su + # make uninstall + +BUG REPORTS +----------- + PLEASE use the forums at: + http://foo2zjs.rkkda.com/forum/index.php + + I do not read or reply to HTML email or messages sent under an alias. + I failed out of french class, so don't even think about sending + me email in anything but English. + + Rick Richardson + +DEVELOPER AND DEBUGGING TIPS +---------------------------- + If you want to work on this program, I recommend creating a "raw" + printer queue directed at the printer, with no protocol conversions. + OR, simple copy the file to /dev/usb/lp0 (USB) or nc (netcat) the + file (network). + + Then, you can use the "foo2zjs-wrapper" program to convert Postscript + test programs to ZjS format, and inspect them with "zjsdecode" before + deciding whether to print them or not. For example: + + foo2zjs-wrapper testpage.ps > testpage.zm + foo2zjs-wrapper -c testpage.ps > testpage.zc + + zjsdecode < testpage.zm + zjsdecode < testpage.zc + + lpr -Praw testpage.zm + OR + cp testpage.zm /dev/usb/lp0 + OR + nc 192.168.1.NNN 9100 < testpage.zm + + Same thing for the other drivers, e.g. ... + + foo2hiperc-wrapper testpage.ps > testpage.hc + hipercdecode < testpage.hc + nc 192.168.1.NNN 9100 < testpage.hc + + If the printer is an HP LaserJet 10xx or P1xxx and needs to have the + firmware downloaded, this will tell you (P1006): + Before: + usb_printerid /dev/usb/lp0 + MFG:Hewlett-Packard;MDL:HP LaserJet P1006;CMD:ACL;CLS:PRINTER;\ + DES:HP LaserJet P1006; + + After: + usb_printerid /dev/usb/lp0 + MFG:Hewlett-Packard;MDL:HP LaserJet P1006;CMD:ACL;CLS:PRINTER;\ + DES:HP LaserJet P1006;FWVER:20080415; + +CUSTOM ICC/ICM COLOR PRINTER PROFILE (BUY) +------------------------------------------ + + I need: + Dell 1355 or Xerox 6015 default resolution + Samsung CLP-315 default resolution + Samsung CLP-325 default resolution + Samsung CLP-360 or 365 default resolution + Samsung CLP-600 default resolution + Samsung CLP-610 default resolution + Samsung CLP-620 default resolution + HP Color LaserJet 1500 default resolution + HP Color LaserJet CP1215 default resolution, 1-bit and 2-bit + HP Color LaserJet 2600n 2-bit, default resolution + + NOTE: + This works only if you have ghostscript 8.x. If you have gs 9.x, then + read "GHOSTSCRIPT BUGS" and prepare /usr/bin/gs.foo from gs 8.x. + + 0) Pick a vendor, e.g. + google: "Custom Printer Profiles" + + MadManChan's Custom Printer Profiles + http://people.csail.mit.edu/ericchan/photos/profiles.html + Cost: 20 dollars + + PC35 PhotoLab Custom Printer Profiling Services + http://printerprofiles.homestead.com/ + Cost: 30 dollars + + Cathy's Profiles + http://www.cathysprofiles.com/ + Cost: 35 dollars + + "Custom ICC ICM colour printer profile RGB or CMYK" + Seller: personalised101 + http://stores.ebay.ie/The-Graphics-Depot + Cost: 10 pounds + + "We Create a Custom ICC Profile for Your Printer-" + Seller: fotojimbo + http://search.ebay.com/_W0QQsassZfotojimbo + Cost: 10 dollars + + "Custom Color ICC Profile Printer Epson HP Canon 3800" + Seller: Booksmart Studio + http://stores.shop.ebay.com/Booksmart-Studio + Cost: 25 dollars + + 1) Convert the vendor sheet(s) from *.tif to page*.ps (OPTIONAL) + + $ gimp + + OR + + Preferred, using ImageMagick's "convert" + $ convert Color\ Patch\ RGB\ \(Page\ 1\).tif page1.ps + $ convert Color\ Patch\ RGB\ \(Page\ 2\).tif page2.ps + + OR + + From *.jpg to *.ps + $ convert a300DPI_i1-RGB-1.5.jpg -rotate 90 -density 300x300 \ + -quality 100 page1.ps + + 2) Print the Postscript vendor sheet(s) with NO color correction: + + $ foo2hp2600-wrapper -c -C10 -Gnone.icm page1.ps > test1.prn + + $ nc 192.168.1.xxxxxxx 9100 < test1.prn + OR + $ cp test1.prn /dev/usb/lp0 + + repeat for page2.ps (if necessary). + + 3) Send them to the vendor by POSTAL MAIL + + 4) Get back *.icc/*.icm profile by EMAIL or WEB + + 5) Put it in /usr/share/foo2hp/icm/testing.icm + + 6) Print a test picture: + + $ foo2hp2600-wrapper -c -C10 -Gtesting.icm \ + picture.ps > picture.prn + + $ nc 192.168.1.xxxxxxx 9100 < picture.prn + OR + $ cp picture.prn /dev/usb/lp0 + + 7) If it is OK, send "testing.icm" to rick.richardson@comcast.net + for inclusion in foo2zjs. + + Other printers: use foo2qpdl-wrapper and /usr/share/foo2qpdl/icm/ + Other printers: use foo2lava-wrapper and /usr/share/foo2lava/icm/ + +CUSTOM ICC/ICM COLOR PRINTER PROFILE (ARGYLL) +--------------------------------------------- + NOTE: + This works only if you have ghostscript 8.x. If you have gs 9.x, then + read "GHOSTSCRIPT BUGS" and prepare /usr/bin/gs.foo from gs 8.x. + + Reference: + firefox http://www.xritephoto.com/html/colormunkisplash.htm + firefox http://www.argyllcms.com/ + man printer-profile + + DON'T DO THIS ON A 32-BIT (i386) PROCESSOR! + Ghostscript (8.63) has problems. Weird color profile data. + + ONLY DO THIS ON A 64-BIT (x86_64)PROCESSOR. + But, you can use the color profile on i386 and x86_64. + + YOU HAVE BEEN WARNED!!! + + Execute: + $ man printer-profile + $ printer-profile manuf model [rgb|cmyk] [patches] [ink-limit] + + If it is OK, send "testing.icm" to rick.richardson@comcast.net + for inclusion in foo2zjs. diff --git a/INSTALL.osx b/INSTALL.osx new file mode 100644 index 0000000..3ca7e65 --- /dev/null +++ b/INSTALL.osx @@ -0,0 +1,409 @@ +============================================================================== +How to Disable System Integrity Protection (rootless) in OS X El Capitan +============================================================================== + +You need to disable rootless in Mac OSX 10.11 or greater. Please follow +these instructions: + + http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/ + + $ csrutil status + System Integrity Protection status: disabled + +OR + + Doing a make install in foo2zjs directory: + + $ cd foo2zjs + $ make install PREFIX=/usr/local + + also works. + +============================================================================== +MAC OSX INSTALLATION NOTES - + +HP LaserJet 1018/1020 and Color LaserJet 1600/2600n and Color LaserJet CP1215 +Using the "MacPorts" project +============================================================================== +by Rick Richardson 07/31/11 + +1) Browse to: + http://developer.apple.com/xcode/ + OR + https://developer.apple.com/downloads/index.action + Search for "Command Line Tools" + + Download and install "Xcode 3", the C compiler. It is in the lower right: + "Looking for Xcode 3? Download Now" + + For OSX Lion (10.7) only read: + http://anatomicwax.tumblr.com/post/8064949186/installing-xcode-3-2-6-on-lion-redux + + "Installing Xcode 3.2.6 On Lion Redux + + In my last post I gave a set of simple steps that allowed one to + install Xcode 3.2.6 on Lion. In looking through the + isDevToolsCompatible function again, I noticed that it would return + true if the COMMAND_LINE_INSTALL environment variable was set no + matter what version Mac OS X you are running. + + It's now possible to greatly simplify the installation process: + + Mount the Xcode 3.2.6 DMG + Open Terminal + Enter the commands: + + export COMMAND_LINE_INSTALL=1 + open "/Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg" + + The open command will launch the installer app and allow you to + install Xcode 3.2.6 on Lion with no package modifications." + +2) Browse to: + http://www.macports.org/install.php/ + + Download and install the "Mac OS X Package (.pkg) Installer". + +3) Do: + Finder -> Applications -> Utilities -> Terminal + + If bash is not your shell (i.e. using broken tcsh): + $ chsh -s bash + $ exit + + $ export PATH=$PATH:/opt/local/bin + $ sudo port selfupdate + $ sudo port install coreutils + $ sudo port install gsed + $ sudo port install wget + $ sudo port install a2ps + $ sudo port install ghostscript + + NOTE: Use ghostscript 8.63 or before OR 8.64_2 or after if you want + color (i.e. HP CP1215, Samsung, etc..). gs 8.64_1 has a bug in it. + Reference: http://bugs.ghostscript.com/show_bug.cgi?id=690287 + + Ref: + $ port list coreutils gsed wget ghostscript + coreutils @8.10 sysutils/coreutils + gsed @4.2.1 textproc/gsed + wget @1.12 net/wget + ghostscript @9.02 print/ghostscript + +4) Browse to: + http://www.openprinting.org/download/foomatic/foomatic-filters-4.0.17.tar.gz + + and install the Foomatic-RIP (foomatic-RIP and foomatic-gswrapper): + + $ wget http://www.openprinting.org/download/foomatic/foomatic-filters-4.0.17.tar.gz + $ tar zxvf foomatic-filters-4.0.17.tar.gz + $ cd foomatic-filters-4.0.17 + $ CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib" ./configure --prefix=/usr --disable-dbus + $ make + $ sudo make install + +5) Now install foo2zjs. Browse to: + http://foo2zjs.rkkda.com/ + + and follow the instructions in http://foo2zjs.rkkda.com/INSTALL. + +6) Now configure the printer + Choose either 6a) OR 6b) + +6a) Mac OS Printer Setup Utility + Browse to: + http://foo2zjs.rkkda.com/macosx/ + +6b) CUPS UNIX Printing System + Browse to: + http://foo2zjs.rkkda.com/cups/ + + Then surf to: http://localhost:631 and follow the CUPS instructions. + + In particular, you can set up Color and other things. + + Set Printer Options -> Color Mode -> Color + +7) If HP LaserJet 10xx, you must send a firmware file to the printer each time + you power it up: + + For HP LasetJet 1018: + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1018.dl + For HP LasetJet 1020: + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1020.dl + For HP LasetJet P1005: + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1005.dl + For HP LasetJet P1006: + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1006.dl + For HP LasetJet P1505: + $ lp -oraw /usr/share/foo2xqx/firmware/sihpP1505.dl + + -OR- + + Add a line to /etc/rc.local and reboot: + + killall osx-hplj-hotplug; osx-hplj-hotplug >/tmp/osx-hplj-hotplug 2>&1 & + + -OR- + + Issue a "make install-hotplug" command: + + $ sudo make install-hotplug + + Light should flash orange for ~5 seconds as the firmware is + getting downloaded. + +Sample Screenshots: + + HP LaserJet 1020: + http://foo2zjs.rkkda.com/macosx/ + + HP Color LaserJet CP1215: + http://foo2hp.rkkda.com/macosx/ + + + +============================================================================== +MAC OSX INSTALLATION NOTES - HP LaserJet 1018/1020 +Using "fink" project +============================================================================== +by Rick Richardson 04/21/07 + +1) Browse to: + http://developer.apple.com/tools/download/ + + Download and install "Xcode 3", the C compiler. It is in the lower right: + "Looking for Xcode 3? Download Now" + +2) Browse to: + http://www.finkproject.org/download/ + + Download and install "fink". + Double-click "Fink-0.8.1-XYZ-Installer.dmg" + (where XYZ is either PowerPC or Intel) + to mount the disk image, then double-click the + "Fink 0.8.1 XYZ Installer.pkg" package inside. + Follow the instructions on screen. + $ /sw/bin/pathsetup.sh + $ fink scanpackages + $ fink index + $ sudo apt-get update + $ sudo apt-get install fink + +3) Do: + $ sudo apt-get install ghostscript + +4) Browse to: + http://www.linuxprinting.org/download/foomatic/foomatic-filters-3.0-current.tar.gz + + and install the Foomatic-RIP (foomatic-RIP and foomatic-gswrapper). + + $ tar zxvf foomatic-filters-3.0-current.tar.gz + $ cd foomatic-filters-3.0-20070820 + $ ./configure --prefix=/usr + $ make + $ sudo make install + +5) Now install foo2zjs. Browse to: + http://foo2zjs.rkkda.com/ + + and follow the instructions. + +6) Now configure the printer + Choose either 6a) OR 6b) + +6a) Mac OS Printer Setup Utility + Browse to: + http://foo2zjs.rkkda.com/macosx/ + +6b) CUPS UNIX Printing System + Browse to: + http://foo2zjs.rkkda.com/cups/ + + Then surf to: http://localhost:631 and follow the CUPS instructions. + + In particular, you can set up Color and other things. + + Set Printer Options -> Color Mode -> Color + + +7) If HP LaserJet 10xx, you must send a firmware file to the printer each time + you power it up: + + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1018.dl + -OR- + $ lp -oraw /usr/share/foo2zjs/firmware/sihp1020.dl + + + + + +=============================================================================== +MAC OSX INSTALLATION NOTES -- foo2zjs + magicolor 2200DL + OSX +=============================================================================== +by Clint Morgan - 12/29/2003 + + +FOREWORD +-------- +These notes are intended to provide specific instructions for the installation +of foo2zjs on a Mac running OS X, specifically 10.3 (Panther), so you can print +to a magicolor 2200DL. However, the same instructions should apply to other +foo2zjs compatible printers and OS X 10.2 (Jaguar) or newer. + +These notes are for a network attached printer. USB printers will not +work right now because OSX doesn't have a raw USB device like linux does. + +These instructions are as-is. I can't guarantee they will work for everyone, +that I'll be able to answer any questions, nor that any URLs mentioned in these +instructions will be valid at the time you read this. Be sure to read the +instructions that come with the various source packages mentioned below, as +they will probably help you build the specific package in question. Just +knowing that this can be done and the software required to do it will probably +be enough to get you over any hurdles. + + + +REQUIREMENTS +------------ +These requirements are listed in order of their dependencies where dependencies +exist. I have also included the version numbers I used at the time I wrote +this. The versions I choose were simply the most current that existed at the +time, in most cases anyway. The only exception is GhostScript because various +information I found said the newer version wasn't as good (something about +color if I recall correctly) + +1) Apple Developer Tools (Jaguar) or Xcode (Panther) + Go to http://www.apple.com for more information. + +2) gettext-0.13.0 (required by glib) + Go to http://www.gnu.org/software/gettext/gettext.html for more info. + +3) glib-2.2.3 (required by ghostscript) + Go to http://www.gtk.org for more info. NOTE: You do NOT need the entire + GTK+ toolkit. + +4) ghostscript-7.07 (required by foo2zjs) + Go to http://www.ghostscript.com for more info. You can also check out + sourceforge.net. NOTE: You do NOT need EPS Ghostscript in order to use + foo2zjs. You have 2 licenses of GhostScript to choose from: the AFPL + license or the GPL license. I have no idea if there is any difference in + the code, but I choose the GPL version. Also, you may find that there is + a source distribution specifically for the Mac. I couldn't get it to + build, but you're more than welcome to try. + +5) ghostscript-font-6.0 (required by you if you want ghostscript to do anything) + Go to http://www.ghostscript.com for more info. You can also check out + sourceforge.net. NOTE: The fonts are distributed as a separate package + and are NOT included with ghostscript itself.) + +6) wget-1.9 (required by foo2zjs build process) + Go to http://www.gnu.org/directory/wget.html for more info. This utility + is required by the foo2zjs build process at the time of this writing. It + is also used by another foo2zjs utility (getweb) to download ICM color + profiles. + +7) foomatic-filters-3.0.0 (required by foo2zjs) + Go to http://www.linuxprinting.org/foomatic.html for more info. All you + need is the foomatic-filters package. + +8) foo2zjs (required by you) + Go to http://foo2zjs.rkkda.com for more info. + + +NOTE: By default, most of these packages will be installed under the /usr/local +directories. I've noticed that this is not generally the trend under OS X. You +may choose to add --prefix=/usr when running configure. + + IE : sudo ./configure --prefix=/usr + + + +INSTALLATION +------------ + +1) Download, build and install the packages mentioned above. See the install + instructions for each package. + + NOTE #1: Installing software on OS X generally requires superuser privileges. + If in doubt, always prefix commands mentioned in each software + package's instructions with "sudo". + + eg: sudo ./configure --prefix=/usr + sudo make + sudo make install + + NOTE #2: When installing foomatic-filters, use the following command: + + sudo make install CUPS=/usr/libexec/cups \ + CUPS_FILTERS=/usr/libexec/cups/filter + + All on one line, of course. This will install the foomatic-rip + filter in correct place in Panther (10.3.x) and presumably in + Jaguar (10.2.x) so that CUPS can find it. + + +2) Make sure CUPS is enabled by viewing "/etc/hostconfig" and looking for + "CUPS=-YES-". If you see "CUPS=-NO-", change it and restart your Mac. + + If CUPS is already enabled, type "sudo killall -HUP cupsd" in a terminal + window to reinitialize CUPS and make the newly installed drivers available. + +3) Now let's setup the printer. However, you CANNOT use the "Printer Setup + Utility" within OSX. Unfortunately that utility does not allow you to + specify the TCP port used to communicate with the printer. Instead we + have to use the CUPS web administration utility by going to: + + http://localhost:631 + + This is apparently the default way to access the CUPS administrator 'cause + I didn't have to do anything to gain access to it. If you are attempting + to use the DB25-to-USB converter cable mentioned in the FOREWORD to hook the + printer directly to your Mac, you may be able to use the "Printer Setup + Utility" app; however, you can still use the CUPS web administration page + also. + + a) Go to http://localhost:631 + b) Click on "Manage Printers" + c) Click on "Add Printer" + d) Fill in a Name, Location and/or Description with whatever you want. + e) Select "AppSocket/HP JetDirect" from the list of devices. + f) Enter "socket://:35" as the Device URI, where + is the hostname or IP address of your printer and + 35 is the TCP port the 2200DL receives print jobs on. + + eg: socket://192.168.1.254:35 + + Note: There are some references between the 2200DL and port 9100 on the + Internet. This is a valid port for other Minolta printers, but + NOT the 2200DL. + + g) Select the make of your printer. This is "Minolta" for the 2200DL. + h) Select the model of your printer. + +HP LASERJET 1000/1005/1018/1020 NOTES +------------------------------------- + You must send a firmware file to the printer each time you power it + up. If you downloaded the extra files for the HP above, a typical + command line to load the firmware would be: + + lp -oraw /usr/share/foo2zjs/firmware/sihp1018.dl + lp -oraw /usr/share/foo2zjs/firmware/sihp1020.dl + +YOU'RE DONE +----------- +Now you should be able to use your printer. Even though you can't use the +"Printer Setup Utility" to setup the printer, the printer will show up within +it. You will still have to use the CUPS admin page to make any changes to your +printer configuration. + +BTW, Apple, Mac, Jaguar, Panther, Xcode are probably trademarks of Apple +Computer, Inc. or their respective owners. Minolta, Desklaser, magicolor, etc. +may be trademarks of Konika Minolta Printing Solutions U.S.A., Inc. or their +respective owners. And other marks may be the intellectual property of their +respective owners. + +Send any questions, suggestions and/or corrections to the email address above. +Remember, though, I may be slow to respond to some requests or may not be able +to respond to all. However, I hope this document gives you enough information +to give you a jump-start. diff --git a/INSTALL.usb b/INSTALL.usb new file mode 100644 index 0000000..78ac783 --- /dev/null +++ b/INSTALL.usb @@ -0,0 +1,43 @@ +DEBUGGING USB SUBSYSTEM +----------------------- + +0. Have HP LaserJet 1020 + +1. Install the latest http://foo2zjs.rkkda.com/foo2zjs.tar.gz + +2. Prepare the kernel + + Taken from: /usr/src/linux/Documentation/usb/usbmon.txt + + # mount -t debugfs none_debugs /sys/kernel/debug + # modprobe usbmon (if kernel loads a module) + + # ls /sys/kernel/debug/usbmon + 1s 1t 2s 2t 3s 3t 4s 4t + + # grep -B4 /proc/bus/usb/devices Laser + T: Bus=01 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#= 3 Spd=480 MxCh= 0 + D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 + P: Vendor=03f0 ProdID=2b17 Rev= 1.00 + S: Manufacturer=Hewlett-Packard + S: Product=HP LaserJet 1020 + + Bus=01 is what you fill it here, + +3. Start 'cat' + + # BUS=1t + # cat /sys/kernel/debug/usbmon/$BUS > /tmp/1.mon.out + +4. Wait for problem..... + +5. Interrupt 'cat' with Control-C + +6. File bug report at: + + RedHat: https://bugzilla.redhat.com/bugzilla/index.cgi + Mandriva: http://qa.mandriva.com/ + SUSE: http://en.opensuse.org/Submitting_Bug_Reports + Ubuntu: https://launchpad.net/distros/ubuntu/+bugs + + Do not file bug report with me. It is a kernel problem. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..addc4b5 --- /dev/null +++ b/Makefile @@ -0,0 +1,1959 @@ +LANG=C +UNAME := $(shell uname) +MACH := $(shell uname -m | sed 's/i.86/x86_32/') + +ifeq ($(UNAME),SunOS) + EUID := $(shell /usr/xpg4/bin/id -u) + SHELL=bash + CC=gcc + OLDGROFF=OLDGROFF +else + EUID := $(shell id -u) +endif + +SYSNAME := $(shell uname -n) + +# No version number yet... +VERSION=0.0 + +# Installation prefix... +PREFIX=/usr/local +PREFIX=/usr +PREFIX=$(DESTDIR)/usr + +# Pathnames for this package... +BIN=$(PREFIX)/bin +SHAREZJS=$(PREFIX)/share/foo2zjs +SHAREOAK=$(PREFIX)/share/foo2oak +SHAREHP=$(PREFIX)/share/foo2hp +SHAREXQX=$(PREFIX)/share/foo2xqx +SHARELAVA=$(PREFIX)/share/foo2lava +SHAREQPDL=$(PREFIX)/share/foo2qpdl +SHARESLX=$(PREFIX)/share/foo2slx +SHAREHC=$(PREFIX)/share/foo2hiperc +SHAREHBPL=$(PREFIX)/share/foo2hbpl +SHAREDDST=$(PREFIX)/share/foo2ddst +MANDIR=$(PREFIX)/share/man +DOCDIR=$(PREFIX)/share/doc/foo2zjs/ +INSTALL=install +ROOT=root + +# Pathnames for referenced packages... +FOODB=$(DESTDIR)/usr/share/foomatic/db/source + +# User ID's +LPuid=-oroot +LPgid=-glp +ifeq ($(UNAME),Darwin) + LPuid=-oroot + LPgid=-gwheel + #ROOT=sudo +endif +ifeq ($(UNAME),FreeBSD) + LPuid=-oroot + LPgid=-gwheel +endif +ifeq ($(UNAME),OpenBSD) + LPuid=-oroot + LPgid=-gwheel +endif +ifeq ($(UNAME),SunOS) + LPuid=-oroot + LPgid=-glp + INSTALL=/usr/ucb/install +endif +# If we aren't root, don't try to set ownership +ifneq ($(EUID),0) + LPuid= + LPgid= +endif + +# Definition of modtime() +MODTIME= date -d "1/1/1970 utc + `stat -t $$1 | cut -f14 -d' '` seconds" "+%a %b %d %T %Y" +ifeq ($(UNAME),FreeBSD) + MODTIME= stat -f "%Sm" -t "%a %b %d %T %Y" $$1 +endif +ifeq ($(UNAME),OpenBSD) + MODTIME= stat -f "%Sm" -t "%a %b %d %T %Y" $$1 +endif +ifeq ($(UNAME),Darwin) + MODTIME= stat -f "%Sm" -t "%a %b %d %T %Y" $$1 +endif +ifeq ($(UNAME),SunOS) + MODTIME= `ls -e $$1 | cut -c42-61` +endif + +# +# Files for tarball +# +NULL= +WEBFILES= \ + foo2zjs.html.in \ + style.css \ + archzjs.fig \ + 2300.png \ + 2430.png \ + 1020.png \ + foo2oak.html.in \ + archoak.fig \ + 1500.gif \ + foo2hp.html.in \ + archhp.fig \ + 2600.gif \ + foo2xqx.html.in \ + archxqx.fig \ + m1005.gif \ + foo2lava.html.in \ + archlava.fig \ + 2530.gif \ + foo2qpdl.html.in \ + archqplp.fig \ + foo2slx.html.in \ + archslx.fig \ + c500n.png \ + foo2hiperc.html.in \ + archhiperc.fig \ + c3400n.png \ + $(NULL) + +FILES = \ + README \ + README.in \ + INSTALL \ + INSTALL.in \ + INSTALL.osx \ + INSTALL.usb \ + COPYING \ + ChangeLog \ + Makefile \ + foo2zjs.c \ + foo2zjs.1in \ + jbig.c \ + jbig.h \ + jbig_ar.c \ + jbig_ar.h \ + zjsdecode.c \ + zjsdecode.1in \ + zjs.h \ + foo2hp.c \ + foo2hp.1in \ + foo2xqx.c \ + foo2xqx.1in \ + foo2lava.c \ + foo2lava.1in \ + foo2qpdl.c \ + foo2qpdl.1in \ + foo2slx.c \ + foo2slx.1in \ + foo2hiperc.c \ + foo2hiperc.1in \ + hbpl.h \ + foo2hbpl2.c \ + foo2hbpl2.1in \ + foo2ddst.c \ + foo2ddst.1in \ + cups.h \ + xqx.h \ + xqxdecode.c \ + xqxdecode.1in \ + lavadecode.c \ + lavadecode.1in \ + qpdl.h \ + qpdldecode.c \ + qpdldecode.1in \ + opldecode.c \ + opldecode.1in \ + slx.h \ + slxdecode.c \ + slxdecode.1in \ + gipddecode.c \ + gipddecode.1in \ + hbpldecode.c \ + hbpldecode.1in \ + ddst.h \ + ddstdecode.c \ + ddstdecode.1in \ + foo2zjs-wrapper.in \ + foo2zjs-wrapper.1in \ + foo2hp2600-wrapper.in \ + foo2hp2600-wrapper.1in \ + foo2xqx-wrapper.in \ + foo2xqx-wrapper.1in \ + foo2lava-wrapper.in \ + foo2lava-wrapper.1in \ + foo2qpdl-wrapper.in \ + foo2qpdl-wrapper.1in \ + foo2slx-wrapper.in \ + foo2slx-wrapper.1in \ + foo2hiperc-wrapper.in \ + foo2hiperc-wrapper.1in \ + foo2hbpl2-wrapper.in \ + foo2hbpl2-wrapper.1in \ + foo2ddst-wrapper.in \ + foo2ddst-wrapper.1in \ + gamma.ps \ + gamma-lookup.ps \ + align.ps \ + testpage.ps \ + foomatic-db/*/*.xml \ + foomatic-test \ + getweb.in \ + icc2ps/*.[ch] \ + icc2ps/*.1in \ + icc2ps/Makefile \ + icc2ps/AUTHORS \ + icc2ps/COPYING \ + icc2ps/README \ + icc2ps/README.foo2zjs \ + osx-hotplug/Makefile \ + osx-hotplug/*.m \ + osx-hotplug/*.1in \ + osx-hotplug/*.plist \ + ppd-adjust \ + PPD/*.ppd \ + crd/zjs/*.crd \ + crd/zjs/*.ps \ + crd/qpdl/*cms* \ + crd/qpdl/*.ps \ + arm2hpdl.c \ + arm2hpdl.1in \ + usb_printerid.c \ + usb_printerid.1in \ + hplj1000 \ + hplj10xx.rules* \ + msexpand \ + oak.h \ + foo2oak.c \ + foo2oak.1in \ + oakdecode.c \ + oakdecode.1in \ + foo2oak-wrapper.in \ + foo2oak-wrapper.1in \ + hiperc.h \ + hipercdecode.c \ + hipercdecode.1in \ + c5200mono.prn \ + foo2zjs-pstops.sh \ + foo2zjs-pstops.1in \ + hplj1020.desktop \ + hplj1020_icon.png \ + hplj1020_icon.gif \ + hplj10xx_gui.tcl \ + includer-man \ + macros.man \ + regress.txt \ + printer-profile.sh \ + printer-profile.1in \ + freebsd-install \ + hplj10xx.conf \ + modify-ppd \ + command2foo2lava-pjl.c \ + myftpput \ + $(NULL) + +# CUPS vars +CUPS_SERVERBIN := $(DESTDIR)$(shell cups-config --serverbin 2>/dev/null) +CUPS_DEVEL := $(shell grep cupsSideChannelDoRequest /usr/include/cups/sidechannel.h 2>/dev/null) +CUPS_GOODAPI := $(shell cups-config --api-version 2>/dev/null | sed "s/1\.[0123].*//") + +# hpclj2600n-0.icm km2430_0.icm km2430_1.icm km2430_2.icm samclp300-0.icm +# sihp1000.img sihp1005.img sihp1020.img sihp1018.img +# sihpP1005.img sihpP1006.img sihpP1505.img + +# Programs and libraries +PROGS= foo2zjs zjsdecode arm2hpdl foo2hp foo2xqx xqxdecode +PROGS+= foo2lava lavadecode foo2qpdl qpdldecode opldecode +PROGS+= foo2oak oakdecode +PROGS+= foo2slx slxdecode +PROGS+= foo2hiperc hipercdecode +PROGS+= foo2hbpl2 hbpldecode +PROGS+= gipddecode +PROGS+= foo2ddst ddstdecode +ifneq ($(CUPS_SERVERBIN),) + ifneq ($(CUPS_DEVEL),) + ifneq ($(CUPS_GOODAPI),) + PROGS+= command2foo2lava-pjl + endif + endif +endif +SHELLS= foo2zjs-wrapper foo2oak-wrapper foo2hp2600-wrapper \ + foo2xqx-wrapper foo2lava-wrapper foo2qpdl-wrapper \ + foo2slx-wrapper foo2hiperc-wrapper foo2hbpl2-wrapper \ + foo2ddst-wrapper +SHELLS+= foo2zjs-pstops +SHELLS+= printer-profile +MANPAGES= foo2zjs-wrapper.1 foo2zjs.1 zjsdecode.1 +MANPAGES+= foo2oak-wrapper.1 foo2oak.1 oakdecode.1 +MANPAGES+= foo2hp2600-wrapper.1 foo2hp.1 +MANPAGES+= foo2xqx-wrapper.1 foo2xqx.1 xqxdecode.1 +MANPAGES+= foo2lava-wrapper.1 foo2lava.1 lavadecode.1 opldecode.1 +MANPAGES+= foo2qpdl-wrapper.1 foo2qpdl.1 qpdldecode.1 +MANPAGES+= foo2slx-wrapper.1 foo2slx.1 slxdecode.1 +MANPAGES+= foo2hiperc-wrapper.1 foo2hiperc.1 hipercdecode.1 +MANPAGES+= foo2hbpl2-wrapper.1 foo2hbpl2.1 hbpldecode.1 +MANPAGES+= foo2ddst-wrapper.1 foo2ddst.1 ddstdecode.1 +MANPAGES+= gipddecode.1 +MANPAGES+= foo2zjs-pstops.1 arm2hpdl.1 usb_printerid.1 +MANPAGES+= printer-profile.1 +LIBJBG = jbig.o jbig_ar.o +BINPROGS= + +ifeq ($(UNAME),Linux) + BINPROGS += usb_printerid +endif + +# Compiler flags +#CFLAGS += -O2 -Wall -Wno-unused-but-set-variable +CFLAGS += -O2 -Wall +#CFLAGS += -g + +# +# Rules to create test documents +# +GX=10200 +GY=6600 +GXR=1200 +GYR=600 +GSOPTS= -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=letter -r$(GXR)x$(GYR) +JBGOPTS=-m 16 -d 0 -p 92 # Equivalent options for pbmtojbg + +.SUFFIXES: .ps .pbm .pgm .pgm2 .ppm .ppm2 .zjs .cmyk .pksm .zc .zm .jbg \ + .cups .cupm .1 .1in .fig .gif .xqx .lava .qpdl .slx .hc .hbpl .ddst + +.fig.gif: + fig2dev -L gif $*.fig | giftrans -t "#ffffff" -o $*.gif + +# old .fig.gif +# fig2dev -L ppm $*.fig | pnmquant -fs 256 \ +# | ppmtogif -transparent rgb:ff/ff/ff >$*.gif + +.ps.cups: + gs $(GSOPTS) -r600x600 \ + -dcupsColorSpace=6 -dcupsBitsPerColor=2 -dcupsColorOrder=2 \ + -sDEVICE=cups -sOutputFile=$*.cups $*.ps + +.ps.cupm: + gs $(GSOPTS) -r600x600 \ + -dcupsColorSpace=3 -dcupsBitsPerColor=2 -dcupsColorOrder=2 \ + -sDEVICE=cups -sOutputFile=$*.cupm $*.ps + +.ps.pbm: + gs $(GSOPTS) -sDEVICE=pbmraw -sOutputFile=$*.pbm $*.ps + +.ps.ppm: + gs $(GSOPTS) -sDEVICE=ppmraw -sOutputFile=$*.ppm $*.ps + +.ps.pgm: + gs $(GSOPTS) -sDEVICE=pgmraw -sOutputFile=- $*.ps \ + | pnmdepth 3 > $*.pgm + +.ps.pgm2: + gs.rick $(GSOPTS) -sDEVICE=pgmraw2 -sOutputFile=$*.pgm2 $*.ps + +.ps.cmyk: + gs $(GSOPTS) -sDEVICE=bitcmyk -sOutputFile=$*.cmyk $*.ps + +.ps.pksm: + gs $(GSOPTS) -sDEVICE=pksmraw -sOutputFile=$*.pksm $*.ps + +.ps.zc: + gs $(GSOPTS) -sDEVICE=bitcmyk -sOutputFile=- - < $*.ps \ + | ./foo2zjs -r1200x600 -g10200x6600 -p1 >$*.zc + +.ps.zm: + gs $(GSOPTS) -sDEVICE=pbmraw -sOutputFile=- - < $*.ps \ + | ./foo2zjs -r1200x600 -g10200x6600 -p1 >$*.zm + +.pbm.zjs: + ./foo2zjs < $*.pbm > $*.zjs + +.cmyk.zjs: + ./foo2zjs < $*.cmyk > $*.zjs + +.pksm.zjs: + ./foo2zjs < $*.pksm > $*.zjs + +.pbm.xqx: + ./foo2xqx < $*.pbm > $*.xqx + +.pbm.qpdl: + ./foo2qpdl < $*.pbm > $*.qpdl + +.pbm.slx: + ./foo2slx < $*.pbm > $*.slx + +.pbm.hc: + ./foo2hiperc < $*.pbm > $*.hc + +.pbm.hbpl: + ./foo2hbpl2 < $*.pbm > $*.hbpl + +.pbm.ddst: + ./foo2ddst < $*.pbm > $*.ddst + +# +# The usual build rules +# +all: all-test $(PROGS) $(BINPROGS) $(SHELLS) getweb \ + all-icc2ps all-osx-hotplug man doc \ + all-done + +all-test: + # + # Dependencies... + # + @if ! type $(CC) >/dev/null 2>&1; then \ + echo " ***"; \ + echo " *** Error: $(CC) is not installed!"; \ + echo " ***"; \ + echo " *** Install Software Development (gcc) package"; \ + echo " ***"; \ + exit 1; \ + fi + @if ! test -f /usr/include/stdio.h; then \ + echo " ***"; \ + echo " *** Error: /usr/include/stdio.h is not installed!"; \ + echo " ***"; \ + echo " *** Install Software Development (gcc) package"; \ + echo " *** for Ubuntu: sudo apt-get install build-essential"; \ + echo " ***"; \ + exit 1; \ + fi + @if ! type gs >/dev/null 2>&1; then \ + echo " ***"; \ + echo " *** Error: gs is not installed!"; \ + echo " ***"; \ + echo " *** Install ghostscript (gs) package"; \ + echo " ***"; \ + exit 1; \ + fi + @if ! type dc >/dev/null 2>&1; then \ + echo " ***"; \ + echo " *** Error: dc is not installed!"; \ + echo " ***"; \ + echo " *** Install dc package"; \ + echo " *** for Ubuntu: sudo apt-get install dc"; \ + echo " ***"; \ + exit 1; \ + fi + @if ! dc -V >/dev/null 2>&1; then \ + echo " ***"; \ + echo " *** Error: must install GNU dc with the -e option!"; \ + echo " ***"; \ + exit 1; \ + fi +ifeq ($(UNAME),Darwin) + @if ! type gsed >/dev/null 2>&1; then \ + echo " ***"; \ + echo " *** Error: gsed is not installed!"; \ + echo " ***"; \ + echo " *** For OSX: sudo port install gsed"; \ + echo " ***"; \ + exit 1; \ + fi +endif + # ... OK! + # + +all-done: + @echo + @echo "It is possible that certain products which can be built using this" + @echo "software module might form inventions protected by patent rights in" + @echo "some countries (e.g., by patents about arithmetic coding algorithms" + @echo "owned by IBM and AT&T in the USA). Provision of this software by the" + @echo "author does NOT include any licences for any patents. In those" + @echo "countries where a patent licence is required for certain applications" + @echo "of this software module, you will have to obtain such a licence" + @echo "yourself." + + +foo2ddst: foo2ddst.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2ddst.o $(LIBJBG) + +foo2hbpl2: foo2hbpl2.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2hbpl2.o $(LIBJBG) + +foo2hp: foo2hp.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2hp.o $(LIBJBG) + +foo2hiperc: foo2hiperc.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2hiperc.o $(LIBJBG) + +foo2lava: foo2lava.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2lava.o $(LIBJBG) + +foo2oak: foo2oak.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2oak.o $(LIBJBG) + +foo2qpdl: foo2qpdl.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2qpdl.o $(LIBJBG) + +foo2slx: foo2slx.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2slx.o $(LIBJBG) + +foo2xqx: foo2xqx.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2xqx.o $(LIBJBG) + +foo2zjs: foo2zjs.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2zjs.o $(LIBJBG) + + +foo2ddst-wrapper: foo2ddst-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2hbpl2-wrapper: foo2hbpl2-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2hp2600-wrapper: foo2hp2600-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2hiperc-wrapper: foo2hiperc-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2lava-wrapper: foo2lava-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2qpdl-wrapper: foo2qpdl-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2oak-wrapper: foo2oak-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2slx-wrapper: foo2slx-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2xqx-wrapper: foo2xqx-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2zjs-wrapper: foo2zjs-wrapper.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +foo2zjs-wrapper9: foo2zjs-wrapper9.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + + +getweb: getweb.in Makefile + [ ! -f $@ ] || chmod +w $@ + sed < $@.in > $@ \ + -e "s@\$${URLZJS}@$(URLZJS)@" \ + -e 's@^PREFIX=.*@PREFIX=$(PREFIX)@' || (rm -f $@ && exit 1) + chmod 555 $@ + +all-icc2ps: + cd icc2ps; $(MAKE) all + +all-osx-hotplug: +ifeq ($(UNAME),Darwin) + cd osx-hotplug; $(MAKE) all +endif + +ok: ok.o $(LIBJBG) + $(CC) $(CFLAGS) ok.o $(LIBJBG) -o $@ + +ddstdecode: ddstdecode.o $(LIBJBG) + $(CC) $(CFLAGS) ddstdecode.o $(LIBJBG) -o $@ + +gipddecode: gipddecode.o $(LIBJBG) + $(CC) $(CFLAGS) gipddecode.o $(LIBJBG) -o $@ + +hbpldecode: hbpldecode.o $(LIBJBG) + $(CC) $(CFLAGS) hbpldecode.o $(LIBJBG) -o $@ + +hipercdecode: hipercdecode.o $(LIBJBG) + $(CC) $(CFLAGS) hipercdecode.o $(LIBJBG) -o $@ + +lavadecode: lavadecode.o $(LIBJBG) + $(CC) $(CFLAGS) lavadecode.o $(LIBJBG) -o $@ + +oakdecode: oakdecode.o $(LIBJBG) + $(CC) $(CFLAGS) -g oakdecode.o $(LIBJBG) -o $@ + +opldecode: opldecode.o $(LIBJBG) + $(CC) $(CFLAGS) -g opldecode.o $(LIBJBG) -o $@ + +qpdldecode: qpdldecode.o $(LIBJBG) + $(CC) $(CFLAGS) qpdldecode.o $(LIBJBG) -o $@ + +splcdecode: splcdecode.o $(LIBJBG) + $(CC) $(CFLAGS) splcdecode.o $(LIBJBG) -lz -o $@ + +slxdecode: slxdecode.o $(LIBJBG) + $(CC) $(CFLAGS) slxdecode.o $(LIBJBG) -o $@ + +xqxdecode: xqxdecode.o $(LIBJBG) + $(CC) $(CFLAGS) xqxdecode.o $(LIBJBG) -o $@ + +zjsdecode: zjsdecode.o $(LIBJBG) + $(CC) $(CFLAGS) zjsdecode.o $(LIBJBG) -o $@ + +command2foo2lava-pjl: command2foo2lava-pjl.o + $(CC) $(CFLAGS) -L/usr/local/lib command2foo2lava-pjl.o -lcups -o $@ + +command2foo2lava-pjl.o: command2foo2lava-pjl.c + $(CC) $(CFLAGS) -I/usr/local/include -c command2foo2lava-pjl.c + +# +# Installation rules +# +install: all install-test install-prog install-icc2ps install-osx-hotplug \ + install-extra install-crd install-foo install-ppd \ + install-gui install-desktop install-filter \ + install-man install-doc + # + # If you use CUPS, then restart the spooler: + # make cups + # + # Now use your printer configuration GUI to create a new printer. + # + # On Redhat 7.2/7.3/8.0/9.0 and Fedora Core 1-5, run "printconf-gui". + # On Fedora 6/7/8/9/10/11/12, run "system-config-printer". + # On Mandrake, run "printerdrake" + # On Suse 9.x/10.x/11.x, run "yast" + # On Ubuntu 5.10/6.06/6.10/7.04, run "gnome-cups-manager" + # On Ubuntu 7.10/8.x/9.x, run "system-config-printer". + +install-test: + # + # Installation Dependencies... + # + @if [ -f /usr/local/libexec/cups/filter/foomatic-rip ]; then \ + : ; \ + elif [ -f /usr/libexec/cups/filter/foomatic-rip ]; then \ + : ; \ + elif [ -f /usr/lib/cups/filter/foomatic-rip ]; then \ + : ; \ + elif [ -f /usr/lib/lp/bin/foomatic-rip ]; then \ + : ; \ + elif ! type foomatic-rip >/dev/null 2>&1; then \ + echo " ***"; \ + echo " *** Error: foomatic-rip is not installed!"; \ + echo " ***"; \ + echo " *** Install foomatic package(s) for your OS"; \ + echo " ***"; \ + exit 1; \ + fi + # ... OK! + # + + +UDEVBIN=$(DESTDIR)/bin/ + +install-prog: + # + # Install driver, wrapper, and development tools + # + $(INSTALL) -d $(BIN) + $(INSTALL) -c $(PROGS) $(SHELLS) $(BIN)/ + if [ "$(BINPROGS)" != "" ]; then \ + $(INSTALL) -d $(UDEVBIN); \ + $(INSTALL) -c $(BINPROGS) $(UDEVBIN); \ + fi + # + # Install gamma correction files. These are just templates, + # and don't actually do anything right now. If anybody wants + # to tune them or point me at a process for doing that, please... + # + $(INSTALL) -d $(SHAREZJS)/ + $(INSTALL) -c -m 644 gamma.ps $(SHAREZJS)/ + $(INSTALL) -c -m 644 gamma-lookup.ps $(SHAREZJS)/ + $(INSTALL) -d $(SHAREOAK)/ + $(INSTALL) -d $(SHAREHP)/ + $(INSTALL) -d $(SHAREXQX)/ + $(INSTALL) -d $(SHARELAVA)/ + $(INSTALL) -d $(SHAREHC)/ + +install-foo: + # + # Remove obsolete foomatic database files from previous versions + # + rm -f $(FOODB)/opt/foo2zjs-Media.xml + rm -f $(FOODB)/opt/foo2zjs-PaperSize.xml + rm -f $(FOODB)/opt/foo2zjs-Source.xml + rm -f $(FOODB)/opt/foo2zjs-DitherPPI.xml + rm -f $(FOODB)/opt/foo2zjs-Copies.xml + rm -f $(FOODB)/opt/foo2zjs-Nup.xml + rm -f $(FOODB)/opt/foo2zjs-NupOrient.xml + rm -f $(FOODB)/opt/foo2*-Quality.xml + rm -f $(FOODB)/opt/foo2hp-AlignCMYK.xml + rm -f $(FOODB)/printer/KonicaMinolta*.xml + # + # Install current database files + # + @if [ -d $(FOODB) ]; then \ + for dir in driver printer opt; do \ + echo install -d $(FOODB)/$$dir/; \ + $(INSTALL) -d $(FOODB)/$$dir/; \ + echo install -m 644 foomatic-db/$$dir/*.xml $(FOODB)/$$dir/; \ + $(INSTALL) -c -m 644 foomatic-db/$$dir/*.xml $(FOODB)/$$dir/; \ + done \ + else \ + echo "***"; \ + echo "*** WARNING! You don't have directory $(FOODB)/"; \ + echo "*** If you want support for foomatic printer configuration,";\ + echo "*** then you will have to manually install these files..."; \ + echo "***"; \ + ls foomatic-db/*/*.xml | sed 's/^/ /'; \ + echo "***"; \ + echo "*** ... wherever foomatic is stashed on your machine."; \ + echo "***"; \ + fi + # + # Clear foomatic cache and rebuild database if needed + # + rm -rf /var/cache/foomatic/*/* + rm -f /var/cache/foomatic/printconf.pickle + if [ -d /var/cache/foomatic/compiled ]; then \ + cd /var/cache/foomatic/compiled; \ + foomatic-combo-xml -O >overview.xml; \ + fi + +install-icc2ps: + # + # Install ICM to Postscript file conversion utility + # + cd icc2ps; $(MAKE) PREFIX=$(PREFIX) install + +install-osx-hotplug: +ifeq ($(UNAME),Darwin) + # + # Install Mac OSX hotplug utility + # + cd osx-hotplug; $(MAKE) PREFIX=$(PREFIX) install +endif + +install-crd: + # + # Install prebuilt CRD files (from m2300w project) + # + $(INSTALL) -d $(SHAREZJS)/ + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREZJS)/crd/ + for i in crd/zjs/*.*; do \ + $(INSTALL) -c -m 644 $$i $(SHAREZJS)/crd/; \ + done + # + # Install prebuilt CRD files for CLP-300/CLP-600 + # + $(INSTALL) -d $(SHAREQPDL)/ + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREQPDL)/crd/ + for i in crd/qpdl/*cms* crd/qpdl/*.ps; do \ + $(INSTALL) -c -m 644 $$i $(SHAREQPDL)/crd/; \ + done + +install-psfiles: + # + # Install prebuilt psfiles files (from m2300w project) + # + $(INSTALL) -d $(SHAREHP)/ + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREHP)/psfiles/ + for i in psfiles/*.*; do \ + $(INSTALL) -c -m 644 $$i $(SHAREHP)/psfiles/; \ + done + +install-extra: + # + # Install extra files (ICM and firmware), if any exist here. + # + # Get files from the printer manufacturer, i.e. www.minolta-qms.com, + # or use the "./getweb" convenience script. + # + $(INSTALL) -d $(SHAREZJS)/ + # foo2zjs ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREZJS)/icm/ + for i in DL*.icm CP*.icm km2430*.icm hp-cp1025*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHAREZJS)/icm/; \ + fi; \ + done + # foo2zjs Firmware files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREZJS)/firmware/ + for i in sihp1*.img; do \ + if [ -f $$i ]; then \ + base=`basename $$i .img`; \ + ./arm2hpdl $$i >$$base.dl; \ + $(INSTALL) -c -m 644 $$base.dl $(SHAREZJS)/firmware/; \ + fi; \ + done + # foo2xqx Firmware files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREXQX)/firmware/ + for i in sihpP*.img; do \ + if [ -f $$i ]; then \ + base=`basename $$i .img`; \ + ./arm2hpdl $$i >$$base.dl; \ + $(INSTALL) -c -m 644 $$base.dl $(SHAREXQX)/firmware/; \ + fi; \ + done + # foo2oak ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREOAK)/icm/ + for i in hpclj2[56]*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHAREOAK)/icm/; \ + fi; \ + done + # foo2hp ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREHP)/icm/ + for i in hpclj26*.icm km2430*.icm hp1215*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHAREHP)/icm/; \ + fi; \ + done + # foo2lava ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHARELAVA)/icm/ + for i in km-1600*.icm km2530*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHARELAVA)/icm/; \ + fi; \ + done + # foo2qpdl ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREQPDL)/icm/ + for i in samclp*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHAREQPDL)/icm/; \ + fi; \ + done + # foo2slx ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHARESLX)/icm/ + for i in lex*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHARESLX)/icm/; \ + fi; \ + done + # foo2hiperc ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREHC)/icm/ + for i in OK*.icm C3400*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHAREHC)/icm/; \ + fi; \ + done + # foo2hbpl ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREHBPL)/icm/ + for i in hbpl*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHAREHBPL)/icm/; \ + fi; \ + done + # foo2ddst ICM files (if any) + $(INSTALL) $(LPuid) $(LPgid) -m 775 -d $(SHAREDDST)/icm/ + for i in ddst*.icm; do \ + if [ -f $$i ]; then \ + $(INSTALL) -c -m 644 $$i $(SHAREDDST)/icm/; \ + fi; \ + done + +MODEL=$(PREFIX)/share/cups/model +LOCALMODEL=$(DESTDIR)/usr/local/share/cups/model +MACMODEL=/Library/Printers/PPDs/Contents/Resources +PPD=$(PREFIX)/share/ppd +VARPPD=/var/lp/ppd +install-ppd: + # + # Install PPD files for CUPS + # + export PATH=$$PATH:`pwd`:; \ + if [ -x /usr/sbin/ppdmgr -a -s $(VARPPD)/ppdcache ]; then \ + $(INSTALL) $(LPgid) -d $(VARPPD)/user; \ + cd PPD; \ + for ppd in *.ppd; do \ + manuf=`echo "$$ppd" | sed 's/-.*//'`; \ + $(INSTALL) $(LPgid) -d $(VARPPD)/user/$$manuf; \ + modify-ppd <$$ppd | gzip > $(VARPPD)/user/$$manuf/$$ppd.gz; \ + chmod 664 $(VARPPD)/user/$$manuf/$$ppd.gz; \ + done; \ + ppdmgr -u; \ + elif [ -d $(PPD) ]; then \ + find $(PPD) -name '*foo2zjs*' | xargs rm -rf; \ + find $(PPD) -name '*foo2hp*' | xargs rm -rf; \ + find $(PPD) -name '*foo2xqx*' | xargs rm -rf; \ + find $(PPD) -name '*foo2lava*' | xargs rm -rf; \ + find $(PPD) -name '*foo2qpdl*' | xargs rm -rf; \ + find $(PPD) -name '*foo2slx*' | xargs rm -rf; \ + find $(PPD) -name '*foo2hiperc*' | xargs rm -rf; \ + find $(PPD) -name '*foo2hbpl*' | xargs rm -rf; \ + find $(PPD) -name '*foo2ddst*' | xargs rm -rf; \ + [ -d $(PPD)/foo2zjs ] || mkdir $(PPD)/foo2zjs; \ + cd PPD; \ + for ppd in *.ppd; do \ + modify-ppd <$$ppd | gzip > $(PPD)/foo2zjs/$$ppd.gz; \ + chmod 664 $(PPD)/foo2zjs/$$ppd.gz; \ + done; \ + fi + # + export PATH=$$PATH:`pwd`:; \ + if [ -d $(MODEL) ]; then \ + rm -f $(MODEL)/KonicaMinolta*; \ + cd PPD; \ + for ppd in *.ppd; do \ + modify-ppd <$$ppd | gzip > $(MODEL)/$$ppd.gz; \ + chmod 664 $(MODEL)/$$ppd.gz; \ + done; \ + elif [ -d $(LOCALMODEL) ]; then \ + rm -f $(LOCALMODEL)/KonicaMinolta*; \ + cd PPD; \ + for ppd in *.ppd; do \ + modify-ppd <$$ppd | gzip > $(LOCALMODEL)/$$ppd.gz; \ + chmod 664 $(LOCALMODEL)/$$ppd.gz; \ + done; \ + elif [ -d $(MACMODEL) ]; then \ + rm -f $(MACMODEL)/KonicaMinolta*; \ + cd PPD; \ + for ppd in *.ppd; do \ + modify-ppd <$$ppd | gzip > $(MACMODEL)/$$ppd.gz; \ + chmod 664 $(MACMODEL)/$$ppd.gz; \ + done; \ + fi + +APPL=$(DESTDIR)/usr/share/applications +OLDAPPL=$(DESTDIR)/usr/share/gnome/apps/System +PIXMAPS=$(DESTDIR)/usr/share/pixmaps + +install-desktop: + # + # Install GNOME desktop + # + if [ -d $(APPL) ]; then \ + $(INSTALL) -c -m 644 hplj1020.desktop $(APPL); \ + fi + if [ -d $(OLDAPPL) ]; then \ + $(INSTALL) -c -m 644 hplj1020.desktop $(OLDAPPL); \ + fi + if [ -d $(PIXMAPS) ]; then \ + $(INSTALL) -c -m 644 hplj1020_icon.png $(PIXMAPS); \ + fi + +install-gui: + # + # Install GUI + # + $(INSTALL) -c -m 644 hplj1020_icon.gif $(SHAREZJS) + $(INSTALL) -c -m 755 hplj10xx_gui.tcl $(SHAREZJS) + + +USBDIR=/etc/hotplug/usb +UDEVDIR=/etc/udev/rules.d +LIBUDEVDIR=/lib/udev/rules.d +RULES=hplj10xx.rules +#UDEVD=/sbin/udevd +# For FreeBSD 8.0 +DEVDDIR=/etc/devd + +ifeq ($(UNAME),Darwin) +install-hotplug: install-hotplug-test install-hotplug-osx +else +install-hotplug: install-hotplug-test install-hotplug-prog +endif + +install-hotplug-test: + # + # Hotplug Installation Dependencies... + # + @if ! type ex >/dev/null 2>&1; then \ + echo " ***"; \ + echo " *** Error: "ex" is not installed!"; \ + echo " ***"; \ + echo " *** Install "vim" package(s) for your OS"; \ + echo " ***"; \ + exit 1; \ + fi + @if test -r $(LIBUDEVDIR)/*-printers.rules; then \ + echo " ***"; \ + echo " *** Error: system-config-printer-udev is installed!"; \ + echo " ***"; \ + echo " *** Remove it with: (Fedora)"; \ + echo " *** # yum remove system-config-printer-udev"; \ + echo " *** OR"; \ + echo " *** # rpm -e --nodeps system-config-printer-udev"; \ + echo " *** OR (Ubuntu, Debian)"; \ + echo " *** $$ sudo apt-get remove system-config-printer-udev"; \ + echo " *** OR (SUSE)"; \ + echo " *** # zypper rm udev-configure-printer"; \ + echo " *** OR (generic linux)"; \ + echo " *** # rm -f $(LIBUDEVDIR)/*-printers.rules"; \ + echo " ***"; \ + exit 1; \ + fi + # ... OK! + # + +install-hotplug-prog: + # + # remove HPLIP (proprietary) files and install our version + # + if [ -d $(UDEVDIR) ]; then \ + rm -f $(UDEVDIR)/*hpmud*laserjet_1000*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_1005*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_1018*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_1020*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_p1005*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_p1006*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_p1007*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_p1008*; \ + rm -f $(UDEVDIR)/*hpmud*laserjet_p1505*; \ + rm -f $(UDEVDIR)/*hpmud_support.rules; \ + rm -f $(UDEVDIR)/*hpmud_plugin.rules; \ + rm -f $(LIBUDEVDIR)/*hpmud_support.rules; \ + rm -f $(LIBUDEVDIR)/*hpmud_plugin.rules; \ + rm -f $(LIBUDEVDIR)/*-hplj10xx.rules; \ + if [ -x /sbin/udevd ]; then \ + version=`/sbin/udevd --version 2>/dev/null`; \ + elif [ -x /usr/lib/udev/udevd ]; then \ + version=`/usr/lib/udev/udevd --version 2>/dev/null`; \ + elif [ -x /lib/systemd/systemd-udevd ]; then \ + version=`/lib/systemd/systemd-udevd --version 2>/dev/null`; \ + elif [ -x /usr/lib/systemd/systemd-udevd ]; then \ + version=`/usr/lib/systemd/systemd-udevd --version 2>/dev/null`; \ + fi; \ + if [ "$$version" = "" ]; then version=0; fi; \ + echo "***"; \ + echo "*** udev version $$version"; \ + echo "***"; \ + if [ "$$version" -lt 148 ]; then \ + $(INSTALL) -c -m 644 $(RULES).old $(UDEVDIR)/11-$(RULES); \ + else \ + $(INSTALL) -c -m 644 $(RULES) $(UDEVDIR)/11-$(RULES); \ + fi \ + fi + if [ -d $(DEVDDIR) ]; then \ + $(INSTALL) -c -m 644 hplj10xx.conf $(DEVDDIR)/; \ + fi + [ -d $(USBDIR) ] || $(INSTALL) -d -m 755 $(USBDIR)/ + $(INSTALL) -c -m 755 hplj1000 $(USBDIR)/ + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hplj1005 + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hplj1018 + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hplj1020 + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hpljP1005 + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hpljP1006 + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hpljP1007 + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hpljP1008 + ln -sf $(USBDIR)/hplj1000 $(USBDIR)/hpljP1505 + $(USBDIR)/hplj1000 install-usermap + $(USBDIR)/hplj1005 install-usermap + $(USBDIR)/hplj1018 install-usermap + $(USBDIR)/hplj1020 install-usermap + $(USBDIR)/hpljP1005 install-usermap + $(USBDIR)/hpljP1006 install-usermap + $(USBDIR)/hpljP1007 install-usermap + $(USBDIR)/hpljP1008 install-usermap + $(USBDIR)/hpljP1505 install-usermap + # modprobe usblp + $(USBDIR)/hplj1000 install-usblp + +install-hotplug-osx: + cd osx-hotplug; $(MAKE) PREFIX=$(PREFIX) install-hotplug + +install-filter: + if [ "$(CUPS_SERVERBIN)" != "" ]; then \ + $(INSTALL) -d $(CUPS_SERVERBIN)/filter; \ + ln -sf $(BIN)/command2foo2lava-pjl $(CUPS_SERVERBIN)/filter/; \ + fi + +CUPSDCONF=/etc/cups/cupsd.conf +CUPSFILESCONF=/etc/cups/cups-files.conf +CUPSPRINTERS=/etc/cups/printers.conf +MACLOAD=/System/Library/LaunchDaemons/org.cups.cupsd.plist +# cups-config doesn't exist on Ubuntu unless apt-get install libcups2-dev ... +CUPSMAJVER=cups-config --version | sed "s/[.].*//" +# ... so we use another way +CUPSMAJVER=head -1 $(CUPSPRINTERS) | sed -e 's/.*CUPS v//' -e 's/\..*//' + +cups: FRC + # + # CUPS + # + if [ -r $(CUPSFILESCONF) ]; then \ + ( echo "g/^FileDev/d"; \ + echo "g/ foo2zjs.../d"; \ + echo "g/^Sandboxing/d"; \ + echo '$$a'; \ + echo "# 'FileDevice Yes' line installed by foo2zjs..."; \ + echo "FileDevice Yes"; \ + CUPS_MAJVER=`$(CUPSMAJVER)`; \ + if [ "$$CUPS_MAJVER" = 2 ]; then \ + echo "# 'Sandboxing Relaxed' installed by foo2zjs..."; \ + echo "Sandboxing Relaxed"; \ + fi; \ + echo "."; \ + echo "w"; \ + ) | ex $(CUPSFILESCONF); \ + ( echo "g/^FileDev/d"; \ + echo "g/ foo2zjs.../d"; \ + echo "w"; \ + ) | ex $(CUPSDCONF); \ + elif [ -r $(CUPSDCONF) ]; then \ + ( echo "g/^FileDev/d"; \ + echo "g/ foo2zjs.../d"; \ + echo '$$a'; \ + echo "# 'FileDevice Yes' line installed by foo2zjs..."; \ + echo "FileDevice Yes"; \ + echo "."; \ + echo "w"; \ + ) | ex $(CUPSDCONF); \ + fi + # + # CUPS restart + # + if [ -x /etc/init.d/cups ]; then \ + /etc/init.d/cups restart; \ + if [ $$? != 0 ]; then \ + service cups restart; \ + fi \ + elif [ -x /etc/rc.d/rc.cups ]; then \ + /etc/rc.d/rc.cups restart; \ + elif [ -x /etc/init.d/cupsys ]; then \ + /etc/init.d/cupsys restart; \ + elif [ -x /etc/init.d/cupsd ]; then \ + /etc/init.d/cupsd restart; \ + elif [ -x /usr/local/etc/rc.d/cups.sh ]; then \ + /usr/local/etc/rc.d/cups.sh restart; \ + elif [ -x /usr/local/etc/rc.d/cups.sh.sample ]; then \ + cp /usr/local/etc/rc.d/cups.sh.sample /usr/local/etc/rc.d/cups.sh; \ + /usr/local/etc/rc.d/cups.sh restart; \ + elif [ -x /bin/systemctl ]; then \ + systemctl restart cups.service; \ + if [ $$? != 0 ]; then \ + systemctl restart org.cups.cupsd.service; \ + fi \ + elif [ -x /bin/launchctl ]; then \ + /bin/launchctl unload $(MACLOAD); \ + /bin/launchctl load $(MACLOAD); \ + fi + +# +# Uninstall +# +uninstall: + cd osx-hotplug; $(MAKE) PREFIX=$(PREFIX) uninstall + -rm -f /etc/hotplug/usb/hplj1000 + -rm -f /etc/hotplug/usb/hplj1005 + -rm -f /etc/hotplug/usb/hplj1018 + -rm -f /etc/hotplug/usb/hplj1020 + -rm -f /etc/hotplug/usb/foo2zjs.usermap + -(echo "g/^hplj10[02][05]/d"; echo "w") | ex /etc/hotplug/usb.usermap + -rm -f /etc/udev/rules.d/11-hplj10xx.rules + -rm -f /usr/bin/usb_printerid /bin/usb_printerid /sbin/usb_printerid + -rm -f /etc/hotplug/usb/hplj.usermap # + -rm -f /etc/udev/rules.d/58-foo2zjs.rules # + -rm -f /sbin/foo2zjs-loadfw # + -rm -rf /usr/share/doc/foo2zjs/ + -rm -f $(MANDIR)/man1/foo2zjs*.1 $(MANDIR)/man1/zjsdecode.1 + -rm -f $(MANDIR)/man1/foo2hp*.1 + -rm -f $(MANDIR)/man1/foo2oak*.1 $(MANDIR)/man1/oakdecode.1 + -rm -f $(MANDIR)/man1/foo2lava*.1 $(MANDIR)/man1/lavadecode.1 + -rm -f $(MANDIR)/man1/foo2qpdl*.1 $(MANDIR)/man1/qpdldecode.1 + -rm -f $(MANDIR)/man1/foo2slx*.1 $(MANDIR)/man1/slxdecode.1 + -rm -f $(MANDIR)/man1/foo2xqx*.1 $(MANDIR)/man1/xqxdecode.1 + -rm -f $(MANDIR)/man1/opldecode.1 $(MANDIR)/man1/rodecode.1 + -rm -f $(MANDIR)/man1/foo2hiperc*.1 $(MANDIR)/man1/hipercdecode.1 + -rm -f $(MANDIR)/man1/foo2hbpl*.1 $(MANDIR)/man1/hbpldecode.1 + -rm -f $(MANDIR)/man1/foo2ddst*.1 $(MANDIR)/man1/ddstdecode.1 + -rm -f $(MANDIR)/man1/gipddecode.1 + -rm -f $(MANDIR)/man1/arm2hpdl.1 $(MANDIR)/man1/usb_printerid.1 + -rm -f $(MANDIR)/man1/foo2zjs-icc2ps.1 + -rm -rf /usr/share/foo2zjs/ + -rm -rf /usr/share/foo2hp/ + -rm -rf /usr/share/foo2oak/ + -rm -rf /usr/share/foo2xqx/ + -rm -rf /usr/share/foo2lava/ + -rm -rf /usr/share/foo2qpdl/ + -rm -rf /usr/share/foo2slx/ + -rm -rf /usr/share/foo2hiperc/ + -rm -rf /usr/share/foo2hbpl/ + -rm -rf /usr/share/foo2ddst/ + -rm -f /usr/bin/arm2hpdl + -rm -f /usr/bin/foo2zjs-wrapper /usr/bin/foo2zjs /usr/bin/zjsdecode + -rm -f /usr/bin/foo2oak-wrapper /usr/bin/foo2oak /usr/bin/oakdecode + -rm -f /usr/bin/foo2hp2600-wrapper /usr/bin/foo2hp + -rm -f /usr/bin/foo2xqx-wrapper /usr/bin/foo2xqx /usr/bin/xqxdecode + -rm -f /usr/bin/foo2lava-wrapper /usr/bin/foo2lava /usr/bin/lavadecode + -rm -f /usr/bin/foo2qpdl-wrapper /usr/bin/foo2qpdl /usr/bin/qpdldecode + -rm -f /usr/bin/foo2slx-wrapper /usr/bin/foo2slx /usr/bin/slxdecode + -rm -f /usr/bin/foo2hiperc-wrapper /usr/bin/foo2hiperc + -rm -f /usr/bin/hipercdecode + -rm -f /usr/bin/foo2hbpl2-wrapper /usr/bin/foo2hbpl2 + -rm -f /usr/bin/hbpldecode + -rm -f /usr/bin/foo2ddst-wrapper /usr/bin/foo2ddst /usr/bin/ddstdecode + -rm -f /usr/bin/gipddecode + -rm -f /usr/bin/opldecode + -rm -f /usr/bin/rodecode + -rm -f /usr/bin/foo2zjs-icc2ps + -rm -f /usr/bin/foo2zjs-pstops + -rm -f /usr/bin/command2foo2lava-pjl + -rm -f /usr/lib/cups/filter/command2foo2lava-pjl + -rm -f /usr/share/applications/hplj1020.desktop + -rm -f /usr/share/pixmaps/hplj1020_icon.png + -cd foomatic-db; for i in `find driver opt printer -name "*.xml"`; do \ + rm -f $(FOODB)/$$i; \ + done + cd PPD; for ppd in *.ppd; do \ + rm -f $(MODEL)/$$ppd.gz; \ + done; + -rm -f /var/cache/foomatic/printconf.pickle + +# +# Clean +# +clean: + -rm -f $(PROGS) $(BINPROGS) $(SHELLS) + -rm -f *.zc *.zm + -rm -f xxx.* xxxomatic + -rm -f foo2zjs.o jbig.o jbig_ar.o zjsdecode.o foo2hp.o + -rm -f foo2oak.o oakdecode.o + -rm -f foo2xqx.o xqxdecode.o + -rm -f foo2lava.o lavadecode.o + -rm -f foo2qpdl.o qpdldecode.o + -rm -f foo2slx.o slxdecode.o + -rm -f foo2hiperc.o hipercdecode.o + -rm -f foo2hbpl2.o hbpldecode.o + -rm -f opldecode.o gipddecode.o + -rm -f foo2dsst.o ddstdecode.o + -rm -f command2foo2lava-pjl.o + -rm -f foo2oak.html foo2zjs.html foo2hp.html foo2xqx.html foo2lava.html + -rm -f foo2slx.html foo2qpdl.html foo2hiperc.html foo2hbpl.html + -rm -f foo2ddst.html + -rm -f index.html + -rm -f arch*.gif + -rm -f sihp*.dl + -rm -f *.tar.gz + -rm -f getweb + -rm -f patch.db + -rm -f $(MANPAGES) manual.pdf + -rm -f *.zjs *.zm *.zc *.zc? *.zc?? *.oak *.pbm *.pksm *.cmyk + -rm -f pksm2bitcmyk + -rm -f *.icm.*.ps + cd icc2ps; $(MAKE) $@ + cd osx-hotplug; $(MAKE) $@ + +# +# Header dependencies +# +jbig.o: jbig.h + +foo2ddst.o: jbig.h ddst.h +foo2hiperc.o: jbig.h hiperc.h +foo2hp.o: jbig.h zjs.h cups.h +foo2hbpl2.o: jbig.h hbpl.h +foo2lava.o: jbig.h +foo2oak.o: jbig.h oak.h +foo2qpdl.o: jbig.h qpdl.h +foo2slx.o: jbig.h slx.h +foo2xqx.o: jbig.h xqx.h +foo2zjs.o: jbig.h zjs.h + +ddstdecode.o: ddst.h jbig.h +gipddecode.o: slx.h jbig.h +hbpldecode.o: jbig.h +hipercdecode.o: hiperc.h jbig.h +lavadecode.o: jbig.h +opldecode.o: jbig.h +qpdldecode.o: jbig.h +slxdecode.o: slx.h jbig.h +xqxdecode.o: xqx.h jbig.h +zjsdecode.o: jbig.h zjs.h + +# +# foo2* Regression tests +# +test: testzjs testhp + @ls -l *.z* #*.oak + # + # All regression tests passed. + # + # Send the appropriate test page .zm/.zc ZjStream file(s) to + # your printer using a *RAW* printer queue. + +# +# foo2zjs Regression tests +# +testzjs: testpage.zm \ + testpage.zc10 \ + lj1000.zm lj1020.zm +# testpage.zc1 testpage.zc2 testpage.zc3 \ + +testpage.zm: testpage.ps foo2zjs-wrapper foo2zjs Makefile FRC + # + # Tests will pass only if you are using ghostscript-8.71-16.fc14 + # + # Monochrome test page for Minolta 2200/2300 DL + PATH=.:$$PATH time -p foo2zjs-wrapper testpage.ps > $@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +testpage.zc10: testpage.ps foo2zjs-wrapper foo2zjs Makefile FRC + # + # Color test page for Minolta 2200/2300 DL + PATH=.:$$PATH time -p foo2zjs-wrapper -c -C10 testpage.ps > $@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +testpage.zc1: testpage.ps foo2zjs-wrapper foo2zjs Makefile FRC + PATH=.:$$PATH time -p foo2zjs-wrapper -c -C1 testpage.ps > $@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +testpage.zc2: testpage.ps foo2zjs-wrapper foo2zjs Makefile FRC + PATH=.:$$PATH time -p foo2zjs-wrapper -c -C2 testpage.ps > $@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +testpage.zc3: testpage.ps foo2zjs-wrapper foo2zjs Makefile FRC + PATH=.:$$PATH time -p foo2zjs-wrapper -c -C3 testpage.ps > $@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +lj1000.zm: testpage.ps foo2zjs-wrapper foo2zjs Makefile FRC + # + # Monochrome test page for HP LJ1000 + PATH=.:$$PATH time -p foo2zjs-wrapper -r600x600 -P testpage.ps >$@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +lj1020.zm: testpage.ps foo2zjs-wrapper foo2zjs Makefile FRC + # + # Monochrome test page for HP LJ1020 + PATH=.:$$PATH time -p foo2zjs-wrapper -r600x600 -P -z1 \ + testpage.ps | sed "/JOBATTR/d" >$@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +# +# foo2hp Regression tests +# +testhp: lj2600.zm1 lj2600.zc1 + +lj2600.zm1: testpage.ps foo2hp2600-wrapper foo2hp Makefile FRC + # + # Monochrome test page for HP 2600n (1-bit) + PATH=.:$$PATH time -p foo2hp2600-wrapper testpage.ps > $@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +lj2600.zc1: testpage.ps foo2hp2600-wrapper foo2hp Makefile FRC + # + # Color test page for HP 2600n (1-bit) + PATH=.:$$PATH time -p foo2hp2600-wrapper -c testpage.ps > $@ + @got=`md5sum $@`; grep -q "$$got" regress.txt || \ + { echo "*** Test failure, got $$got"; ls -l $@; exit 1; } + +# +# foo2oak Regression tests +# +testoak: pprtest-0.oak pprtest-1.oak pprtest-2.oak pprtest-3.oak + +pprtest-0.oak: FRC + # + # 1-bit Monochrome test page for OAKT + PATH=.:$$PATH foo2oak-wrapper -b1 -D12345678 pprtest.ps > $@ + @want="fbd4c1a560985a6ad47ff23b018c7ce8 $@"; got=`md5sum $@`; \ + [ "$$want" = "$$got" ] || \ + { echo "*** Test failure, got $$got"; exit 1; } + +pprtest-1.oak: FRC + # + # 2-bit Monochrome test page for OAKT + PATH=.:$$PATH foo2oak-wrapper -b2 -D12345678 pprtest.ps > $@ + @want="bec9a24ee1ce0d388b773f83609a4d01 $@"; got=`md5sum $@`; \ + [ "$$want" = "$$got" ] || \ + { echo "*** Test failure, got $$got"; exit 1; } + +pprtest-2.oak: FRC + # + # 1-bit color test page for OAKT + PATH=.:$$PATH foo2oak-wrapper -c -b1 -D12345678 pprtest.ps > $@ + @want="c714bcd69fe5f3b2b257d7435eb938d1 $@"; got=`md5sum $@`; \ + [ "$$want" = "$$got" ] || \ + { echo "*** Test failure, got $$got"; exit 1; } + +pprtest-3.oak: FRC + # + # 2-bit color test page for OAKT + PATH=.:$$PATH foo2oak-wrapper -c -b2 -D12345678 pprtest.ps > $@ + @want="ed89abcd873979bc9337e02263511964 $@"; got=`md5sum $@`; \ + [ "$$want" = "$$got" ] || \ + { echo "*** Test failure, got $$got"; exit 1; } + +# +# icc2ps regression tests +# +ICC2PS=./icc2ps/foo2zjs-icc2ps +icctest: + for g in *.icm; do \ + for i in 0 1 2 3; do \ + $(ICC2PS) -o $$g -t$$i \ + | sed '/Created:/d' > $$g.$$i.ps; \ + done; \ + done + + +# +# Make phony print devices for testing full spooler interface without printing +# +tmpdev: + DEV=/tmp/OAK; > $$DEV; chmod 666 $$DEV + DEV=/tmp/OAKCM; > $$DEV; chmod 666 $$DEV + DEV=/tmp/testfile; > $$DEV; chmod 666 $$DEV + +# +# Test files for debugging +# +testpage.pbm: testpage.ps Makefile +xxx.zc: FRC +xxx.zm: FRC + +# +# PPD files +# +# Don't edit the PPD files. Instead, change the +# foomatic/{device,printer,opt}/*.xml files or the "modify-ppd" script. +# +FOOPRINT=*.xml +ppd: + # + # Generate PPD files using local tools + # + [ -d PPD ] || mkdir PPD + > foomatic-db/oldprinterids + cd foomatic-db; rm -f db; ln -sf . db + cd foomatic-db; rm -f source; ln -sf . source + for i in foomatic-db/printer/$(FOOPRINT); \ + do \ + printer=`basename $$i .xml`; \ + case "$$printer" in \ + *"d-Color_P160"*) driver=foo2hiperc;; \ + *M1005*|*M1120*) driver=foo2xqx;; \ + *P1[05]0[5678]*) driver=foo2xqx;; \ + *P2014*) driver=foo2xqx;; \ + *M1212*) driver=foo2xqx;; \ + *1500*|*OAKT*) driver=foo2oak;; \ + *1018*|*102[02]*) driver=foo2zjs-z1;; \ + *P2035*) driver=foo2zjs-z1;; \ + *1319*) driver=foo2zjs-z1;; \ + *P110*) driver=foo2zjs-z2;; \ + *P156*) driver=foo2zjs-z2;; \ + *P160*) driver=foo2zjs-z2;; \ + *CP102*) driver=foo2zjs-z3;; \ + *1635*|*2035*) driver=foo2oak-z1;; \ + *1600W|*16[89]0*) driver=foo2lava;; \ + *4690*) driver=foo2lava;; \ + *2530*|*24[89]0*) driver=foo2lava;; \ + *6115*) driver=foo2lava;; \ + *C110*) driver=foo2lava;; \ + *6121*) driver=foo2lava;; \ + *1600*|*2600*) driver=foo2hp;; \ + *1215*) driver=foo2hp;; \ + *C500*) driver=foo2slx;; \ + *C301*|*C310*) driver=foo2hiperc;; \ + *C511*) driver=foo2hiperc;; \ + *C810*) driver=foo2hiperc-z1;; \ + *C3[1234]00*) driver=foo2hiperc;; \ + *C3530*) driver=foo2hiperc;; \ + *C5[12568][05]0*) driver=foo2hiperc;; \ + *CLP*|*CLX*|*6110*) driver=foo2qpdl;; \ + *6015*|*1355*) driver=foo2hbpl2;; \ + *C1765*) driver=foo2hbpl2;; \ + *CX17*) driver=foo2hbpl2;; \ + *CM2[01]5*) driver=foo2hbpl2;; \ + *P205*|*3045*) driver=foo2hbpl2;; \ + *3010*|*3040*) driver=foo2hbpl2;; \ + *M215*) driver=foo2hbpl2;; \ + *M1400*) driver=foo2hbpl2;; \ + *SP_*) driver=foo2ddst;; \ + *) driver=foo2zjs;; \ + esac; \ + echo $$driver - $$printer; \ + ENGINE=../foomatic/foomatic-db-engine; \ + PERL5LIB=$$ENGINE/lib \ + FOOMATICDB=foomatic-db \ + $$ENGINE/foomatic-ppdfile \ + -d $$driver -p $$printer \ + > PPD/$$printer.ppd; \ + done + +oldppd: + # Did you do a "make install"???? + ./getweb ppd + +# +# Manpage generation. No, I am not interested in "info" files or +# HTML documentation. +# +man: $(MANPAGES) man-icc2ps man-osx-hotplug + +$(MANPAGES): macros.man includer-man + +man-icc2ps: + cd icc2ps; $(MAKE) man + +man-osx-hotplug: + cd osx-hotplug; $(MAKE) man + +.1in.1: + -rm -f $*.1 + modtime() { $(MODTIME); }; \ + MODpage=`modtime $*.1in`; \ + MODver=$(VERSION); \ + ./includer-man -v DEF1=$(OLDGROFF) $*.1in | sed > $*.1 \ + -e "s@\$${URLOAK}@$(URLOAK)@" \ + -e "s@\$${URLZJS}@$(URLZJS)@" \ + -e "s@\$${URLHP}@$(URLHP)@" \ + -e "s@\$${URLXQX}@$(URLXQX)@" \ + -e "s@\$${URLLAVA}@$(URLLAVA)@" \ + -e "s@\$${URLQPDL}@$(URLQPDL)@" \ + -e "s@\$${URLSLX}@$(URLSLX)@" \ + -e "s@\$${URLHC}@$(URLHC)@" \ + -e "s@\$${URLHBPL}@$(URLHBPL)@" \ + -e "s@\$${URLDDST}@$(URLDDST)@" \ + -e "s/\$${MODpage}/$$MODpage/" \ + -e "s/\$${MODver}/$$MODver/" + chmod a-w $*.1 + +install-man: man + # + # Install manual pages + # + $(INSTALL) -d -m 755 $(MANDIR) + $(INSTALL) -d -m 755 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2zjs.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2zjs-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 zjsdecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2oak.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2oak-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 oakdecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hp.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hp2600-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2xqx.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2xqx-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 xqxdecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2lava.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2lava-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 lavadecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 opldecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2qpdl.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2qpdl-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 qpdldecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2slx.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2slx-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 slxdecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hiperc.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hiperc-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 hipercdecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hbpl2.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2hbpl2-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 hbpldecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2ddst.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2ddst-wrapper.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 ddstdecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 gipddecode.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2zjs-pstops.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 arm2hpdl.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 usb_printerid.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 printer-profile.1 $(MANDIR)/man1/ + cd icc2ps; $(MAKE) install-man +ifeq ($(UNAME),Darwin) + cd osx-hotplug; $(MAKE) install-man +endif + +doc: README INSTALL manual.pdf + +install-doc: doc + # + # Install documentation + # + $(INSTALL) -d -m 755 $(DOCDIR) + $(INSTALL) -c -m 644 manual.pdf $(DOCDIR) + $(INSTALL) -c -m 644 COPYING $(DOCDIR) + $(INSTALL) -c -m 644 INSTALL $(DOCDIR) + $(INSTALL) -c -m 644 INSTALL.osx $(DOCDIR) + $(INSTALL) -c -m 644 README $(DOCDIR) + $(INSTALL) -c -m 644 ChangeLog $(DOCDIR) + +GROFF=/usr/local/test/bin/groff +GROFF=groff +manual.pdf: $(MANPAGES) icc2ps/foo2zjs-icc2ps.1 osx-hotplug/osx-hplj-hotplug.1 + -$(GROFF) -t -man \ + `ls $(MANPAGES) \ + icc2ps/foo2zjs-icc2ps.1 \ + osx-hotplug/osx-hplj-hotplug.1 \ + | sort` \ + | ps2pdf - $@ + +README: README.in + rm -f $@ + sed < $@.in > $@ \ + -e "s@\$${URLOAK}@$(URLOAK)@" \ + -e "s@\$${URLZJS}@$(URLZJS)@" + chmod a-w $@ + +INSTALL: INSTALL.in Makefile + rm -f $@ + echo "TOPICS" > $@.tmp + echo "------" >> $@.tmp + grep ^[A-Z][A-Z] $@.in | sed "s/^/ * /" >> $@.tmp + echo >> $@.tmp + cat $@.tmp $@.in | sed > $@ \ + -e "s@\$${URLOAK}@$(URLOAK)@" \ + -e "s@\$${URLZJS}@$(URLZJS)@" + rm -f $@.tmp + chmod a-w $@ + +# +# Check db files against current foomatic to see if any changes +# need to be made or reported. +# +MYFOODB=../foomatic/foomatic-db/db/source +checkdb: + @for dir in driver printer opt; do \ + for file in foomatic-db/$$dir/*.xml ; do \ + ofile=$(MYFOODB)/$$dir/`basename $$file`; \ + : echo diff -N -u $$ofile $$file; \ + if [ ! -f $$ofile ]; then \ + ofile=/dev/null; \ + fi; \ + diff -N -u $$ofile $$file; \ + done \ + done + +# +# Mail my latest foomatic-db entries to Till. +# +WHO=rick.richardson@comcast.net +WHO=till.kamppeter@gmx.net +maildb: + $(MAKE) -s checkdb > patch.db + echo "Here is a patch for the foomatic-db foo2zjs/foo2oak entries." | \ + mutt -a patch.db \ + -s "foo2zjs/foo2oak - patch for foomatic database" $(WHO) + +# +# Create tarball +# +tar: + HERE=`basename $$PWD`; \ + /bin/ls $(FILES) | \ + sed -e "s?^?$$HERE/?" | \ + (cd ..; tar -c -z -f $$HERE/$$HERE.tar.gz -T-) + +tarver: + HERENO=`basename $$PWD`; \ + HERE=`basename $$PWD-$(VERSION)`; \ + ln -sf $$HERENO ../$$HERE; \ + /bin/ls $(FILES) | \ + sed -e "s?^?$$HERE/?" | \ + (cd ..; tar -c -z -f $$HERE/$$HERE.tar.gz -T-); \ + rm -f ../$$HERE + +# +# Populate the web site +# make web +# make webworld +# make webextra +# +URLOAK=http://foo2oak.rkkda.com +URLZJS=http://foo2zjs.rkkda.com +URLHP=http://foo2hp.rkkda.com +URLXQX=http://foo2xqx.rkkda.com +URLLAVA=http://foo2lava.rkkda.com +URLQPDL=http://foo2qpdl.rkkda.com +URLSLX=http://foo2slx.rkkda.com +URLHC=http://foo2hiperc.rkkda.com +URLHBPL=http://foo2hbpl.rkkda.com +URLDDST=http://foo2ddst.rkkda.com +FTPSITE=~/.ncftp-website + +foo2zjs.html foo2oak.html foo2hp.html \ + foo2xqx.html foo2lava.html foo2qpdl.html \ + foo2slx.html foo2hiperc.html foo2hbpl.html \ + foo2ddst.html: thermometer.gif FRC + rm -f $@ + HERE=`basename $$PWD`; \ + TZ=`date | cut -c 21-24`; \ + modtime() { $(MODTIME); }; \ + MODindex=`modtime $@.in`; \ + MODtarball=`modtime $$HERE.tar.gz`; \ + MODsha=`sha1sum $$HERE.tar.gz | awk '{print $$1}'` ; \ + PRODUCT=`basename $@ .html`; \ + ./includer-html $@.in | sed > $@ \ + -e "s@\$${URLOAK}@$(URLOAK)@g" \ + -e "s@\$${URLZJS}@$(URLZJS)@g" \ + -e "s@\$${URLHP}@$(URLHP)@g" \ + -e "s@\$${URLXQX}@$(URLXQX)@g" \ + -e "s@\$${URLLAVA}@$(URLLAVA)@g" \ + -e "s@\$${URLQPDL}@$(URLQPDL)@g" \ + -e "s@\$${URLSLX}@$(URLSLX)@g" \ + -e "s@\$${URLHC}@$(URLHC)@g" \ + -e "s@\$${URLHBPL}@$(URLHBPL)@g" \ + -e "s@\$${URLDDST}@$(URLDDST)@g" \ + -e "s@\$${PRODUCT}@$$PRODUCT@g" \ + -e "s/\$${MODindex}/$$MODindex $$TZ/" \ + -e "s/\$${MODtarball}/$$MODtarball $$TZ/" \ + -e "s/\$${MODsha}/$$MODsha/" + chmod a-w $@ + +myftpput: ../geo/myftpput + rm -f myftpput + cp -a ../geo/myftpput . + chmod 555 myftpput + +web: test tar manual.pdf webindex + ./myftpput -S -m -f $(FTPSITE) foo2zjs \ + ChangeLog INSTALL manual.pdf foo2zjs.tar.gz; + +webt: tar manual.pdf webindex + ./myftpput -S -m -f $(FTPSITE) foo2zjs \ + ChangeLog INSTALL manual.pdf foo2zjs.tar.gz; + +webworld: web webpics + +webindex: INSTALL zjsindex oakindex hpindex xqxindex lavaindex \ + qpdlindex oakindex slxindex hcindex hbplindex ddstindex + +webpics: redhat suse ubuntu mandriva fedora + +webphotos: + cd printer-photos; $(MAKE) + +zjsindex: foo2zjs.html archzjs.gif thermometer.gif webphotos + ln -sf foo2zjs.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2zjs \ + index.html style.css archzjs.gif thermometer.gif \ + images/flags.png INSTALL INSTALL.osx images/zjsfavicon.png \ + Laserjet-1005-Series-MacOSX-10.pdf \ + tablesort.js printer-photos/printers.jpg; + +oakindex: foo2oak.html archoak.gif thermometer.gif webphotos + ln -sf foo2oak.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2oak \ + index.html style.css archoak.gif thermometer.gif \ + images/flags.png INSTALL \ + printer-photos/printers.jpg; + +hpindex: foo2hp.html archhp.gif thermometer.gif webphotos + ln -sf foo2hp.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2hp \ + index.html style.css archhp.gif thermometer.gif \ + images/flags.png INSTALL images/hpfavicon.png \ + printer-photos/printers.jpg; + +xqxindex: foo2xqx.html archxqx.gif thermometer.gif webphotos + ln -sf foo2xqx.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2xqx \ + index.html style.css archxqx.gif thermometer.gif \ + images/flags.png INSTALL images/xqxfavicon.png \ + printer-photos/printers.jpg; + +lavaindex: foo2lava.html archlava.gif thermometer.gif webphotos + ln -sf foo2lava.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2lava \ + index.html style.css archlava.gif thermometer.gif \ + images/flags.png INSTALL images/lavafavicon.png \ + printer-photos/printers.jpg; + +qpdlindex: foo2qpdl.html archqpdl.gif thermometer.gif webphotos + ln -sf foo2qpdl.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2qpdl \ + index.html style.css archqpdl.gif thermometer.gif \ + images/flags.png INSTALL images/qpdlfavicon.png \ + printer-photos/printers.jpg; + +slxindex: foo2slx.html archslx.gif thermometer.gif webphotos + ln -sf foo2slx.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2slx \ + index.html style.css archslx.gif thermometer.gif \ + images/flags.png INSTALL images/slxfavicon.png \ + printer-photos/printers.jpg; + +hcindex: foo2hiperc.html archhiperc.gif thermometer.gif webphotos + ln -sf foo2hiperc.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2hiperc \ + index.html style.css archhiperc.gif thermometer.gif \ + images/flags.png INSTALL images/hipercfavicon.png \ + printer-photos/printers.jpg; + +hbplindex: foo2hbpl.html archhbpl.gif thermometer.gif webphotos + ln -sf foo2hbpl.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2hbpl \ + index.html style.css archhbpl.gif thermometer.gif \ + images/flags.png INSTALL images/hbplfavicon.png \ + printer-photos/printers.jpg; + +ddstindex: foo2ddst.html archddst.gif thermometer.gif webphotos + ln -sf foo2ddst.html index.html + ./myftpput -S -m -f $(FTPSITE) foo2ddst \ + index.html style.css archddst.gif thermometer.gif \ + images/flags.png INSTALL images/ddstfavicon.png \ + printer-photos/printers.jpg; + +foo2zjs.html: warning.html contribute.html resources.html unsupported.html +foo2hp.html: warning.html contribute.html resources.html unsupported.html +foo2xqx.html: warning.html contribute.html resources.html unsupported.html +foo2lava.html: warning.html contribute.html resources.html unsupported.html +foo2qpdl.html: warning.html contribute.html resources.html unsupported.html +foo2slx.html: warning.html contribute.html resources.html unsupported.html +foo2hiperc.html: warning.html contribute.html resources.html unsupported.html +foo2oak.html: warning.html contribute.html resources.html unsupported.html +foo2hbpl.html: warning.html contribute.html resources.html unsupported.html +foo2ddst.html: warning.html contribute.html resources.html unsupported.html + +# RedHat +redhat: FRC + cd redhat; $(MAKE) web FTPSITE=$(FTPSITE) + +# Fedora Core 6+ +fedora: FRC + cd fedora; $(MAKE) web FTPSITE=$(FTPSITE) + +suse: FRC + cd suse; $(MAKE) web FTPSITE=$(FTPSITE) + +ubuntu: FRC + cd ubuntu; $(MAKE) web FTPSITE=$(FTPSITE) + +mandriva: FRC + cd mandriva; $(MAKE) web FTPSITE=$(FTPSITE) + +# +# Extra files from web +# +webextra: webicm webfw + +webicm: \ + icm/dl2300.tar.gz \ + icm/km2430.tar.gz icm/hpclj2600n.tar.gz \ + icm/hp-cp1025.tar.gz \ + icm/hpclj2500.tar.gz \ + icm/hp1215.tar.gz icm/km2530.tar.gz \ + icm/km-1600.tar.gz \ + icm/samclp300.tar.gz icm/samclp315.tar.gz \ + icm/lexc500.tar.gz \ + icm/okic301.tar.gz \ + icm/okic310.tar.gz \ + icm/okic511.tar.gz \ + icm/okic3200.tar.gz \ + icm/okic3400.tar.gz icm/okic5600.tar.gz \ + icm/okic810.tar.gz + ./myftpput -S -m -f $(FTPSITE) foo2zjs/icm icm/dl2300.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2zjs/icm icm/km2430.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2zjs/icm icm/hp-cp1025.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hp/icm icm/hpclj2500.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hp/icm icm/hpclj2600n.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hp/icm icm/hp1215.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2lava/icm icm/km2530.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2lava/icm icm/km-1600.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2qpdl/icm icm/samclp300.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2qpdl/icm icm/samclp315.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2slx/icm icm/lexc500.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hiperc/icm icm/okic301.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hiperc/icm icm/okic310.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hiperc/icm icm/okic511.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hiperc/icm icm/okic3200.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hiperc/icm icm/okic3400.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hiperc/icm icm/okic5600.tar.gz; + ./myftpput -S -m -f $(FTPSITE) foo2hiperc/icm icm/okic810.tar.gz; + +icm/dl2300.tar.gz: FRC + cd icm; tar -c -z -f ../$@ CP*.icm DL*.icm +icm/km2430.tar.gz: FRC + cd icm; tar -c -z -f ../$@ km2430*.icm +icm/hp-cp1025.tar.gz: FRC + cd icm; tar -c -z -f ../$@ hp-cp1025*.icm +icm/hpclj2500.tar.gz: FRC + cd icm; tar -c -z -f ../$@ hpclj2500*.icm +icm/hpclj2600n.tar.gz: FRC + cd icm; tar -c -z -f ../$@ hpclj2600*.icm +icm/hp1215.tar.gz: FRC + cd icm; tar -c -z -f ../$@ hp1215*.icm +icm/km2530.tar.gz: FRC + cd icm; tar -c -z -f ../$@ km2530*.icm +icm/km-1600.tar.gz: FRC + cd icm; tar -c -z -f ../$@ km-1600*.icm +icm/samclp300.tar.gz: FRC + cd icm; tar -c -z -f ../$@ samclp300*.icm +icm/samclp315.tar.gz: FRC + cd icm; tar -c -z -f ../$@ samclp315*.icm +icm/lexc500.tar.gz: FRC + cd icm; tar -c -z -f ../$@ lexR*.icm +icm/okic301.tar.gz: FRC + cd icm; tar -c -z -f ../$@ OKC301*.icm +icm/okic310.tar.gz: FRC + cd icm; tar -c -z -f ../$@ OKC310*.icm +icm/okic511.tar.gz: FRC + cd icm; tar -c -z -f ../$@ OKC511*.icm +icm/okic3200.tar.gz: FRC + cd icm; tar -c -z -f ../$@ OK32*.icm +icm/okic3400.tar.gz: FRC + cd icm; tar -c -z -f ../$@ C3400*.icm +icm/okic5600.tar.gz: FRC + cd icm; tar -c -z -f ../$@ OK56*.icm +icm/okic810.tar.gz: FRC + cd icm; tar -c -z -f ../$@ OKC810*.icm + +webfw: firmware/sihp1000.tar.gz \ + firmware/sihp1005.tar.gz \ + firmware/sihp1018.tar.gz \ + firmware/sihp1020.tar.gz \ + firmware/sihpP1005.tar.gz \ + firmware/sihpP1006.tar.gz \ + firmware/sihpP1505.tar.gz \ + $(NULL) + ./myftpput -S -m -f $(FTPSITE) foo2zjs/firmware firmware/*.tar.gz; + +firmware/sihp1000.tar.gz: FRC + cd firmware; tar -c -z -f ../$@ sihp1000.img +firmware/sihp1005.tar.gz: FRC + cd firmware; tar -c -z -f ../$@ sihp1005.img +firmware/sihp1018.tar.gz: FRC + cd firmware; tar -c -z -f ../$@ sihp1018.img +firmware/sihp1020.tar.gz: FRC + cd firmware; tar -c -z -f ../$@ sihp1020.img +firmware/sihpP1005.tar.gz: FRC + cd firmware; tar -c -z -f ../$@ sihpP1005.img +firmware/sihpP1006.tar.gz: FRC + cd firmware; tar -c -z -f ../$@ sihpP1006.img +firmware/sihpP1505.tar.gz: FRC + cd firmware; tar -c -z -f ../$@ sihpP1505.img + +FRC: + +# +# Misc +# +misc: pksm2bitcmyk phorum-logo.gif + +pksm2bitcmyk: pksm2bitcmyk.c + $(CC) $(CFLAGS) pksm2bitcmyk.c -lnetpbm -o $@ + +phorum-logo.gif: archhp.fig + fig2dev -L gif -m.25 archhp.fig | giftrans -t "#ffffff" -o $@ + +w: all + $(ROOT) $(MAKE) install install-hotplug cups diff --git a/PPD/Dell-1355.ppd b/PPD/Dell-1355.ppd new file mode 100644 index 0000000..754aa9d --- /dev/null +++ b/PPD/Dell-1355.ppd @@ -0,0 +1,441 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Dell-1355-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Dell" +*Product: "(1355)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Dell 1355" +*ShortNickName: "Dell 1355 foo2hbpl2" +*NickName: "Dell 1355 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Dell-1355 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Dell-C1765.ppd b/PPD/Dell-C1765.ppd new file mode 100644 index 0000000..c398dcb --- /dev/null +++ b/PPD/Dell-C1765.ppd @@ -0,0 +1,441 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Dell-C1765-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Dell" +*Product: "(C1765)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Dell C1765" +*ShortNickName: "Dell C1765 foo2hbpl2" +*NickName: "Dell C1765 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Dell-C1765 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Epson-AcuLaser_CX17NF.ppd b/PPD/Epson-AcuLaser_CX17NF.ppd new file mode 100644 index 0000000..8e55cf9 --- /dev/null +++ b/PPD/Epson-AcuLaser_CX17NF.ppd @@ -0,0 +1,441 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Epson-AcuLaser_CX17NF-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Epson" +*Product: "(AcuLaser CX17NF)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Epson AcuLaser CX17NF" +*ShortNickName: "Epson AcuLaser CX17NF foo2hbpl2" +*NickName: "Epson AcuLaser CX17NF Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Epson-AcuLaser_CX17NF foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Folio/Folio: "11.34 11.34 600.66 924.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Epson-AcuLaser_M1400.ppd b/PPD/Epson-AcuLaser_M1400.ppd new file mode 100644 index 0000000..b59a0f7 --- /dev/null +++ b/PPD/Epson-AcuLaser_M1400.ppd @@ -0,0 +1,427 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Epson-AcuLaser_M1400-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Epson" +*Product: "(AcuLaser M1400)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Epson AcuLaser M1400" +*ShortNickName: "Epson AcuLaser M1400 foo2hbpl2" +*NickName: "Epson AcuLaser M1400 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Epson-AcuLaser_M1400 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Fuji_Xerox-DocuPrint_CM205.ppd b/PPD/Fuji_Xerox-DocuPrint_CM205.ppd new file mode 100644 index 0000000..8ecca5c --- /dev/null +++ b/PPD/Fuji_Xerox-DocuPrint_CM205.ppd @@ -0,0 +1,450 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Fuji_Xerox-DocuPrint_CM205-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Fuji Xerox" +*Product: "(DocuPrint CM205)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Fuji Xerox DocuPrint CM205" +*ShortNickName: "Fuji Xerox D.P. CM205 foo2hbpl2" +*NickName: "Fuji Xerox DocuPrint CM205 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Fuji_Xerox-DocuPrint_CM205 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Fuji_Xerox-DocuPrint_CM215.ppd b/PPD/Fuji_Xerox-DocuPrint_CM215.ppd new file mode 100644 index 0000000..367580c --- /dev/null +++ b/PPD/Fuji_Xerox-DocuPrint_CM215.ppd @@ -0,0 +1,450 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Fuji_Xerox-DocuPrint_CM215-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Fuji Xerox" +*Product: "(DocuPrint CM215)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Fuji Xerox DocuPrint CM215" +*ShortNickName: "Fuji Xerox D.P. CM215 foo2hbpl2" +*NickName: "Fuji Xerox DocuPrint CM215 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:FUJI XEROX;MDL:DocuPrint CM215;CMD:HBPL;DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Fuji_Xerox-DocuPrint_CM215 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Fuji_Xerox-DocuPrint_M215.ppd b/PPD/Fuji_Xerox-DocuPrint_M215.ppd new file mode 100644 index 0000000..60ed31e --- /dev/null +++ b/PPD/Fuji_Xerox-DocuPrint_M215.ppd @@ -0,0 +1,427 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Fuji_Xerox-DocuPrint_M215-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Fuji Xerox" +*Product: "(DocuPrint M215)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Fuji Xerox DocuPrint M215" +*ShortNickName: "Fuji Xerox D.Pr. M215 foo2hbpl2" +*NickName: "Fuji Xerox DocuPrint M215 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Fuji_Xerox-DocuPrint_M215 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Fuji_Xerox-DocuPrint_P205.ppd b/PPD/Fuji_Xerox-DocuPrint_P205.ppd new file mode 100644 index 0000000..b8b7644 --- /dev/null +++ b/PPD/Fuji_Xerox-DocuPrint_P205.ppd @@ -0,0 +1,427 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Fuji_Xerox-DocuPrint_P205-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Fuji Xerox" +*Product: "(DocuPrint P205)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Fuji Xerox DocuPrint P205" +*ShortNickName: "Fuji Xerox D.Pr. P205 foo2hbpl2" +*NickName: "Fuji Xerox DocuPrint P205 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Fuji_Xerox-DocuPrint_P205 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Generic-OAKT_Printer.ppd b/PPD/Generic-OAKT_Printer.ppd new file mode 100644 index 0000000..24efaf6 --- /dev/null +++ b/PPD/Generic-OAKT_Printer.ppd @@ -0,0 +1,449 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Generic-OAKT_Printer-foo2oak.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2OAK.PPD" +*Manufacturer: "Generic" +*Product: "(OAKT Printer)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Generic OAKT Printer" +*ShortNickName: "Generic OAKT Printer foo2oak" +*NickName: "Generic OAKT Printer Foomatic/foo2oak (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2oak,R1,M0,TF;" + +*driverName foo2oak/foo2oak: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2oak.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 18 36 18 36 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Generic-OAKT_Printer foo2oak +*FoomaticRIPCommandLine: "foo2oak-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *BitsPerPlane/Bits Per Plane: PickOne +*FoomaticRIPOption BitsPerPlane: enum CmdLine A +*OrderDependency: 120 AnySetup *BitsPerPlane +*DefaultBitsPerPlane: 1-BPP +*BitsPerPlane 1-BPP/1 Bit Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=1-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=1-BPP: "-b1 " +*BitsPerPlane 2-BPP/2 Bits Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=2-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=2-BPP: "-b2 " +*CloseUI: *BitsPerPlane + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "18 36 594 756" +*ImageableArea A4/A4: "18 36 577 806" +*ImageableArea A5/A5: "18 36 402 559" +*ImageableArea B5/B5: "18 36 480 672" +*ImageableArea Env10/Env #10: "18 36 279 648" +*ImageableArea EnvC5/Env C5: "18 36 441 613" +*ImageableArea EnvDL/Env DL: "18 36 293 587" +*ImageableArea EnvISOB5/Env ISO B5: "18 36 480 672" +*ImageableArea EnvMonarch/Env Monarch: "18 36 261 504" +*ImageableArea Executive/Executive: "18 36 504 720" +*ImageableArea Legal/Legal: "18 36 594 972" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Auto +*MediaType Plain/Plain: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Auto/Auto Select: "%% FoomaticRIPOptionSetting: MediaType=Auto" +*FoomaticRIPOptionSetting MediaType=Auto: "-m0 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m7 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m10 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m9 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m12 " +*MediaType Graytrans/Grayscale Transparency: "%% FoomaticRIPOptionSetting: MediaType=Graytrans" +*FoomaticRIPOptionSetting MediaType=Graytrans: "-m4 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m11 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m6 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m3 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m13 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m2 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m5 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m8 " +*MediaType Tough/Tough: "%% FoomaticRIPOptionSetting: MediaType=Tough" +*FoomaticRIPOptionSetting MediaType=Tough: "-m14 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: default +*ICM default/Default ICM color correction: "%% FoomaticRIPOptionSetting: ICM=default" +*FoomaticRIPOptionSetting ICM=default: "-Gdefault " +*ICM hpclj2500/File hpclj2500rgb.icm: "%% FoomaticRIPOptionSetting: ICM=hpclj2500" +*FoomaticRIPOptionSetting ICM=hpclj2500: "-Ghpclj2500rgb.icm " +*ICM hpclj2600n-1/File hpclj2600n-1.icm (ICCFactory 1): "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-1" +*FoomaticRIPOptionSetting ICM=hpclj2600n-1: "-Ghpclj2600n-1.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Generic-ZjStream_Printer.ppd b/PPD/Generic-ZjStream_Printer.ppd new file mode 100644 index 0000000..6a66de4 --- /dev/null +++ b/PPD/Generic-ZjStream_Printer.ppd @@ -0,0 +1,501 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Generic-ZjStream_Printer-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "Generic" +*Product: "(ZjStream Printer)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Generic ZjStream Printer" +*ShortNickName: "Generic ZjStre. Printer foo2zjs" +*NickName: "Generic ZjStream Printer Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 18 36 18 36 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Generic-ZjStream_Printer foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *PrinterType/Printer Type: PickOne +*FoomaticRIPOption PrinterType: enum CmdLine A +*OrderDependency: 110 AnySetup *PrinterType +*DefaultPrinterType: Color +*PrinterType BW/Black-and-white printer: "%% FoomaticRIPOptionSetting: PrinterType=BW" +*FoomaticRIPOptionSetting PrinterType=BW: "-P " +*PrinterType Color/Color printer: "%% FoomaticRIPOptionSetting: PrinterType=Color" +*FoomaticRIPOptionSetting PrinterType=Color: " " +*CloseUI: *PrinterType + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode PhotoOnly/Color - Photo Only: "%% FoomaticRIPOptionSetting: ColorMode=PhotoOnly" +*FoomaticRIPOptionSetting ColorMode=PhotoOnly: "-c -C1 " +*ColorMode PhotosAndText/Color - Photos and Text: "%% FoomaticRIPOptionSetting: ColorMode=PhotosAndText" +*FoomaticRIPOptionSetting ColorMode=PhotosAndText: "-c -C2 " +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode GraphicsAndText/Color - Graphics and Text: "%% FoomaticRIPOptionSetting: ColorMode=GraphicsAndText" +*FoomaticRIPOptionSetting ColorMode=GraphicsAndText: "-c -C3 " +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "18 36 594 756" +*ImageableArea A4/A4: "18 36 577 806" +*ImageableArea A5/A5: "18 36 402 559" +*ImageableArea B5/B5: "18 36 480 672" +*ImageableArea Env10/Env #10: "18 36 279 648" +*ImageableArea EnvC5/Env C5: "18 36 441 613" +*ImageableArea EnvDL/Env DL: "18 36 293 587" +*ImageableArea EnvISOB5/Env ISO B5: "18 36 480 672" +*ImageableArea EnvMonarch/Env Monarch: "18 36 261 504" +*ImageableArea Executive/Executive: "18 36 504 720" +*ImageableArea Legal/Legal: "18 36 594 972" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*OpenUI *Intent/ICM Color Profile Intent: PickOne +*FoomaticRIPOption Intent: enum CmdLine A +*OrderDependency: 310 AnySetup *Intent +*DefaultIntent: Perceptual +*Intent Absolute/Absolute Intent: "%% FoomaticRIPOptionSetting: Intent=Absolute" +*FoomaticRIPOptionSetting Intent=Absolute: "-I3 " +*Intent Colorimetric/Colorimetric Intent: "%% FoomaticRIPOptionSetting: Intent=Colorimetric" +*FoomaticRIPOptionSetting Intent=Colorimetric: "-I1 " +*Intent Perceptual/Perceptual Intent: "%% FoomaticRIPOptionSetting: Intent=Perceptual" +*FoomaticRIPOptionSetting Intent=Perceptual: "-I0 " +*Intent Saturation/Saturation Intent: "%% FoomaticRIPOptionSetting: Intent=Saturation" +*FoomaticRIPOptionSetting Intent=Saturation: "-I2 " +*CloseUI: *Intent + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-Color_LaserJet_1500.ppd b/PPD/HP-Color_LaserJet_1500.ppd new file mode 100644 index 0000000..cf0e7d5 --- /dev/null +++ b/PPD/HP-Color_LaserJet_1500.ppd @@ -0,0 +1,449 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-Color_LaserJet_1500-foo2oak.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2OAK.PPD" +*Manufacturer: "HP" +*Product: "(hp color LaserJet 1500)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP Color LaserJet 1500" +*ShortNickName: "HP Color LaserJet 1500 foo2oak" +*NickName: "HP Color LaserJet 1500 Foomatic/foo2oak (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:hp color LaserJet 1500;CMD:OAKRAS;DRV:Dfoo2oak,R1,M0,TF;" + +*driverName foo2oak/foo2oak: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2oak.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 12.00 12.00 12 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-Color_LaserJet_1500 foo2oak +*FoomaticRIPCommandLine: "foo2oak-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *BitsPerPlane/Bits Per Plane: PickOne +*FoomaticRIPOption BitsPerPlane: enum CmdLine A +*OrderDependency: 120 AnySetup *BitsPerPlane +*DefaultBitsPerPlane: 1-BPP +*BitsPerPlane 1-BPP/1 Bit Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=1-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=1-BPP: "-b1 " +*BitsPerPlane 2-BPP/2 Bits Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=2-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=2-BPP: "-b2 " +*CloseUI: *BitsPerPlane + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "12.00 12.00 600.00 780.00" +*ImageableArea A4/A4: "12.00 12.00 583.00 830.00" +*ImageableArea A5/A5: "12.00 12.00 408.00 583.00" +*ImageableArea B5/B5: "12.00 12.00 486.00 696.00" +*ImageableArea Env10/Env #10: "12.00 12.00 285.00 672.00" +*ImageableArea EnvC5/Env C5: "12.00 12.00 447.00 637.00" +*ImageableArea EnvDL/Env DL: "12.00 12.00 299.00 611.00" +*ImageableArea EnvISOB5/Env ISO B5: "12.00 12.00 486.00 696.00" +*ImageableArea EnvMonarch/Env Monarch: "12.00 12.00 267.00 528.00" +*ImageableArea Executive/Executive: "12.00 12.00 510.00 744.00" +*ImageableArea Legal/Legal: "12.00 12.00 600.00 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Auto +*MediaType Plain/Plain: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Auto/Auto Select: "%% FoomaticRIPOptionSetting: MediaType=Auto" +*FoomaticRIPOptionSetting MediaType=Auto: "-m0 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m7 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m10 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m9 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m12 " +*MediaType Graytrans/Grayscale Transparency: "%% FoomaticRIPOptionSetting: MediaType=Graytrans" +*FoomaticRIPOptionSetting MediaType=Graytrans: "-m4 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m11 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m6 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m3 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m13 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m2 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m5 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m8 " +*MediaType Tough/Tough: "%% FoomaticRIPOptionSetting: MediaType=Tough" +*FoomaticRIPOptionSetting MediaType=Tough: "-m14 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: default +*ICM default/Default ICM color correction: "%% FoomaticRIPOptionSetting: ICM=default" +*FoomaticRIPOptionSetting ICM=default: "-Gdefault " +*ICM hpclj2500/File hpclj2500rgb.icm: "%% FoomaticRIPOptionSetting: ICM=hpclj2500" +*FoomaticRIPOptionSetting ICM=hpclj2500: "-Ghpclj2500rgb.icm " +*ICM hpclj2600n-1/File hpclj2600n-1.icm (ICCFactory 1): "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-1" +*FoomaticRIPOptionSetting ICM=hpclj2600n-1: "-Ghpclj2600n-1.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-Color_LaserJet_1600.ppd b/PPD/HP-Color_LaserJet_1600.ppd new file mode 100644 index 0000000..6b914a3 --- /dev/null +++ b/PPD/HP-Color_LaserJet_1600.ppd @@ -0,0 +1,836 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-Color_LaserJet_1600-foo2hp.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HP.PPD" +*Manufacturer: "HP" +*Product: "(HP Color LaserJet 1600)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP Color LaserJet 1600" +*ShortNickName: "HP Color LaserJet 1600 foo2hp" +*NickName: "HP Color LaserJet 1600 Foomatic/foo2hp (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP Color LaserJet 1600;CMD:ACL;DES:HP Color LaserJet 1600;DRV:Dfoo2hp,R1,M0,TF;" + +*driverName foo2hp/foo2hp: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hp.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 12.00 12.00 12 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-Color_LaserJet_1600 foo2hp +*FoomaticRIPCommandLine: "foo2hp2600-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *BitsPerPlane/Bits Per Plane: PickOne +*FoomaticRIPOption BitsPerPlane: enum CmdLine A +*OrderDependency: 120 AnySetup *BitsPerPlane +*DefaultBitsPerPlane: 1-BPP +*BitsPerPlane 1-BPP/1 Bit Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=1-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=1-BPP: "-b1 " +*BitsPerPlane 2-BPP/2 Bits Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=2-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=2-BPP: "-b2 " +*CloseUI: *BitsPerPlane + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "12.00 12.00 600.00 780.00" +*ImageableArea A4/A4: "12.00 12.00 583.00 830.00" +*ImageableArea A5/A5: "12.00 12.00 408.00 583.00" +*ImageableArea B5/B5: "12.00 12.00 486.00 696.00" +*ImageableArea Env10/Env #10: "12.00 12.00 285.00 672.00" +*ImageableArea EnvC5/Env C5: "12.00 12.00 447.00 637.00" +*ImageableArea EnvDL/Env DL: "12.00 12.00 299.00 611.00" +*ImageableArea EnvISOB5/Env ISO B5: "12.00 12.00 486.00 696.00" +*ImageableArea EnvMonarch/Env Monarch: "12.00 12.00 267.00 528.00" +*ImageableArea Executive/Executive: "12.00 12.00 510.00 744.00" +*ImageableArea Legal/Legal: "12.00 12.00 600.00 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s1 " +*InputSlot Tray3/Tray 3: "%% FoomaticRIPOptionSetting: InputSlot=Tray3" +*FoomaticRIPOptionSetting InputSlot=Tray3: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType photo/HP Color Laser Photo Paper: "%% FoomaticRIPOptionSetting: MediaType=photo" +*FoomaticRIPOptionSetting MediaType=photo: "-m278 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Cover/HP Premium Cover: "%% FoomaticRIPOptionSetting: MediaType=Cover" +*FoomaticRIPOptionSetting MediaType=Cover: "-m277 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=Glossy" +*FoomaticRIPOptionSetting MediaType=Glossy: "-m269 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType HeavyGlossy/Heavy Glossy: "%% FoomaticRIPOptionSetting: MediaType=HeavyGlossy" +*FoomaticRIPOptionSetting MediaType=HeavyGlossy: "-m270 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType LightGlossy/Light Glossy: "%% FoomaticRIPOptionSetting: MediaType=LightGlossy" +*FoomaticRIPOptionSetting MediaType=LightGlossy: "-m268 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Tough/Tough: "%% FoomaticRIPOptionSetting: MediaType=Tough" +*FoomaticRIPOptionSetting MediaType=Tough: "-m276 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: default +*ICM default/Default ICM color correction: "%% FoomaticRIPOptionSetting: ICM=default" +*FoomaticRIPOptionSetting ICM=default: "-Gdefault " +*ICM hp1215-argyll-0/HP 1215 - Argyll 0 (default): "%% FoomaticRIPOptionSetting: ICM=hp1215-argyll-0" +*FoomaticRIPOptionSetting ICM=hp1215-argyll-0: "-Ghp1215-argyll-0.icm && +" +*End +*ICM hpclj2600n-0/HP 1600/2600 - hpclj2600n-0.icm: "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-0" +*FoomaticRIPOptionSetting ICM=hpclj2600n-0: "-Ghpclj2600n-0.icm " +*ICM hpclj2600n-1/HP 1600/2600 - ICCFactory 1 (default): "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-1" +*FoomaticRIPOptionSetting ICM=hpclj2600n-1: "-Ghpclj2600n-1.icm " +*ICM km2430_2/File km2430_2.icm: "%% FoomaticRIPOptionSetting: ICM=km2430_2" +*FoomaticRIPOptionSetting ICM=km2430_2: "-Gkm2430_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Alignment (in rows)/Alignment (in rows) + +*OpenUI *alignc/Alignment Offset Cyan: PickOne +*FoomaticRIPOption alignc: int CmdLine A +*FoomaticRIPOptionPrototype alignc: "-Oc=%s " +*FoomaticRIPOptionRange alignc: -100 100 +*OrderDependency: 220 AnySetup *alignc +*Defaultalignc: 0 +*FoomaticRIPDefaultalignc: 0 +*alignc -100/-100: "%% FoomaticRIPOptionSetting: alignc=-100" +*alignc -98/-98: "%% FoomaticRIPOptionSetting: alignc=-98" +*alignc -96/-96: "%% FoomaticRIPOptionSetting: alignc=-96" +*alignc -94/-94: "%% FoomaticRIPOptionSetting: alignc=-94" +*alignc -92/-92: "%% FoomaticRIPOptionSetting: alignc=-92" +*alignc -90/-90: "%% FoomaticRIPOptionSetting: alignc=-90" +*alignc -88/-88: "%% FoomaticRIPOptionSetting: alignc=-88" +*alignc -86/-86: "%% FoomaticRIPOptionSetting: alignc=-86" +*alignc -84/-84: "%% FoomaticRIPOptionSetting: alignc=-84" +*alignc -82/-82: "%% FoomaticRIPOptionSetting: alignc=-82" +*alignc -80/-80: "%% FoomaticRIPOptionSetting: alignc=-80" +*alignc -78/-78: "%% FoomaticRIPOptionSetting: alignc=-78" +*alignc -76/-76: "%% FoomaticRIPOptionSetting: alignc=-76" +*alignc -74/-74: "%% FoomaticRIPOptionSetting: alignc=-74" +*alignc -72/-72: "%% FoomaticRIPOptionSetting: alignc=-72" +*alignc -70/-70: "%% FoomaticRIPOptionSetting: alignc=-70" +*alignc -68/-68: "%% FoomaticRIPOptionSetting: alignc=-68" +*alignc -66/-66: "%% FoomaticRIPOptionSetting: alignc=-66" +*alignc -64/-64: "%% FoomaticRIPOptionSetting: alignc=-64" +*alignc -62/-62: "%% FoomaticRIPOptionSetting: alignc=-62" +*alignc -60/-60: "%% FoomaticRIPOptionSetting: alignc=-60" +*alignc -58/-58: "%% FoomaticRIPOptionSetting: alignc=-58" +*alignc -56/-56: "%% FoomaticRIPOptionSetting: alignc=-56" +*alignc -54/-54: "%% FoomaticRIPOptionSetting: alignc=-54" +*alignc -52/-52: "%% FoomaticRIPOptionSetting: alignc=-52" +*alignc -50/-50: "%% FoomaticRIPOptionSetting: alignc=-50" +*alignc -48/-48: "%% FoomaticRIPOptionSetting: alignc=-48" +*alignc -46/-46: "%% FoomaticRIPOptionSetting: alignc=-46" +*alignc -44/-44: "%% FoomaticRIPOptionSetting: alignc=-44" +*alignc -42/-42: "%% FoomaticRIPOptionSetting: alignc=-42" +*alignc -40/-40: "%% FoomaticRIPOptionSetting: alignc=-40" +*alignc -38/-38: "%% FoomaticRIPOptionSetting: alignc=-38" +*alignc -36/-36: "%% FoomaticRIPOptionSetting: alignc=-36" +*alignc -34/-34: "%% FoomaticRIPOptionSetting: alignc=-34" +*alignc -32/-32: "%% FoomaticRIPOptionSetting: alignc=-32" +*alignc -30/-30: "%% FoomaticRIPOptionSetting: alignc=-30" +*alignc -28/-28: "%% FoomaticRIPOptionSetting: alignc=-28" +*alignc -26/-26: "%% FoomaticRIPOptionSetting: alignc=-26" +*alignc -24/-24: "%% FoomaticRIPOptionSetting: alignc=-24" +*alignc -22/-22: "%% FoomaticRIPOptionSetting: alignc=-22" +*alignc -20/-20: "%% FoomaticRIPOptionSetting: alignc=-20" +*alignc -18/-18: "%% FoomaticRIPOptionSetting: alignc=-18" +*alignc -16/-16: "%% FoomaticRIPOptionSetting: alignc=-16" +*alignc -14/-14: "%% FoomaticRIPOptionSetting: alignc=-14" +*alignc -12/-12: "%% FoomaticRIPOptionSetting: alignc=-12" +*alignc -10/-10: "%% FoomaticRIPOptionSetting: alignc=-10" +*alignc -8/-8: "%% FoomaticRIPOptionSetting: alignc=-8" +*alignc -6/-6: "%% FoomaticRIPOptionSetting: alignc=-6" +*alignc -4/-4: "%% FoomaticRIPOptionSetting: alignc=-4" +*alignc -2/-2: "%% FoomaticRIPOptionSetting: alignc=-2" +*alignc 0/0: "%% FoomaticRIPOptionSetting: alignc=0" +*alignc 2/2: "%% FoomaticRIPOptionSetting: alignc=2" +*alignc 4/4: "%% FoomaticRIPOptionSetting: alignc=4" +*alignc 6/6: "%% FoomaticRIPOptionSetting: alignc=6" +*alignc 8/8: "%% FoomaticRIPOptionSetting: alignc=8" +*alignc 10/10: "%% FoomaticRIPOptionSetting: alignc=10" +*alignc 12/12: "%% FoomaticRIPOptionSetting: alignc=12" +*alignc 14/14: "%% FoomaticRIPOptionSetting: alignc=14" +*alignc 16/16: "%% FoomaticRIPOptionSetting: alignc=16" +*alignc 18/18: "%% FoomaticRIPOptionSetting: alignc=18" +*alignc 20/20: "%% FoomaticRIPOptionSetting: alignc=20" +*alignc 22/22: "%% FoomaticRIPOptionSetting: alignc=22" +*alignc 24/24: "%% FoomaticRIPOptionSetting: alignc=24" +*alignc 26/26: "%% FoomaticRIPOptionSetting: alignc=26" +*alignc 28/28: "%% FoomaticRIPOptionSetting: alignc=28" +*alignc 30/30: "%% FoomaticRIPOptionSetting: alignc=30" +*alignc 32/32: "%% FoomaticRIPOptionSetting: alignc=32" +*alignc 34/34: "%% FoomaticRIPOptionSetting: alignc=34" +*alignc 36/36: "%% FoomaticRIPOptionSetting: alignc=36" +*alignc 38/38: "%% FoomaticRIPOptionSetting: alignc=38" +*alignc 40/40: "%% FoomaticRIPOptionSetting: alignc=40" +*alignc 42/42: "%% FoomaticRIPOptionSetting: alignc=42" +*alignc 44/44: "%% FoomaticRIPOptionSetting: alignc=44" +*alignc 46/46: "%% FoomaticRIPOptionSetting: alignc=46" +*alignc 48/48: "%% FoomaticRIPOptionSetting: alignc=48" +*alignc 50/50: "%% FoomaticRIPOptionSetting: alignc=50" +*alignc 52/52: "%% FoomaticRIPOptionSetting: alignc=52" +*alignc 54/54: "%% FoomaticRIPOptionSetting: alignc=54" +*alignc 56/56: "%% FoomaticRIPOptionSetting: alignc=56" +*alignc 58/58: "%% FoomaticRIPOptionSetting: alignc=58" +*alignc 60/60: "%% FoomaticRIPOptionSetting: alignc=60" +*alignc 62/62: "%% FoomaticRIPOptionSetting: alignc=62" +*alignc 64/64: "%% FoomaticRIPOptionSetting: alignc=64" +*alignc 66/66: "%% FoomaticRIPOptionSetting: alignc=66" +*alignc 68/68: "%% FoomaticRIPOptionSetting: alignc=68" +*alignc 70/70: "%% FoomaticRIPOptionSetting: alignc=70" +*alignc 72/72: "%% FoomaticRIPOptionSetting: alignc=72" +*alignc 74/74: "%% FoomaticRIPOptionSetting: alignc=74" +*alignc 76/76: "%% FoomaticRIPOptionSetting: alignc=76" +*alignc 78/78: "%% FoomaticRIPOptionSetting: alignc=78" +*alignc 80/80: "%% FoomaticRIPOptionSetting: alignc=80" +*alignc 82/82: "%% FoomaticRIPOptionSetting: alignc=82" +*alignc 84/84: "%% FoomaticRIPOptionSetting: alignc=84" +*alignc 86/86: "%% FoomaticRIPOptionSetting: alignc=86" +*alignc 88/88: "%% FoomaticRIPOptionSetting: alignc=88" +*alignc 90/90: "%% FoomaticRIPOptionSetting: alignc=90" +*alignc 92/92: "%% FoomaticRIPOptionSetting: alignc=92" +*alignc 94/94: "%% FoomaticRIPOptionSetting: alignc=94" +*alignc 96/96: "%% FoomaticRIPOptionSetting: alignc=96" +*alignc 98/98: "%% FoomaticRIPOptionSetting: alignc=98" +*alignc 100/100: "%% FoomaticRIPOptionSetting: alignc=100" +*CloseUI: *alignc + +*OpenUI *alignm/Alignment Offset Magenta: PickOne +*FoomaticRIPOption alignm: int CmdLine A +*FoomaticRIPOptionPrototype alignm: "-Om=%s " +*FoomaticRIPOptionRange alignm: -100 100 +*OrderDependency: 220 AnySetup *alignm +*Defaultalignm: 0 +*FoomaticRIPDefaultalignm: 0 +*alignm -100/-100: "%% FoomaticRIPOptionSetting: alignm=-100" +*alignm -98/-98: "%% FoomaticRIPOptionSetting: alignm=-98" +*alignm -96/-96: "%% FoomaticRIPOptionSetting: alignm=-96" +*alignm -94/-94: "%% FoomaticRIPOptionSetting: alignm=-94" +*alignm -92/-92: "%% FoomaticRIPOptionSetting: alignm=-92" +*alignm -90/-90: "%% FoomaticRIPOptionSetting: alignm=-90" +*alignm -88/-88: "%% FoomaticRIPOptionSetting: alignm=-88" +*alignm -86/-86: "%% FoomaticRIPOptionSetting: alignm=-86" +*alignm -84/-84: "%% FoomaticRIPOptionSetting: alignm=-84" +*alignm -82/-82: "%% FoomaticRIPOptionSetting: alignm=-82" +*alignm -80/-80: "%% FoomaticRIPOptionSetting: alignm=-80" +*alignm -78/-78: "%% FoomaticRIPOptionSetting: alignm=-78" +*alignm -76/-76: "%% FoomaticRIPOptionSetting: alignm=-76" +*alignm -74/-74: "%% FoomaticRIPOptionSetting: alignm=-74" +*alignm -72/-72: "%% FoomaticRIPOptionSetting: alignm=-72" +*alignm -70/-70: "%% FoomaticRIPOptionSetting: alignm=-70" +*alignm -68/-68: "%% FoomaticRIPOptionSetting: alignm=-68" +*alignm -66/-66: "%% FoomaticRIPOptionSetting: alignm=-66" +*alignm -64/-64: "%% FoomaticRIPOptionSetting: alignm=-64" +*alignm -62/-62: "%% FoomaticRIPOptionSetting: alignm=-62" +*alignm -60/-60: "%% FoomaticRIPOptionSetting: alignm=-60" +*alignm -58/-58: "%% FoomaticRIPOptionSetting: alignm=-58" +*alignm -56/-56: "%% FoomaticRIPOptionSetting: alignm=-56" +*alignm -54/-54: "%% FoomaticRIPOptionSetting: alignm=-54" +*alignm -52/-52: "%% FoomaticRIPOptionSetting: alignm=-52" +*alignm -50/-50: "%% FoomaticRIPOptionSetting: alignm=-50" +*alignm -48/-48: "%% FoomaticRIPOptionSetting: alignm=-48" +*alignm -46/-46: "%% FoomaticRIPOptionSetting: alignm=-46" +*alignm -44/-44: "%% FoomaticRIPOptionSetting: alignm=-44" +*alignm -42/-42: "%% FoomaticRIPOptionSetting: alignm=-42" +*alignm -40/-40: "%% FoomaticRIPOptionSetting: alignm=-40" +*alignm -38/-38: "%% FoomaticRIPOptionSetting: alignm=-38" +*alignm -36/-36: "%% FoomaticRIPOptionSetting: alignm=-36" +*alignm -34/-34: "%% FoomaticRIPOptionSetting: alignm=-34" +*alignm -32/-32: "%% FoomaticRIPOptionSetting: alignm=-32" +*alignm -30/-30: "%% FoomaticRIPOptionSetting: alignm=-30" +*alignm -28/-28: "%% FoomaticRIPOptionSetting: alignm=-28" +*alignm -26/-26: "%% FoomaticRIPOptionSetting: alignm=-26" +*alignm -24/-24: "%% FoomaticRIPOptionSetting: alignm=-24" +*alignm -22/-22: "%% FoomaticRIPOptionSetting: alignm=-22" +*alignm -20/-20: "%% FoomaticRIPOptionSetting: alignm=-20" +*alignm -18/-18: "%% FoomaticRIPOptionSetting: alignm=-18" +*alignm -16/-16: "%% FoomaticRIPOptionSetting: alignm=-16" +*alignm -14/-14: "%% FoomaticRIPOptionSetting: alignm=-14" +*alignm -12/-12: "%% FoomaticRIPOptionSetting: alignm=-12" +*alignm -10/-10: "%% FoomaticRIPOptionSetting: alignm=-10" +*alignm -8/-8: "%% FoomaticRIPOptionSetting: alignm=-8" +*alignm -6/-6: "%% FoomaticRIPOptionSetting: alignm=-6" +*alignm -4/-4: "%% FoomaticRIPOptionSetting: alignm=-4" +*alignm -2/-2: "%% FoomaticRIPOptionSetting: alignm=-2" +*alignm 0/0: "%% FoomaticRIPOptionSetting: alignm=0" +*alignm 2/2: "%% FoomaticRIPOptionSetting: alignm=2" +*alignm 4/4: "%% FoomaticRIPOptionSetting: alignm=4" +*alignm 6/6: "%% FoomaticRIPOptionSetting: alignm=6" +*alignm 8/8: "%% FoomaticRIPOptionSetting: alignm=8" +*alignm 10/10: "%% FoomaticRIPOptionSetting: alignm=10" +*alignm 12/12: "%% FoomaticRIPOptionSetting: alignm=12" +*alignm 14/14: "%% FoomaticRIPOptionSetting: alignm=14" +*alignm 16/16: "%% FoomaticRIPOptionSetting: alignm=16" +*alignm 18/18: "%% FoomaticRIPOptionSetting: alignm=18" +*alignm 20/20: "%% FoomaticRIPOptionSetting: alignm=20" +*alignm 22/22: "%% FoomaticRIPOptionSetting: alignm=22" +*alignm 24/24: "%% FoomaticRIPOptionSetting: alignm=24" +*alignm 26/26: "%% FoomaticRIPOptionSetting: alignm=26" +*alignm 28/28: "%% FoomaticRIPOptionSetting: alignm=28" +*alignm 30/30: "%% FoomaticRIPOptionSetting: alignm=30" +*alignm 32/32: "%% FoomaticRIPOptionSetting: alignm=32" +*alignm 34/34: "%% FoomaticRIPOptionSetting: alignm=34" +*alignm 36/36: "%% FoomaticRIPOptionSetting: alignm=36" +*alignm 38/38: "%% FoomaticRIPOptionSetting: alignm=38" +*alignm 40/40: "%% FoomaticRIPOptionSetting: alignm=40" +*alignm 42/42: "%% FoomaticRIPOptionSetting: alignm=42" +*alignm 44/44: "%% FoomaticRIPOptionSetting: alignm=44" +*alignm 46/46: "%% FoomaticRIPOptionSetting: alignm=46" +*alignm 48/48: "%% FoomaticRIPOptionSetting: alignm=48" +*alignm 50/50: "%% FoomaticRIPOptionSetting: alignm=50" +*alignm 52/52: "%% FoomaticRIPOptionSetting: alignm=52" +*alignm 54/54: "%% FoomaticRIPOptionSetting: alignm=54" +*alignm 56/56: "%% FoomaticRIPOptionSetting: alignm=56" +*alignm 58/58: "%% FoomaticRIPOptionSetting: alignm=58" +*alignm 60/60: "%% FoomaticRIPOptionSetting: alignm=60" +*alignm 62/62: "%% FoomaticRIPOptionSetting: alignm=62" +*alignm 64/64: "%% FoomaticRIPOptionSetting: alignm=64" +*alignm 66/66: "%% FoomaticRIPOptionSetting: alignm=66" +*alignm 68/68: "%% FoomaticRIPOptionSetting: alignm=68" +*alignm 70/70: "%% FoomaticRIPOptionSetting: alignm=70" +*alignm 72/72: "%% FoomaticRIPOptionSetting: alignm=72" +*alignm 74/74: "%% FoomaticRIPOptionSetting: alignm=74" +*alignm 76/76: "%% FoomaticRIPOptionSetting: alignm=76" +*alignm 78/78: "%% FoomaticRIPOptionSetting: alignm=78" +*alignm 80/80: "%% FoomaticRIPOptionSetting: alignm=80" +*alignm 82/82: "%% FoomaticRIPOptionSetting: alignm=82" +*alignm 84/84: "%% FoomaticRIPOptionSetting: alignm=84" +*alignm 86/86: "%% FoomaticRIPOptionSetting: alignm=86" +*alignm 88/88: "%% FoomaticRIPOptionSetting: alignm=88" +*alignm 90/90: "%% FoomaticRIPOptionSetting: alignm=90" +*alignm 92/92: "%% FoomaticRIPOptionSetting: alignm=92" +*alignm 94/94: "%% FoomaticRIPOptionSetting: alignm=94" +*alignm 96/96: "%% FoomaticRIPOptionSetting: alignm=96" +*alignm 98/98: "%% FoomaticRIPOptionSetting: alignm=98" +*alignm 100/100: "%% FoomaticRIPOptionSetting: alignm=100" +*CloseUI: *alignm + +*OpenUI *aligny/Alignment Offset Yellow: PickOne +*FoomaticRIPOption aligny: int CmdLine A +*FoomaticRIPOptionPrototype aligny: "-Oy=%s " +*FoomaticRIPOptionRange aligny: -100 100 +*OrderDependency: 220 AnySetup *aligny +*Defaultaligny: 0 +*FoomaticRIPDefaultaligny: 0 +*aligny -100/-100: "%% FoomaticRIPOptionSetting: aligny=-100" +*aligny -98/-98: "%% FoomaticRIPOptionSetting: aligny=-98" +*aligny -96/-96: "%% FoomaticRIPOptionSetting: aligny=-96" +*aligny -94/-94: "%% FoomaticRIPOptionSetting: aligny=-94" +*aligny -92/-92: "%% FoomaticRIPOptionSetting: aligny=-92" +*aligny -90/-90: "%% FoomaticRIPOptionSetting: aligny=-90" +*aligny -88/-88: "%% FoomaticRIPOptionSetting: aligny=-88" +*aligny -86/-86: "%% FoomaticRIPOptionSetting: aligny=-86" +*aligny -84/-84: "%% FoomaticRIPOptionSetting: aligny=-84" +*aligny -82/-82: "%% FoomaticRIPOptionSetting: aligny=-82" +*aligny -80/-80: "%% FoomaticRIPOptionSetting: aligny=-80" +*aligny -78/-78: "%% FoomaticRIPOptionSetting: aligny=-78" +*aligny -76/-76: "%% FoomaticRIPOptionSetting: aligny=-76" +*aligny -74/-74: "%% FoomaticRIPOptionSetting: aligny=-74" +*aligny -72/-72: "%% FoomaticRIPOptionSetting: aligny=-72" +*aligny -70/-70: "%% FoomaticRIPOptionSetting: aligny=-70" +*aligny -68/-68: "%% FoomaticRIPOptionSetting: aligny=-68" +*aligny -66/-66: "%% FoomaticRIPOptionSetting: aligny=-66" +*aligny -64/-64: "%% FoomaticRIPOptionSetting: aligny=-64" +*aligny -62/-62: "%% FoomaticRIPOptionSetting: aligny=-62" +*aligny -60/-60: "%% FoomaticRIPOptionSetting: aligny=-60" +*aligny -58/-58: "%% FoomaticRIPOptionSetting: aligny=-58" +*aligny -56/-56: "%% FoomaticRIPOptionSetting: aligny=-56" +*aligny -54/-54: "%% FoomaticRIPOptionSetting: aligny=-54" +*aligny -52/-52: "%% FoomaticRIPOptionSetting: aligny=-52" +*aligny -50/-50: "%% FoomaticRIPOptionSetting: aligny=-50" +*aligny -48/-48: "%% FoomaticRIPOptionSetting: aligny=-48" +*aligny -46/-46: "%% FoomaticRIPOptionSetting: aligny=-46" +*aligny -44/-44: "%% FoomaticRIPOptionSetting: aligny=-44" +*aligny -42/-42: "%% FoomaticRIPOptionSetting: aligny=-42" +*aligny -40/-40: "%% FoomaticRIPOptionSetting: aligny=-40" +*aligny -38/-38: "%% FoomaticRIPOptionSetting: aligny=-38" +*aligny -36/-36: "%% FoomaticRIPOptionSetting: aligny=-36" +*aligny -34/-34: "%% FoomaticRIPOptionSetting: aligny=-34" +*aligny -32/-32: "%% FoomaticRIPOptionSetting: aligny=-32" +*aligny -30/-30: "%% FoomaticRIPOptionSetting: aligny=-30" +*aligny -28/-28: "%% FoomaticRIPOptionSetting: aligny=-28" +*aligny -26/-26: "%% FoomaticRIPOptionSetting: aligny=-26" +*aligny -24/-24: "%% FoomaticRIPOptionSetting: aligny=-24" +*aligny -22/-22: "%% FoomaticRIPOptionSetting: aligny=-22" +*aligny -20/-20: "%% FoomaticRIPOptionSetting: aligny=-20" +*aligny -18/-18: "%% FoomaticRIPOptionSetting: aligny=-18" +*aligny -16/-16: "%% FoomaticRIPOptionSetting: aligny=-16" +*aligny -14/-14: "%% FoomaticRIPOptionSetting: aligny=-14" +*aligny -12/-12: "%% FoomaticRIPOptionSetting: aligny=-12" +*aligny -10/-10: "%% FoomaticRIPOptionSetting: aligny=-10" +*aligny -8/-8: "%% FoomaticRIPOptionSetting: aligny=-8" +*aligny -6/-6: "%% FoomaticRIPOptionSetting: aligny=-6" +*aligny -4/-4: "%% FoomaticRIPOptionSetting: aligny=-4" +*aligny -2/-2: "%% FoomaticRIPOptionSetting: aligny=-2" +*aligny 0/0: "%% FoomaticRIPOptionSetting: aligny=0" +*aligny 2/2: "%% FoomaticRIPOptionSetting: aligny=2" +*aligny 4/4: "%% FoomaticRIPOptionSetting: aligny=4" +*aligny 6/6: "%% FoomaticRIPOptionSetting: aligny=6" +*aligny 8/8: "%% FoomaticRIPOptionSetting: aligny=8" +*aligny 10/10: "%% FoomaticRIPOptionSetting: aligny=10" +*aligny 12/12: "%% FoomaticRIPOptionSetting: aligny=12" +*aligny 14/14: "%% FoomaticRIPOptionSetting: aligny=14" +*aligny 16/16: "%% FoomaticRIPOptionSetting: aligny=16" +*aligny 18/18: "%% FoomaticRIPOptionSetting: aligny=18" +*aligny 20/20: "%% FoomaticRIPOptionSetting: aligny=20" +*aligny 22/22: "%% FoomaticRIPOptionSetting: aligny=22" +*aligny 24/24: "%% FoomaticRIPOptionSetting: aligny=24" +*aligny 26/26: "%% FoomaticRIPOptionSetting: aligny=26" +*aligny 28/28: "%% FoomaticRIPOptionSetting: aligny=28" +*aligny 30/30: "%% FoomaticRIPOptionSetting: aligny=30" +*aligny 32/32: "%% FoomaticRIPOptionSetting: aligny=32" +*aligny 34/34: "%% FoomaticRIPOptionSetting: aligny=34" +*aligny 36/36: "%% FoomaticRIPOptionSetting: aligny=36" +*aligny 38/38: "%% FoomaticRIPOptionSetting: aligny=38" +*aligny 40/40: "%% FoomaticRIPOptionSetting: aligny=40" +*aligny 42/42: "%% FoomaticRIPOptionSetting: aligny=42" +*aligny 44/44: "%% FoomaticRIPOptionSetting: aligny=44" +*aligny 46/46: "%% FoomaticRIPOptionSetting: aligny=46" +*aligny 48/48: "%% FoomaticRIPOptionSetting: aligny=48" +*aligny 50/50: "%% FoomaticRIPOptionSetting: aligny=50" +*aligny 52/52: "%% FoomaticRIPOptionSetting: aligny=52" +*aligny 54/54: "%% FoomaticRIPOptionSetting: aligny=54" +*aligny 56/56: "%% FoomaticRIPOptionSetting: aligny=56" +*aligny 58/58: "%% FoomaticRIPOptionSetting: aligny=58" +*aligny 60/60: "%% FoomaticRIPOptionSetting: aligny=60" +*aligny 62/62: "%% FoomaticRIPOptionSetting: aligny=62" +*aligny 64/64: "%% FoomaticRIPOptionSetting: aligny=64" +*aligny 66/66: "%% FoomaticRIPOptionSetting: aligny=66" +*aligny 68/68: "%% FoomaticRIPOptionSetting: aligny=68" +*aligny 70/70: "%% FoomaticRIPOptionSetting: aligny=70" +*aligny 72/72: "%% FoomaticRIPOptionSetting: aligny=72" +*aligny 74/74: "%% FoomaticRIPOptionSetting: aligny=74" +*aligny 76/76: "%% FoomaticRIPOptionSetting: aligny=76" +*aligny 78/78: "%% FoomaticRIPOptionSetting: aligny=78" +*aligny 80/80: "%% FoomaticRIPOptionSetting: aligny=80" +*aligny 82/82: "%% FoomaticRIPOptionSetting: aligny=82" +*aligny 84/84: "%% FoomaticRIPOptionSetting: aligny=84" +*aligny 86/86: "%% FoomaticRIPOptionSetting: aligny=86" +*aligny 88/88: "%% FoomaticRIPOptionSetting: aligny=88" +*aligny 90/90: "%% FoomaticRIPOptionSetting: aligny=90" +*aligny 92/92: "%% FoomaticRIPOptionSetting: aligny=92" +*aligny 94/94: "%% FoomaticRIPOptionSetting: aligny=94" +*aligny 96/96: "%% FoomaticRIPOptionSetting: aligny=96" +*aligny 98/98: "%% FoomaticRIPOptionSetting: aligny=98" +*aligny 100/100: "%% FoomaticRIPOptionSetting: aligny=100" +*CloseUI: *aligny + +*CloseGroup: Alignment (in rows) + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-Color_LaserJet_2600n.ppd b/PPD/HP-Color_LaserJet_2600n.ppd new file mode 100644 index 0000000..106fb76 --- /dev/null +++ b/PPD/HP-Color_LaserJet_2600n.ppd @@ -0,0 +1,836 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-Color_LaserJet_2600n-foo2hp.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HP.PPD" +*Manufacturer: "HP" +*Product: "(HP Color LaserJet 2600n)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP Color LaserJet 2600n" +*ShortNickName: "HP Color LaserJet 2600n foo2hp" +*NickName: "HP Color LaserJet 2600n Foomatic/foo2hp (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP Color LaserJet 2600n;CMD:ACL;DES:HP Color LaserJet 2600n;DRV:Dfoo2hp,R1,M0,TF;" + +*driverName foo2hp/foo2hp: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hp.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 12.00 12.00 12 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-Color_LaserJet_2600n foo2hp +*FoomaticRIPCommandLine: "foo2hp2600-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *BitsPerPlane/Bits Per Plane: PickOne +*FoomaticRIPOption BitsPerPlane: enum CmdLine A +*OrderDependency: 120 AnySetup *BitsPerPlane +*DefaultBitsPerPlane: 1-BPP +*BitsPerPlane 1-BPP/1 Bit Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=1-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=1-BPP: "-b1 " +*BitsPerPlane 2-BPP/2 Bits Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=2-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=2-BPP: "-b2 " +*CloseUI: *BitsPerPlane + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "12.00 12.00 600.00 780.00" +*ImageableArea A4/A4: "12.00 12.00 583.00 830.00" +*ImageableArea A5/A5: "12.00 12.00 408.00 583.00" +*ImageableArea B5/B5: "12.00 12.00 486.00 696.00" +*ImageableArea Env10/Env #10: "12.00 12.00 285.00 672.00" +*ImageableArea EnvC5/Env C5: "12.00 12.00 447.00 637.00" +*ImageableArea EnvDL/Env DL: "12.00 12.00 299.00 611.00" +*ImageableArea EnvISOB5/Env ISO B5: "12.00 12.00 486.00 696.00" +*ImageableArea EnvMonarch/Env Monarch: "12.00 12.00 267.00 528.00" +*ImageableArea Executive/Executive: "12.00 12.00 510.00 744.00" +*ImageableArea Legal/Legal: "12.00 12.00 600.00 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s1 " +*InputSlot Tray3/Tray 3: "%% FoomaticRIPOptionSetting: InputSlot=Tray3" +*FoomaticRIPOptionSetting InputSlot=Tray3: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType photo/HP Color Laser Photo Paper: "%% FoomaticRIPOptionSetting: MediaType=photo" +*FoomaticRIPOptionSetting MediaType=photo: "-m278 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Cover/HP Premium Cover: "%% FoomaticRIPOptionSetting: MediaType=Cover" +*FoomaticRIPOptionSetting MediaType=Cover: "-m277 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=Glossy" +*FoomaticRIPOptionSetting MediaType=Glossy: "-m269 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType HeavyGlossy/Heavy Glossy: "%% FoomaticRIPOptionSetting: MediaType=HeavyGlossy" +*FoomaticRIPOptionSetting MediaType=HeavyGlossy: "-m270 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType LightGlossy/Light Glossy: "%% FoomaticRIPOptionSetting: MediaType=LightGlossy" +*FoomaticRIPOptionSetting MediaType=LightGlossy: "-m268 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Tough/Tough: "%% FoomaticRIPOptionSetting: MediaType=Tough" +*FoomaticRIPOptionSetting MediaType=Tough: "-m276 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: default +*ICM default/Default ICM color correction: "%% FoomaticRIPOptionSetting: ICM=default" +*FoomaticRIPOptionSetting ICM=default: "-Gdefault " +*ICM hp1215-argyll-0/HP 1215 - Argyll 0 (default): "%% FoomaticRIPOptionSetting: ICM=hp1215-argyll-0" +*FoomaticRIPOptionSetting ICM=hp1215-argyll-0: "-Ghp1215-argyll-0.icm && +" +*End +*ICM hpclj2600n-0/HP 1600/2600 - hpclj2600n-0.icm: "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-0" +*FoomaticRIPOptionSetting ICM=hpclj2600n-0: "-Ghpclj2600n-0.icm " +*ICM hpclj2600n-1/HP 1600/2600 - ICCFactory 1 (default): "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-1" +*FoomaticRIPOptionSetting ICM=hpclj2600n-1: "-Ghpclj2600n-1.icm " +*ICM km2430_2/File km2430_2.icm: "%% FoomaticRIPOptionSetting: ICM=km2430_2" +*FoomaticRIPOptionSetting ICM=km2430_2: "-Gkm2430_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Alignment (in rows)/Alignment (in rows) + +*OpenUI *alignc/Alignment Offset Cyan: PickOne +*FoomaticRIPOption alignc: int CmdLine A +*FoomaticRIPOptionPrototype alignc: "-Oc=%s " +*FoomaticRIPOptionRange alignc: -100 100 +*OrderDependency: 220 AnySetup *alignc +*Defaultalignc: 0 +*FoomaticRIPDefaultalignc: 0 +*alignc -100/-100: "%% FoomaticRIPOptionSetting: alignc=-100" +*alignc -98/-98: "%% FoomaticRIPOptionSetting: alignc=-98" +*alignc -96/-96: "%% FoomaticRIPOptionSetting: alignc=-96" +*alignc -94/-94: "%% FoomaticRIPOptionSetting: alignc=-94" +*alignc -92/-92: "%% FoomaticRIPOptionSetting: alignc=-92" +*alignc -90/-90: "%% FoomaticRIPOptionSetting: alignc=-90" +*alignc -88/-88: "%% FoomaticRIPOptionSetting: alignc=-88" +*alignc -86/-86: "%% FoomaticRIPOptionSetting: alignc=-86" +*alignc -84/-84: "%% FoomaticRIPOptionSetting: alignc=-84" +*alignc -82/-82: "%% FoomaticRIPOptionSetting: alignc=-82" +*alignc -80/-80: "%% FoomaticRIPOptionSetting: alignc=-80" +*alignc -78/-78: "%% FoomaticRIPOptionSetting: alignc=-78" +*alignc -76/-76: "%% FoomaticRIPOptionSetting: alignc=-76" +*alignc -74/-74: "%% FoomaticRIPOptionSetting: alignc=-74" +*alignc -72/-72: "%% FoomaticRIPOptionSetting: alignc=-72" +*alignc -70/-70: "%% FoomaticRIPOptionSetting: alignc=-70" +*alignc -68/-68: "%% FoomaticRIPOptionSetting: alignc=-68" +*alignc -66/-66: "%% FoomaticRIPOptionSetting: alignc=-66" +*alignc -64/-64: "%% FoomaticRIPOptionSetting: alignc=-64" +*alignc -62/-62: "%% FoomaticRIPOptionSetting: alignc=-62" +*alignc -60/-60: "%% FoomaticRIPOptionSetting: alignc=-60" +*alignc -58/-58: "%% FoomaticRIPOptionSetting: alignc=-58" +*alignc -56/-56: "%% FoomaticRIPOptionSetting: alignc=-56" +*alignc -54/-54: "%% FoomaticRIPOptionSetting: alignc=-54" +*alignc -52/-52: "%% FoomaticRIPOptionSetting: alignc=-52" +*alignc -50/-50: "%% FoomaticRIPOptionSetting: alignc=-50" +*alignc -48/-48: "%% FoomaticRIPOptionSetting: alignc=-48" +*alignc -46/-46: "%% FoomaticRIPOptionSetting: alignc=-46" +*alignc -44/-44: "%% FoomaticRIPOptionSetting: alignc=-44" +*alignc -42/-42: "%% FoomaticRIPOptionSetting: alignc=-42" +*alignc -40/-40: "%% FoomaticRIPOptionSetting: alignc=-40" +*alignc -38/-38: "%% FoomaticRIPOptionSetting: alignc=-38" +*alignc -36/-36: "%% FoomaticRIPOptionSetting: alignc=-36" +*alignc -34/-34: "%% FoomaticRIPOptionSetting: alignc=-34" +*alignc -32/-32: "%% FoomaticRIPOptionSetting: alignc=-32" +*alignc -30/-30: "%% FoomaticRIPOptionSetting: alignc=-30" +*alignc -28/-28: "%% FoomaticRIPOptionSetting: alignc=-28" +*alignc -26/-26: "%% FoomaticRIPOptionSetting: alignc=-26" +*alignc -24/-24: "%% FoomaticRIPOptionSetting: alignc=-24" +*alignc -22/-22: "%% FoomaticRIPOptionSetting: alignc=-22" +*alignc -20/-20: "%% FoomaticRIPOptionSetting: alignc=-20" +*alignc -18/-18: "%% FoomaticRIPOptionSetting: alignc=-18" +*alignc -16/-16: "%% FoomaticRIPOptionSetting: alignc=-16" +*alignc -14/-14: "%% FoomaticRIPOptionSetting: alignc=-14" +*alignc -12/-12: "%% FoomaticRIPOptionSetting: alignc=-12" +*alignc -10/-10: "%% FoomaticRIPOptionSetting: alignc=-10" +*alignc -8/-8: "%% FoomaticRIPOptionSetting: alignc=-8" +*alignc -6/-6: "%% FoomaticRIPOptionSetting: alignc=-6" +*alignc -4/-4: "%% FoomaticRIPOptionSetting: alignc=-4" +*alignc -2/-2: "%% FoomaticRIPOptionSetting: alignc=-2" +*alignc 0/0: "%% FoomaticRIPOptionSetting: alignc=0" +*alignc 2/2: "%% FoomaticRIPOptionSetting: alignc=2" +*alignc 4/4: "%% FoomaticRIPOptionSetting: alignc=4" +*alignc 6/6: "%% FoomaticRIPOptionSetting: alignc=6" +*alignc 8/8: "%% FoomaticRIPOptionSetting: alignc=8" +*alignc 10/10: "%% FoomaticRIPOptionSetting: alignc=10" +*alignc 12/12: "%% FoomaticRIPOptionSetting: alignc=12" +*alignc 14/14: "%% FoomaticRIPOptionSetting: alignc=14" +*alignc 16/16: "%% FoomaticRIPOptionSetting: alignc=16" +*alignc 18/18: "%% FoomaticRIPOptionSetting: alignc=18" +*alignc 20/20: "%% FoomaticRIPOptionSetting: alignc=20" +*alignc 22/22: "%% FoomaticRIPOptionSetting: alignc=22" +*alignc 24/24: "%% FoomaticRIPOptionSetting: alignc=24" +*alignc 26/26: "%% FoomaticRIPOptionSetting: alignc=26" +*alignc 28/28: "%% FoomaticRIPOptionSetting: alignc=28" +*alignc 30/30: "%% FoomaticRIPOptionSetting: alignc=30" +*alignc 32/32: "%% FoomaticRIPOptionSetting: alignc=32" +*alignc 34/34: "%% FoomaticRIPOptionSetting: alignc=34" +*alignc 36/36: "%% FoomaticRIPOptionSetting: alignc=36" +*alignc 38/38: "%% FoomaticRIPOptionSetting: alignc=38" +*alignc 40/40: "%% FoomaticRIPOptionSetting: alignc=40" +*alignc 42/42: "%% FoomaticRIPOptionSetting: alignc=42" +*alignc 44/44: "%% FoomaticRIPOptionSetting: alignc=44" +*alignc 46/46: "%% FoomaticRIPOptionSetting: alignc=46" +*alignc 48/48: "%% FoomaticRIPOptionSetting: alignc=48" +*alignc 50/50: "%% FoomaticRIPOptionSetting: alignc=50" +*alignc 52/52: "%% FoomaticRIPOptionSetting: alignc=52" +*alignc 54/54: "%% FoomaticRIPOptionSetting: alignc=54" +*alignc 56/56: "%% FoomaticRIPOptionSetting: alignc=56" +*alignc 58/58: "%% FoomaticRIPOptionSetting: alignc=58" +*alignc 60/60: "%% FoomaticRIPOptionSetting: alignc=60" +*alignc 62/62: "%% FoomaticRIPOptionSetting: alignc=62" +*alignc 64/64: "%% FoomaticRIPOptionSetting: alignc=64" +*alignc 66/66: "%% FoomaticRIPOptionSetting: alignc=66" +*alignc 68/68: "%% FoomaticRIPOptionSetting: alignc=68" +*alignc 70/70: "%% FoomaticRIPOptionSetting: alignc=70" +*alignc 72/72: "%% FoomaticRIPOptionSetting: alignc=72" +*alignc 74/74: "%% FoomaticRIPOptionSetting: alignc=74" +*alignc 76/76: "%% FoomaticRIPOptionSetting: alignc=76" +*alignc 78/78: "%% FoomaticRIPOptionSetting: alignc=78" +*alignc 80/80: "%% FoomaticRIPOptionSetting: alignc=80" +*alignc 82/82: "%% FoomaticRIPOptionSetting: alignc=82" +*alignc 84/84: "%% FoomaticRIPOptionSetting: alignc=84" +*alignc 86/86: "%% FoomaticRIPOptionSetting: alignc=86" +*alignc 88/88: "%% FoomaticRIPOptionSetting: alignc=88" +*alignc 90/90: "%% FoomaticRIPOptionSetting: alignc=90" +*alignc 92/92: "%% FoomaticRIPOptionSetting: alignc=92" +*alignc 94/94: "%% FoomaticRIPOptionSetting: alignc=94" +*alignc 96/96: "%% FoomaticRIPOptionSetting: alignc=96" +*alignc 98/98: "%% FoomaticRIPOptionSetting: alignc=98" +*alignc 100/100: "%% FoomaticRIPOptionSetting: alignc=100" +*CloseUI: *alignc + +*OpenUI *alignm/Alignment Offset Magenta: PickOne +*FoomaticRIPOption alignm: int CmdLine A +*FoomaticRIPOptionPrototype alignm: "-Om=%s " +*FoomaticRIPOptionRange alignm: -100 100 +*OrderDependency: 220 AnySetup *alignm +*Defaultalignm: 0 +*FoomaticRIPDefaultalignm: 0 +*alignm -100/-100: "%% FoomaticRIPOptionSetting: alignm=-100" +*alignm -98/-98: "%% FoomaticRIPOptionSetting: alignm=-98" +*alignm -96/-96: "%% FoomaticRIPOptionSetting: alignm=-96" +*alignm -94/-94: "%% FoomaticRIPOptionSetting: alignm=-94" +*alignm -92/-92: "%% FoomaticRIPOptionSetting: alignm=-92" +*alignm -90/-90: "%% FoomaticRIPOptionSetting: alignm=-90" +*alignm -88/-88: "%% FoomaticRIPOptionSetting: alignm=-88" +*alignm -86/-86: "%% FoomaticRIPOptionSetting: alignm=-86" +*alignm -84/-84: "%% FoomaticRIPOptionSetting: alignm=-84" +*alignm -82/-82: "%% FoomaticRIPOptionSetting: alignm=-82" +*alignm -80/-80: "%% FoomaticRIPOptionSetting: alignm=-80" +*alignm -78/-78: "%% FoomaticRIPOptionSetting: alignm=-78" +*alignm -76/-76: "%% FoomaticRIPOptionSetting: alignm=-76" +*alignm -74/-74: "%% FoomaticRIPOptionSetting: alignm=-74" +*alignm -72/-72: "%% FoomaticRIPOptionSetting: alignm=-72" +*alignm -70/-70: "%% FoomaticRIPOptionSetting: alignm=-70" +*alignm -68/-68: "%% FoomaticRIPOptionSetting: alignm=-68" +*alignm -66/-66: "%% FoomaticRIPOptionSetting: alignm=-66" +*alignm -64/-64: "%% FoomaticRIPOptionSetting: alignm=-64" +*alignm -62/-62: "%% FoomaticRIPOptionSetting: alignm=-62" +*alignm -60/-60: "%% FoomaticRIPOptionSetting: alignm=-60" +*alignm -58/-58: "%% FoomaticRIPOptionSetting: alignm=-58" +*alignm -56/-56: "%% FoomaticRIPOptionSetting: alignm=-56" +*alignm -54/-54: "%% FoomaticRIPOptionSetting: alignm=-54" +*alignm -52/-52: "%% FoomaticRIPOptionSetting: alignm=-52" +*alignm -50/-50: "%% FoomaticRIPOptionSetting: alignm=-50" +*alignm -48/-48: "%% FoomaticRIPOptionSetting: alignm=-48" +*alignm -46/-46: "%% FoomaticRIPOptionSetting: alignm=-46" +*alignm -44/-44: "%% FoomaticRIPOptionSetting: alignm=-44" +*alignm -42/-42: "%% FoomaticRIPOptionSetting: alignm=-42" +*alignm -40/-40: "%% FoomaticRIPOptionSetting: alignm=-40" +*alignm -38/-38: "%% FoomaticRIPOptionSetting: alignm=-38" +*alignm -36/-36: "%% FoomaticRIPOptionSetting: alignm=-36" +*alignm -34/-34: "%% FoomaticRIPOptionSetting: alignm=-34" +*alignm -32/-32: "%% FoomaticRIPOptionSetting: alignm=-32" +*alignm -30/-30: "%% FoomaticRIPOptionSetting: alignm=-30" +*alignm -28/-28: "%% FoomaticRIPOptionSetting: alignm=-28" +*alignm -26/-26: "%% FoomaticRIPOptionSetting: alignm=-26" +*alignm -24/-24: "%% FoomaticRIPOptionSetting: alignm=-24" +*alignm -22/-22: "%% FoomaticRIPOptionSetting: alignm=-22" +*alignm -20/-20: "%% FoomaticRIPOptionSetting: alignm=-20" +*alignm -18/-18: "%% FoomaticRIPOptionSetting: alignm=-18" +*alignm -16/-16: "%% FoomaticRIPOptionSetting: alignm=-16" +*alignm -14/-14: "%% FoomaticRIPOptionSetting: alignm=-14" +*alignm -12/-12: "%% FoomaticRIPOptionSetting: alignm=-12" +*alignm -10/-10: "%% FoomaticRIPOptionSetting: alignm=-10" +*alignm -8/-8: "%% FoomaticRIPOptionSetting: alignm=-8" +*alignm -6/-6: "%% FoomaticRIPOptionSetting: alignm=-6" +*alignm -4/-4: "%% FoomaticRIPOptionSetting: alignm=-4" +*alignm -2/-2: "%% FoomaticRIPOptionSetting: alignm=-2" +*alignm 0/0: "%% FoomaticRIPOptionSetting: alignm=0" +*alignm 2/2: "%% FoomaticRIPOptionSetting: alignm=2" +*alignm 4/4: "%% FoomaticRIPOptionSetting: alignm=4" +*alignm 6/6: "%% FoomaticRIPOptionSetting: alignm=6" +*alignm 8/8: "%% FoomaticRIPOptionSetting: alignm=8" +*alignm 10/10: "%% FoomaticRIPOptionSetting: alignm=10" +*alignm 12/12: "%% FoomaticRIPOptionSetting: alignm=12" +*alignm 14/14: "%% FoomaticRIPOptionSetting: alignm=14" +*alignm 16/16: "%% FoomaticRIPOptionSetting: alignm=16" +*alignm 18/18: "%% FoomaticRIPOptionSetting: alignm=18" +*alignm 20/20: "%% FoomaticRIPOptionSetting: alignm=20" +*alignm 22/22: "%% FoomaticRIPOptionSetting: alignm=22" +*alignm 24/24: "%% FoomaticRIPOptionSetting: alignm=24" +*alignm 26/26: "%% FoomaticRIPOptionSetting: alignm=26" +*alignm 28/28: "%% FoomaticRIPOptionSetting: alignm=28" +*alignm 30/30: "%% FoomaticRIPOptionSetting: alignm=30" +*alignm 32/32: "%% FoomaticRIPOptionSetting: alignm=32" +*alignm 34/34: "%% FoomaticRIPOptionSetting: alignm=34" +*alignm 36/36: "%% FoomaticRIPOptionSetting: alignm=36" +*alignm 38/38: "%% FoomaticRIPOptionSetting: alignm=38" +*alignm 40/40: "%% FoomaticRIPOptionSetting: alignm=40" +*alignm 42/42: "%% FoomaticRIPOptionSetting: alignm=42" +*alignm 44/44: "%% FoomaticRIPOptionSetting: alignm=44" +*alignm 46/46: "%% FoomaticRIPOptionSetting: alignm=46" +*alignm 48/48: "%% FoomaticRIPOptionSetting: alignm=48" +*alignm 50/50: "%% FoomaticRIPOptionSetting: alignm=50" +*alignm 52/52: "%% FoomaticRIPOptionSetting: alignm=52" +*alignm 54/54: "%% FoomaticRIPOptionSetting: alignm=54" +*alignm 56/56: "%% FoomaticRIPOptionSetting: alignm=56" +*alignm 58/58: "%% FoomaticRIPOptionSetting: alignm=58" +*alignm 60/60: "%% FoomaticRIPOptionSetting: alignm=60" +*alignm 62/62: "%% FoomaticRIPOptionSetting: alignm=62" +*alignm 64/64: "%% FoomaticRIPOptionSetting: alignm=64" +*alignm 66/66: "%% FoomaticRIPOptionSetting: alignm=66" +*alignm 68/68: "%% FoomaticRIPOptionSetting: alignm=68" +*alignm 70/70: "%% FoomaticRIPOptionSetting: alignm=70" +*alignm 72/72: "%% FoomaticRIPOptionSetting: alignm=72" +*alignm 74/74: "%% FoomaticRIPOptionSetting: alignm=74" +*alignm 76/76: "%% FoomaticRIPOptionSetting: alignm=76" +*alignm 78/78: "%% FoomaticRIPOptionSetting: alignm=78" +*alignm 80/80: "%% FoomaticRIPOptionSetting: alignm=80" +*alignm 82/82: "%% FoomaticRIPOptionSetting: alignm=82" +*alignm 84/84: "%% FoomaticRIPOptionSetting: alignm=84" +*alignm 86/86: "%% FoomaticRIPOptionSetting: alignm=86" +*alignm 88/88: "%% FoomaticRIPOptionSetting: alignm=88" +*alignm 90/90: "%% FoomaticRIPOptionSetting: alignm=90" +*alignm 92/92: "%% FoomaticRIPOptionSetting: alignm=92" +*alignm 94/94: "%% FoomaticRIPOptionSetting: alignm=94" +*alignm 96/96: "%% FoomaticRIPOptionSetting: alignm=96" +*alignm 98/98: "%% FoomaticRIPOptionSetting: alignm=98" +*alignm 100/100: "%% FoomaticRIPOptionSetting: alignm=100" +*CloseUI: *alignm + +*OpenUI *aligny/Alignment Offset Yellow: PickOne +*FoomaticRIPOption aligny: int CmdLine A +*FoomaticRIPOptionPrototype aligny: "-Oy=%s " +*FoomaticRIPOptionRange aligny: -100 100 +*OrderDependency: 220 AnySetup *aligny +*Defaultaligny: 0 +*FoomaticRIPDefaultaligny: 0 +*aligny -100/-100: "%% FoomaticRIPOptionSetting: aligny=-100" +*aligny -98/-98: "%% FoomaticRIPOptionSetting: aligny=-98" +*aligny -96/-96: "%% FoomaticRIPOptionSetting: aligny=-96" +*aligny -94/-94: "%% FoomaticRIPOptionSetting: aligny=-94" +*aligny -92/-92: "%% FoomaticRIPOptionSetting: aligny=-92" +*aligny -90/-90: "%% FoomaticRIPOptionSetting: aligny=-90" +*aligny -88/-88: "%% FoomaticRIPOptionSetting: aligny=-88" +*aligny -86/-86: "%% FoomaticRIPOptionSetting: aligny=-86" +*aligny -84/-84: "%% FoomaticRIPOptionSetting: aligny=-84" +*aligny -82/-82: "%% FoomaticRIPOptionSetting: aligny=-82" +*aligny -80/-80: "%% FoomaticRIPOptionSetting: aligny=-80" +*aligny -78/-78: "%% FoomaticRIPOptionSetting: aligny=-78" +*aligny -76/-76: "%% FoomaticRIPOptionSetting: aligny=-76" +*aligny -74/-74: "%% FoomaticRIPOptionSetting: aligny=-74" +*aligny -72/-72: "%% FoomaticRIPOptionSetting: aligny=-72" +*aligny -70/-70: "%% FoomaticRIPOptionSetting: aligny=-70" +*aligny -68/-68: "%% FoomaticRIPOptionSetting: aligny=-68" +*aligny -66/-66: "%% FoomaticRIPOptionSetting: aligny=-66" +*aligny -64/-64: "%% FoomaticRIPOptionSetting: aligny=-64" +*aligny -62/-62: "%% FoomaticRIPOptionSetting: aligny=-62" +*aligny -60/-60: "%% FoomaticRIPOptionSetting: aligny=-60" +*aligny -58/-58: "%% FoomaticRIPOptionSetting: aligny=-58" +*aligny -56/-56: "%% FoomaticRIPOptionSetting: aligny=-56" +*aligny -54/-54: "%% FoomaticRIPOptionSetting: aligny=-54" +*aligny -52/-52: "%% FoomaticRIPOptionSetting: aligny=-52" +*aligny -50/-50: "%% FoomaticRIPOptionSetting: aligny=-50" +*aligny -48/-48: "%% FoomaticRIPOptionSetting: aligny=-48" +*aligny -46/-46: "%% FoomaticRIPOptionSetting: aligny=-46" +*aligny -44/-44: "%% FoomaticRIPOptionSetting: aligny=-44" +*aligny -42/-42: "%% FoomaticRIPOptionSetting: aligny=-42" +*aligny -40/-40: "%% FoomaticRIPOptionSetting: aligny=-40" +*aligny -38/-38: "%% FoomaticRIPOptionSetting: aligny=-38" +*aligny -36/-36: "%% FoomaticRIPOptionSetting: aligny=-36" +*aligny -34/-34: "%% FoomaticRIPOptionSetting: aligny=-34" +*aligny -32/-32: "%% FoomaticRIPOptionSetting: aligny=-32" +*aligny -30/-30: "%% FoomaticRIPOptionSetting: aligny=-30" +*aligny -28/-28: "%% FoomaticRIPOptionSetting: aligny=-28" +*aligny -26/-26: "%% FoomaticRIPOptionSetting: aligny=-26" +*aligny -24/-24: "%% FoomaticRIPOptionSetting: aligny=-24" +*aligny -22/-22: "%% FoomaticRIPOptionSetting: aligny=-22" +*aligny -20/-20: "%% FoomaticRIPOptionSetting: aligny=-20" +*aligny -18/-18: "%% FoomaticRIPOptionSetting: aligny=-18" +*aligny -16/-16: "%% FoomaticRIPOptionSetting: aligny=-16" +*aligny -14/-14: "%% FoomaticRIPOptionSetting: aligny=-14" +*aligny -12/-12: "%% FoomaticRIPOptionSetting: aligny=-12" +*aligny -10/-10: "%% FoomaticRIPOptionSetting: aligny=-10" +*aligny -8/-8: "%% FoomaticRIPOptionSetting: aligny=-8" +*aligny -6/-6: "%% FoomaticRIPOptionSetting: aligny=-6" +*aligny -4/-4: "%% FoomaticRIPOptionSetting: aligny=-4" +*aligny -2/-2: "%% FoomaticRIPOptionSetting: aligny=-2" +*aligny 0/0: "%% FoomaticRIPOptionSetting: aligny=0" +*aligny 2/2: "%% FoomaticRIPOptionSetting: aligny=2" +*aligny 4/4: "%% FoomaticRIPOptionSetting: aligny=4" +*aligny 6/6: "%% FoomaticRIPOptionSetting: aligny=6" +*aligny 8/8: "%% FoomaticRIPOptionSetting: aligny=8" +*aligny 10/10: "%% FoomaticRIPOptionSetting: aligny=10" +*aligny 12/12: "%% FoomaticRIPOptionSetting: aligny=12" +*aligny 14/14: "%% FoomaticRIPOptionSetting: aligny=14" +*aligny 16/16: "%% FoomaticRIPOptionSetting: aligny=16" +*aligny 18/18: "%% FoomaticRIPOptionSetting: aligny=18" +*aligny 20/20: "%% FoomaticRIPOptionSetting: aligny=20" +*aligny 22/22: "%% FoomaticRIPOptionSetting: aligny=22" +*aligny 24/24: "%% FoomaticRIPOptionSetting: aligny=24" +*aligny 26/26: "%% FoomaticRIPOptionSetting: aligny=26" +*aligny 28/28: "%% FoomaticRIPOptionSetting: aligny=28" +*aligny 30/30: "%% FoomaticRIPOptionSetting: aligny=30" +*aligny 32/32: "%% FoomaticRIPOptionSetting: aligny=32" +*aligny 34/34: "%% FoomaticRIPOptionSetting: aligny=34" +*aligny 36/36: "%% FoomaticRIPOptionSetting: aligny=36" +*aligny 38/38: "%% FoomaticRIPOptionSetting: aligny=38" +*aligny 40/40: "%% FoomaticRIPOptionSetting: aligny=40" +*aligny 42/42: "%% FoomaticRIPOptionSetting: aligny=42" +*aligny 44/44: "%% FoomaticRIPOptionSetting: aligny=44" +*aligny 46/46: "%% FoomaticRIPOptionSetting: aligny=46" +*aligny 48/48: "%% FoomaticRIPOptionSetting: aligny=48" +*aligny 50/50: "%% FoomaticRIPOptionSetting: aligny=50" +*aligny 52/52: "%% FoomaticRIPOptionSetting: aligny=52" +*aligny 54/54: "%% FoomaticRIPOptionSetting: aligny=54" +*aligny 56/56: "%% FoomaticRIPOptionSetting: aligny=56" +*aligny 58/58: "%% FoomaticRIPOptionSetting: aligny=58" +*aligny 60/60: "%% FoomaticRIPOptionSetting: aligny=60" +*aligny 62/62: "%% FoomaticRIPOptionSetting: aligny=62" +*aligny 64/64: "%% FoomaticRIPOptionSetting: aligny=64" +*aligny 66/66: "%% FoomaticRIPOptionSetting: aligny=66" +*aligny 68/68: "%% FoomaticRIPOptionSetting: aligny=68" +*aligny 70/70: "%% FoomaticRIPOptionSetting: aligny=70" +*aligny 72/72: "%% FoomaticRIPOptionSetting: aligny=72" +*aligny 74/74: "%% FoomaticRIPOptionSetting: aligny=74" +*aligny 76/76: "%% FoomaticRIPOptionSetting: aligny=76" +*aligny 78/78: "%% FoomaticRIPOptionSetting: aligny=78" +*aligny 80/80: "%% FoomaticRIPOptionSetting: aligny=80" +*aligny 82/82: "%% FoomaticRIPOptionSetting: aligny=82" +*aligny 84/84: "%% FoomaticRIPOptionSetting: aligny=84" +*aligny 86/86: "%% FoomaticRIPOptionSetting: aligny=86" +*aligny 88/88: "%% FoomaticRIPOptionSetting: aligny=88" +*aligny 90/90: "%% FoomaticRIPOptionSetting: aligny=90" +*aligny 92/92: "%% FoomaticRIPOptionSetting: aligny=92" +*aligny 94/94: "%% FoomaticRIPOptionSetting: aligny=94" +*aligny 96/96: "%% FoomaticRIPOptionSetting: aligny=96" +*aligny 98/98: "%% FoomaticRIPOptionSetting: aligny=98" +*aligny 100/100: "%% FoomaticRIPOptionSetting: aligny=100" +*CloseUI: *aligny + +*CloseGroup: Alignment (in rows) + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-Color_LaserJet_CP1215.ppd b/PPD/HP-Color_LaserJet_CP1215.ppd new file mode 100644 index 0000000..09ebeae --- /dev/null +++ b/PPD/HP-Color_LaserJet_CP1215.ppd @@ -0,0 +1,836 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-Color_LaserJet_CP1215-foo2hp.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HP.PPD" +*Manufacturer: "HP" +*Product: "(HP Color LaserJet CP1215)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP Color LaserJet CP1215" +*ShortNickName: "HP Color LaserJet CP1215 foo2hp" +*NickName: "HP Color LaserJet CP1215 Foomatic/foo2hp (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP Color LaserJet CP1215;CMD:ZJS,HBS,PJL,ACL,HTTP;DES:HP Color LaserJet CP1215;DRV:Dfoo2hp,R1,M0,TF;" + +*driverName foo2hp/foo2hp: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hp.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 18 14.40 18 14.4 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-Color_LaserJet_CP1215 foo2hp +*FoomaticRIPCommandLine: "foo2hp2600-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z1: "-z1 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *BitsPerPlane/Bits Per Plane: PickOne +*FoomaticRIPOption BitsPerPlane: enum CmdLine A +*OrderDependency: 120 AnySetup *BitsPerPlane +*DefaultBitsPerPlane: 1-BPP +*BitsPerPlane 1-BPP/1 Bit Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=1-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=1-BPP: "-b1 " +*BitsPerPlane 2-BPP/2 Bits Per Plane: "%% FoomaticRIPOptionSetting: BitsPerPlane=2-BPP" +*FoomaticRIPOptionSetting BitsPerPlane=2-BPP: "-b2 " +*CloseUI: *BitsPerPlane + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "18 14.40 594 777.60" +*ImageableArea A4/A4: "18 14.40 577 827.60" +*ImageableArea A5/A5: "18 14.40 402 580.60" +*ImageableArea B5/B5: "18 14.40 480 693.60" +*ImageableArea Env10/Env #10: "18 14.40 279 669.60" +*ImageableArea EnvC5/Env C5: "18 14.40 441 634.60" +*ImageableArea EnvDL/Env DL: "18 14.40 293 608.60" +*ImageableArea EnvISOB5/Env ISO B5: "18 14.40 480 693.60" +*ImageableArea EnvMonarch/Env Monarch: "18 14.40 261 525.60" +*ImageableArea Executive/Executive: "18 14.40 504 741.60" +*ImageableArea Legal/Legal: "18 14.40 594 993.60" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s1 " +*InputSlot Tray3/Tray 3: "%% FoomaticRIPOptionSetting: InputSlot=Tray3" +*FoomaticRIPOptionSetting InputSlot=Tray3: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType photo/HP Color Laser Photo Paper: "%% FoomaticRIPOptionSetting: MediaType=photo" +*FoomaticRIPOptionSetting MediaType=photo: "-m278 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Cover/HP Premium Cover: "%% FoomaticRIPOptionSetting: MediaType=Cover" +*FoomaticRIPOptionSetting MediaType=Cover: "-m277 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=Glossy" +*FoomaticRIPOptionSetting MediaType=Glossy: "-m269 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType HeavyGlossy/Heavy Glossy: "%% FoomaticRIPOptionSetting: MediaType=HeavyGlossy" +*FoomaticRIPOptionSetting MediaType=HeavyGlossy: "-m270 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType LightGlossy/Light Glossy: "%% FoomaticRIPOptionSetting: MediaType=LightGlossy" +*FoomaticRIPOptionSetting MediaType=LightGlossy: "-m268 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Tough/Tough: "%% FoomaticRIPOptionSetting: MediaType=Tough" +*FoomaticRIPOptionSetting MediaType=Tough: "-m276 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: default +*ICM default/Default ICM color correction: "%% FoomaticRIPOptionSetting: ICM=default" +*FoomaticRIPOptionSetting ICM=default: "-Gdefault " +*ICM hp1215-argyll-0/HP 1215 - Argyll 0 (default): "%% FoomaticRIPOptionSetting: ICM=hp1215-argyll-0" +*FoomaticRIPOptionSetting ICM=hp1215-argyll-0: "-Ghp1215-argyll-0.icm && +" +*End +*ICM hpclj2600n-0/HP 1600/2600 - hpclj2600n-0.icm: "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-0" +*FoomaticRIPOptionSetting ICM=hpclj2600n-0: "-Ghpclj2600n-0.icm " +*ICM hpclj2600n-1/HP 1600/2600 - ICCFactory 1 (default): "%% FoomaticRIPOptionSetting: ICM=hpclj2600n-1" +*FoomaticRIPOptionSetting ICM=hpclj2600n-1: "-Ghpclj2600n-1.icm " +*ICM km2430_2/File km2430_2.icm: "%% FoomaticRIPOptionSetting: ICM=km2430_2" +*FoomaticRIPOptionSetting ICM=km2430_2: "-Gkm2430_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Alignment (in rows)/Alignment (in rows) + +*OpenUI *alignc/Alignment Offset Cyan: PickOne +*FoomaticRIPOption alignc: int CmdLine A +*FoomaticRIPOptionPrototype alignc: "-Oc=%s " +*FoomaticRIPOptionRange alignc: -100 100 +*OrderDependency: 220 AnySetup *alignc +*Defaultalignc: 0 +*FoomaticRIPDefaultalignc: 0 +*alignc -100/-100: "%% FoomaticRIPOptionSetting: alignc=-100" +*alignc -98/-98: "%% FoomaticRIPOptionSetting: alignc=-98" +*alignc -96/-96: "%% FoomaticRIPOptionSetting: alignc=-96" +*alignc -94/-94: "%% FoomaticRIPOptionSetting: alignc=-94" +*alignc -92/-92: "%% FoomaticRIPOptionSetting: alignc=-92" +*alignc -90/-90: "%% FoomaticRIPOptionSetting: alignc=-90" +*alignc -88/-88: "%% FoomaticRIPOptionSetting: alignc=-88" +*alignc -86/-86: "%% FoomaticRIPOptionSetting: alignc=-86" +*alignc -84/-84: "%% FoomaticRIPOptionSetting: alignc=-84" +*alignc -82/-82: "%% FoomaticRIPOptionSetting: alignc=-82" +*alignc -80/-80: "%% FoomaticRIPOptionSetting: alignc=-80" +*alignc -78/-78: "%% FoomaticRIPOptionSetting: alignc=-78" +*alignc -76/-76: "%% FoomaticRIPOptionSetting: alignc=-76" +*alignc -74/-74: "%% FoomaticRIPOptionSetting: alignc=-74" +*alignc -72/-72: "%% FoomaticRIPOptionSetting: alignc=-72" +*alignc -70/-70: "%% FoomaticRIPOptionSetting: alignc=-70" +*alignc -68/-68: "%% FoomaticRIPOptionSetting: alignc=-68" +*alignc -66/-66: "%% FoomaticRIPOptionSetting: alignc=-66" +*alignc -64/-64: "%% FoomaticRIPOptionSetting: alignc=-64" +*alignc -62/-62: "%% FoomaticRIPOptionSetting: alignc=-62" +*alignc -60/-60: "%% FoomaticRIPOptionSetting: alignc=-60" +*alignc -58/-58: "%% FoomaticRIPOptionSetting: alignc=-58" +*alignc -56/-56: "%% FoomaticRIPOptionSetting: alignc=-56" +*alignc -54/-54: "%% FoomaticRIPOptionSetting: alignc=-54" +*alignc -52/-52: "%% FoomaticRIPOptionSetting: alignc=-52" +*alignc -50/-50: "%% FoomaticRIPOptionSetting: alignc=-50" +*alignc -48/-48: "%% FoomaticRIPOptionSetting: alignc=-48" +*alignc -46/-46: "%% FoomaticRIPOptionSetting: alignc=-46" +*alignc -44/-44: "%% FoomaticRIPOptionSetting: alignc=-44" +*alignc -42/-42: "%% FoomaticRIPOptionSetting: alignc=-42" +*alignc -40/-40: "%% FoomaticRIPOptionSetting: alignc=-40" +*alignc -38/-38: "%% FoomaticRIPOptionSetting: alignc=-38" +*alignc -36/-36: "%% FoomaticRIPOptionSetting: alignc=-36" +*alignc -34/-34: "%% FoomaticRIPOptionSetting: alignc=-34" +*alignc -32/-32: "%% FoomaticRIPOptionSetting: alignc=-32" +*alignc -30/-30: "%% FoomaticRIPOptionSetting: alignc=-30" +*alignc -28/-28: "%% FoomaticRIPOptionSetting: alignc=-28" +*alignc -26/-26: "%% FoomaticRIPOptionSetting: alignc=-26" +*alignc -24/-24: "%% FoomaticRIPOptionSetting: alignc=-24" +*alignc -22/-22: "%% FoomaticRIPOptionSetting: alignc=-22" +*alignc -20/-20: "%% FoomaticRIPOptionSetting: alignc=-20" +*alignc -18/-18: "%% FoomaticRIPOptionSetting: alignc=-18" +*alignc -16/-16: "%% FoomaticRIPOptionSetting: alignc=-16" +*alignc -14/-14: "%% FoomaticRIPOptionSetting: alignc=-14" +*alignc -12/-12: "%% FoomaticRIPOptionSetting: alignc=-12" +*alignc -10/-10: "%% FoomaticRIPOptionSetting: alignc=-10" +*alignc -8/-8: "%% FoomaticRIPOptionSetting: alignc=-8" +*alignc -6/-6: "%% FoomaticRIPOptionSetting: alignc=-6" +*alignc -4/-4: "%% FoomaticRIPOptionSetting: alignc=-4" +*alignc -2/-2: "%% FoomaticRIPOptionSetting: alignc=-2" +*alignc 0/0: "%% FoomaticRIPOptionSetting: alignc=0" +*alignc 2/2: "%% FoomaticRIPOptionSetting: alignc=2" +*alignc 4/4: "%% FoomaticRIPOptionSetting: alignc=4" +*alignc 6/6: "%% FoomaticRIPOptionSetting: alignc=6" +*alignc 8/8: "%% FoomaticRIPOptionSetting: alignc=8" +*alignc 10/10: "%% FoomaticRIPOptionSetting: alignc=10" +*alignc 12/12: "%% FoomaticRIPOptionSetting: alignc=12" +*alignc 14/14: "%% FoomaticRIPOptionSetting: alignc=14" +*alignc 16/16: "%% FoomaticRIPOptionSetting: alignc=16" +*alignc 18/18: "%% FoomaticRIPOptionSetting: alignc=18" +*alignc 20/20: "%% FoomaticRIPOptionSetting: alignc=20" +*alignc 22/22: "%% FoomaticRIPOptionSetting: alignc=22" +*alignc 24/24: "%% FoomaticRIPOptionSetting: alignc=24" +*alignc 26/26: "%% FoomaticRIPOptionSetting: alignc=26" +*alignc 28/28: "%% FoomaticRIPOptionSetting: alignc=28" +*alignc 30/30: "%% FoomaticRIPOptionSetting: alignc=30" +*alignc 32/32: "%% FoomaticRIPOptionSetting: alignc=32" +*alignc 34/34: "%% FoomaticRIPOptionSetting: alignc=34" +*alignc 36/36: "%% FoomaticRIPOptionSetting: alignc=36" +*alignc 38/38: "%% FoomaticRIPOptionSetting: alignc=38" +*alignc 40/40: "%% FoomaticRIPOptionSetting: alignc=40" +*alignc 42/42: "%% FoomaticRIPOptionSetting: alignc=42" +*alignc 44/44: "%% FoomaticRIPOptionSetting: alignc=44" +*alignc 46/46: "%% FoomaticRIPOptionSetting: alignc=46" +*alignc 48/48: "%% FoomaticRIPOptionSetting: alignc=48" +*alignc 50/50: "%% FoomaticRIPOptionSetting: alignc=50" +*alignc 52/52: "%% FoomaticRIPOptionSetting: alignc=52" +*alignc 54/54: "%% FoomaticRIPOptionSetting: alignc=54" +*alignc 56/56: "%% FoomaticRIPOptionSetting: alignc=56" +*alignc 58/58: "%% FoomaticRIPOptionSetting: alignc=58" +*alignc 60/60: "%% FoomaticRIPOptionSetting: alignc=60" +*alignc 62/62: "%% FoomaticRIPOptionSetting: alignc=62" +*alignc 64/64: "%% FoomaticRIPOptionSetting: alignc=64" +*alignc 66/66: "%% FoomaticRIPOptionSetting: alignc=66" +*alignc 68/68: "%% FoomaticRIPOptionSetting: alignc=68" +*alignc 70/70: "%% FoomaticRIPOptionSetting: alignc=70" +*alignc 72/72: "%% FoomaticRIPOptionSetting: alignc=72" +*alignc 74/74: "%% FoomaticRIPOptionSetting: alignc=74" +*alignc 76/76: "%% FoomaticRIPOptionSetting: alignc=76" +*alignc 78/78: "%% FoomaticRIPOptionSetting: alignc=78" +*alignc 80/80: "%% FoomaticRIPOptionSetting: alignc=80" +*alignc 82/82: "%% FoomaticRIPOptionSetting: alignc=82" +*alignc 84/84: "%% FoomaticRIPOptionSetting: alignc=84" +*alignc 86/86: "%% FoomaticRIPOptionSetting: alignc=86" +*alignc 88/88: "%% FoomaticRIPOptionSetting: alignc=88" +*alignc 90/90: "%% FoomaticRIPOptionSetting: alignc=90" +*alignc 92/92: "%% FoomaticRIPOptionSetting: alignc=92" +*alignc 94/94: "%% FoomaticRIPOptionSetting: alignc=94" +*alignc 96/96: "%% FoomaticRIPOptionSetting: alignc=96" +*alignc 98/98: "%% FoomaticRIPOptionSetting: alignc=98" +*alignc 100/100: "%% FoomaticRIPOptionSetting: alignc=100" +*CloseUI: *alignc + +*OpenUI *alignm/Alignment Offset Magenta: PickOne +*FoomaticRIPOption alignm: int CmdLine A +*FoomaticRIPOptionPrototype alignm: "-Om=%s " +*FoomaticRIPOptionRange alignm: -100 100 +*OrderDependency: 220 AnySetup *alignm +*Defaultalignm: 0 +*FoomaticRIPDefaultalignm: 0 +*alignm -100/-100: "%% FoomaticRIPOptionSetting: alignm=-100" +*alignm -98/-98: "%% FoomaticRIPOptionSetting: alignm=-98" +*alignm -96/-96: "%% FoomaticRIPOptionSetting: alignm=-96" +*alignm -94/-94: "%% FoomaticRIPOptionSetting: alignm=-94" +*alignm -92/-92: "%% FoomaticRIPOptionSetting: alignm=-92" +*alignm -90/-90: "%% FoomaticRIPOptionSetting: alignm=-90" +*alignm -88/-88: "%% FoomaticRIPOptionSetting: alignm=-88" +*alignm -86/-86: "%% FoomaticRIPOptionSetting: alignm=-86" +*alignm -84/-84: "%% FoomaticRIPOptionSetting: alignm=-84" +*alignm -82/-82: "%% FoomaticRIPOptionSetting: alignm=-82" +*alignm -80/-80: "%% FoomaticRIPOptionSetting: alignm=-80" +*alignm -78/-78: "%% FoomaticRIPOptionSetting: alignm=-78" +*alignm -76/-76: "%% FoomaticRIPOptionSetting: alignm=-76" +*alignm -74/-74: "%% FoomaticRIPOptionSetting: alignm=-74" +*alignm -72/-72: "%% FoomaticRIPOptionSetting: alignm=-72" +*alignm -70/-70: "%% FoomaticRIPOptionSetting: alignm=-70" +*alignm -68/-68: "%% FoomaticRIPOptionSetting: alignm=-68" +*alignm -66/-66: "%% FoomaticRIPOptionSetting: alignm=-66" +*alignm -64/-64: "%% FoomaticRIPOptionSetting: alignm=-64" +*alignm -62/-62: "%% FoomaticRIPOptionSetting: alignm=-62" +*alignm -60/-60: "%% FoomaticRIPOptionSetting: alignm=-60" +*alignm -58/-58: "%% FoomaticRIPOptionSetting: alignm=-58" +*alignm -56/-56: "%% FoomaticRIPOptionSetting: alignm=-56" +*alignm -54/-54: "%% FoomaticRIPOptionSetting: alignm=-54" +*alignm -52/-52: "%% FoomaticRIPOptionSetting: alignm=-52" +*alignm -50/-50: "%% FoomaticRIPOptionSetting: alignm=-50" +*alignm -48/-48: "%% FoomaticRIPOptionSetting: alignm=-48" +*alignm -46/-46: "%% FoomaticRIPOptionSetting: alignm=-46" +*alignm -44/-44: "%% FoomaticRIPOptionSetting: alignm=-44" +*alignm -42/-42: "%% FoomaticRIPOptionSetting: alignm=-42" +*alignm -40/-40: "%% FoomaticRIPOptionSetting: alignm=-40" +*alignm -38/-38: "%% FoomaticRIPOptionSetting: alignm=-38" +*alignm -36/-36: "%% FoomaticRIPOptionSetting: alignm=-36" +*alignm -34/-34: "%% FoomaticRIPOptionSetting: alignm=-34" +*alignm -32/-32: "%% FoomaticRIPOptionSetting: alignm=-32" +*alignm -30/-30: "%% FoomaticRIPOptionSetting: alignm=-30" +*alignm -28/-28: "%% FoomaticRIPOptionSetting: alignm=-28" +*alignm -26/-26: "%% FoomaticRIPOptionSetting: alignm=-26" +*alignm -24/-24: "%% FoomaticRIPOptionSetting: alignm=-24" +*alignm -22/-22: "%% FoomaticRIPOptionSetting: alignm=-22" +*alignm -20/-20: "%% FoomaticRIPOptionSetting: alignm=-20" +*alignm -18/-18: "%% FoomaticRIPOptionSetting: alignm=-18" +*alignm -16/-16: "%% FoomaticRIPOptionSetting: alignm=-16" +*alignm -14/-14: "%% FoomaticRIPOptionSetting: alignm=-14" +*alignm -12/-12: "%% FoomaticRIPOptionSetting: alignm=-12" +*alignm -10/-10: "%% FoomaticRIPOptionSetting: alignm=-10" +*alignm -8/-8: "%% FoomaticRIPOptionSetting: alignm=-8" +*alignm -6/-6: "%% FoomaticRIPOptionSetting: alignm=-6" +*alignm -4/-4: "%% FoomaticRIPOptionSetting: alignm=-4" +*alignm -2/-2: "%% FoomaticRIPOptionSetting: alignm=-2" +*alignm 0/0: "%% FoomaticRIPOptionSetting: alignm=0" +*alignm 2/2: "%% FoomaticRIPOptionSetting: alignm=2" +*alignm 4/4: "%% FoomaticRIPOptionSetting: alignm=4" +*alignm 6/6: "%% FoomaticRIPOptionSetting: alignm=6" +*alignm 8/8: "%% FoomaticRIPOptionSetting: alignm=8" +*alignm 10/10: "%% FoomaticRIPOptionSetting: alignm=10" +*alignm 12/12: "%% FoomaticRIPOptionSetting: alignm=12" +*alignm 14/14: "%% FoomaticRIPOptionSetting: alignm=14" +*alignm 16/16: "%% FoomaticRIPOptionSetting: alignm=16" +*alignm 18/18: "%% FoomaticRIPOptionSetting: alignm=18" +*alignm 20/20: "%% FoomaticRIPOptionSetting: alignm=20" +*alignm 22/22: "%% FoomaticRIPOptionSetting: alignm=22" +*alignm 24/24: "%% FoomaticRIPOptionSetting: alignm=24" +*alignm 26/26: "%% FoomaticRIPOptionSetting: alignm=26" +*alignm 28/28: "%% FoomaticRIPOptionSetting: alignm=28" +*alignm 30/30: "%% FoomaticRIPOptionSetting: alignm=30" +*alignm 32/32: "%% FoomaticRIPOptionSetting: alignm=32" +*alignm 34/34: "%% FoomaticRIPOptionSetting: alignm=34" +*alignm 36/36: "%% FoomaticRIPOptionSetting: alignm=36" +*alignm 38/38: "%% FoomaticRIPOptionSetting: alignm=38" +*alignm 40/40: "%% FoomaticRIPOptionSetting: alignm=40" +*alignm 42/42: "%% FoomaticRIPOptionSetting: alignm=42" +*alignm 44/44: "%% FoomaticRIPOptionSetting: alignm=44" +*alignm 46/46: "%% FoomaticRIPOptionSetting: alignm=46" +*alignm 48/48: "%% FoomaticRIPOptionSetting: alignm=48" +*alignm 50/50: "%% FoomaticRIPOptionSetting: alignm=50" +*alignm 52/52: "%% FoomaticRIPOptionSetting: alignm=52" +*alignm 54/54: "%% FoomaticRIPOptionSetting: alignm=54" +*alignm 56/56: "%% FoomaticRIPOptionSetting: alignm=56" +*alignm 58/58: "%% FoomaticRIPOptionSetting: alignm=58" +*alignm 60/60: "%% FoomaticRIPOptionSetting: alignm=60" +*alignm 62/62: "%% FoomaticRIPOptionSetting: alignm=62" +*alignm 64/64: "%% FoomaticRIPOptionSetting: alignm=64" +*alignm 66/66: "%% FoomaticRIPOptionSetting: alignm=66" +*alignm 68/68: "%% FoomaticRIPOptionSetting: alignm=68" +*alignm 70/70: "%% FoomaticRIPOptionSetting: alignm=70" +*alignm 72/72: "%% FoomaticRIPOptionSetting: alignm=72" +*alignm 74/74: "%% FoomaticRIPOptionSetting: alignm=74" +*alignm 76/76: "%% FoomaticRIPOptionSetting: alignm=76" +*alignm 78/78: "%% FoomaticRIPOptionSetting: alignm=78" +*alignm 80/80: "%% FoomaticRIPOptionSetting: alignm=80" +*alignm 82/82: "%% FoomaticRIPOptionSetting: alignm=82" +*alignm 84/84: "%% FoomaticRIPOptionSetting: alignm=84" +*alignm 86/86: "%% FoomaticRIPOptionSetting: alignm=86" +*alignm 88/88: "%% FoomaticRIPOptionSetting: alignm=88" +*alignm 90/90: "%% FoomaticRIPOptionSetting: alignm=90" +*alignm 92/92: "%% FoomaticRIPOptionSetting: alignm=92" +*alignm 94/94: "%% FoomaticRIPOptionSetting: alignm=94" +*alignm 96/96: "%% FoomaticRIPOptionSetting: alignm=96" +*alignm 98/98: "%% FoomaticRIPOptionSetting: alignm=98" +*alignm 100/100: "%% FoomaticRIPOptionSetting: alignm=100" +*CloseUI: *alignm + +*OpenUI *aligny/Alignment Offset Yellow: PickOne +*FoomaticRIPOption aligny: int CmdLine A +*FoomaticRIPOptionPrototype aligny: "-Oy=%s " +*FoomaticRIPOptionRange aligny: -100 100 +*OrderDependency: 220 AnySetup *aligny +*Defaultaligny: 0 +*FoomaticRIPDefaultaligny: 0 +*aligny -100/-100: "%% FoomaticRIPOptionSetting: aligny=-100" +*aligny -98/-98: "%% FoomaticRIPOptionSetting: aligny=-98" +*aligny -96/-96: "%% FoomaticRIPOptionSetting: aligny=-96" +*aligny -94/-94: "%% FoomaticRIPOptionSetting: aligny=-94" +*aligny -92/-92: "%% FoomaticRIPOptionSetting: aligny=-92" +*aligny -90/-90: "%% FoomaticRIPOptionSetting: aligny=-90" +*aligny -88/-88: "%% FoomaticRIPOptionSetting: aligny=-88" +*aligny -86/-86: "%% FoomaticRIPOptionSetting: aligny=-86" +*aligny -84/-84: "%% FoomaticRIPOptionSetting: aligny=-84" +*aligny -82/-82: "%% FoomaticRIPOptionSetting: aligny=-82" +*aligny -80/-80: "%% FoomaticRIPOptionSetting: aligny=-80" +*aligny -78/-78: "%% FoomaticRIPOptionSetting: aligny=-78" +*aligny -76/-76: "%% FoomaticRIPOptionSetting: aligny=-76" +*aligny -74/-74: "%% FoomaticRIPOptionSetting: aligny=-74" +*aligny -72/-72: "%% FoomaticRIPOptionSetting: aligny=-72" +*aligny -70/-70: "%% FoomaticRIPOptionSetting: aligny=-70" +*aligny -68/-68: "%% FoomaticRIPOptionSetting: aligny=-68" +*aligny -66/-66: "%% FoomaticRIPOptionSetting: aligny=-66" +*aligny -64/-64: "%% FoomaticRIPOptionSetting: aligny=-64" +*aligny -62/-62: "%% FoomaticRIPOptionSetting: aligny=-62" +*aligny -60/-60: "%% FoomaticRIPOptionSetting: aligny=-60" +*aligny -58/-58: "%% FoomaticRIPOptionSetting: aligny=-58" +*aligny -56/-56: "%% FoomaticRIPOptionSetting: aligny=-56" +*aligny -54/-54: "%% FoomaticRIPOptionSetting: aligny=-54" +*aligny -52/-52: "%% FoomaticRIPOptionSetting: aligny=-52" +*aligny -50/-50: "%% FoomaticRIPOptionSetting: aligny=-50" +*aligny -48/-48: "%% FoomaticRIPOptionSetting: aligny=-48" +*aligny -46/-46: "%% FoomaticRIPOptionSetting: aligny=-46" +*aligny -44/-44: "%% FoomaticRIPOptionSetting: aligny=-44" +*aligny -42/-42: "%% FoomaticRIPOptionSetting: aligny=-42" +*aligny -40/-40: "%% FoomaticRIPOptionSetting: aligny=-40" +*aligny -38/-38: "%% FoomaticRIPOptionSetting: aligny=-38" +*aligny -36/-36: "%% FoomaticRIPOptionSetting: aligny=-36" +*aligny -34/-34: "%% FoomaticRIPOptionSetting: aligny=-34" +*aligny -32/-32: "%% FoomaticRIPOptionSetting: aligny=-32" +*aligny -30/-30: "%% FoomaticRIPOptionSetting: aligny=-30" +*aligny -28/-28: "%% FoomaticRIPOptionSetting: aligny=-28" +*aligny -26/-26: "%% FoomaticRIPOptionSetting: aligny=-26" +*aligny -24/-24: "%% FoomaticRIPOptionSetting: aligny=-24" +*aligny -22/-22: "%% FoomaticRIPOptionSetting: aligny=-22" +*aligny -20/-20: "%% FoomaticRIPOptionSetting: aligny=-20" +*aligny -18/-18: "%% FoomaticRIPOptionSetting: aligny=-18" +*aligny -16/-16: "%% FoomaticRIPOptionSetting: aligny=-16" +*aligny -14/-14: "%% FoomaticRIPOptionSetting: aligny=-14" +*aligny -12/-12: "%% FoomaticRIPOptionSetting: aligny=-12" +*aligny -10/-10: "%% FoomaticRIPOptionSetting: aligny=-10" +*aligny -8/-8: "%% FoomaticRIPOptionSetting: aligny=-8" +*aligny -6/-6: "%% FoomaticRIPOptionSetting: aligny=-6" +*aligny -4/-4: "%% FoomaticRIPOptionSetting: aligny=-4" +*aligny -2/-2: "%% FoomaticRIPOptionSetting: aligny=-2" +*aligny 0/0: "%% FoomaticRIPOptionSetting: aligny=0" +*aligny 2/2: "%% FoomaticRIPOptionSetting: aligny=2" +*aligny 4/4: "%% FoomaticRIPOptionSetting: aligny=4" +*aligny 6/6: "%% FoomaticRIPOptionSetting: aligny=6" +*aligny 8/8: "%% FoomaticRIPOptionSetting: aligny=8" +*aligny 10/10: "%% FoomaticRIPOptionSetting: aligny=10" +*aligny 12/12: "%% FoomaticRIPOptionSetting: aligny=12" +*aligny 14/14: "%% FoomaticRIPOptionSetting: aligny=14" +*aligny 16/16: "%% FoomaticRIPOptionSetting: aligny=16" +*aligny 18/18: "%% FoomaticRIPOptionSetting: aligny=18" +*aligny 20/20: "%% FoomaticRIPOptionSetting: aligny=20" +*aligny 22/22: "%% FoomaticRIPOptionSetting: aligny=22" +*aligny 24/24: "%% FoomaticRIPOptionSetting: aligny=24" +*aligny 26/26: "%% FoomaticRIPOptionSetting: aligny=26" +*aligny 28/28: "%% FoomaticRIPOptionSetting: aligny=28" +*aligny 30/30: "%% FoomaticRIPOptionSetting: aligny=30" +*aligny 32/32: "%% FoomaticRIPOptionSetting: aligny=32" +*aligny 34/34: "%% FoomaticRIPOptionSetting: aligny=34" +*aligny 36/36: "%% FoomaticRIPOptionSetting: aligny=36" +*aligny 38/38: "%% FoomaticRIPOptionSetting: aligny=38" +*aligny 40/40: "%% FoomaticRIPOptionSetting: aligny=40" +*aligny 42/42: "%% FoomaticRIPOptionSetting: aligny=42" +*aligny 44/44: "%% FoomaticRIPOptionSetting: aligny=44" +*aligny 46/46: "%% FoomaticRIPOptionSetting: aligny=46" +*aligny 48/48: "%% FoomaticRIPOptionSetting: aligny=48" +*aligny 50/50: "%% FoomaticRIPOptionSetting: aligny=50" +*aligny 52/52: "%% FoomaticRIPOptionSetting: aligny=52" +*aligny 54/54: "%% FoomaticRIPOptionSetting: aligny=54" +*aligny 56/56: "%% FoomaticRIPOptionSetting: aligny=56" +*aligny 58/58: "%% FoomaticRIPOptionSetting: aligny=58" +*aligny 60/60: "%% FoomaticRIPOptionSetting: aligny=60" +*aligny 62/62: "%% FoomaticRIPOptionSetting: aligny=62" +*aligny 64/64: "%% FoomaticRIPOptionSetting: aligny=64" +*aligny 66/66: "%% FoomaticRIPOptionSetting: aligny=66" +*aligny 68/68: "%% FoomaticRIPOptionSetting: aligny=68" +*aligny 70/70: "%% FoomaticRIPOptionSetting: aligny=70" +*aligny 72/72: "%% FoomaticRIPOptionSetting: aligny=72" +*aligny 74/74: "%% FoomaticRIPOptionSetting: aligny=74" +*aligny 76/76: "%% FoomaticRIPOptionSetting: aligny=76" +*aligny 78/78: "%% FoomaticRIPOptionSetting: aligny=78" +*aligny 80/80: "%% FoomaticRIPOptionSetting: aligny=80" +*aligny 82/82: "%% FoomaticRIPOptionSetting: aligny=82" +*aligny 84/84: "%% FoomaticRIPOptionSetting: aligny=84" +*aligny 86/86: "%% FoomaticRIPOptionSetting: aligny=86" +*aligny 88/88: "%% FoomaticRIPOptionSetting: aligny=88" +*aligny 90/90: "%% FoomaticRIPOptionSetting: aligny=90" +*aligny 92/92: "%% FoomaticRIPOptionSetting: aligny=92" +*aligny 94/94: "%% FoomaticRIPOptionSetting: aligny=94" +*aligny 96/96: "%% FoomaticRIPOptionSetting: aligny=96" +*aligny 98/98: "%% FoomaticRIPOptionSetting: aligny=98" +*aligny 100/100: "%% FoomaticRIPOptionSetting: aligny=100" +*CloseUI: *aligny + +*CloseGroup: Alignment (in rows) + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_1000.ppd b/PPD/HP-LaserJet_1000.ppd new file mode 100644 index 0000000..dfcc94d --- /dev/null +++ b/PPD/HP-LaserJet_1000.ppd @@ -0,0 +1,426 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_1000-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "HP" +*Product: "(hp LaserJet 1000)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet 1000" +*ShortNickName: "HP LaserJet 1000 foo2zjs" +*NickName: "HP LaserJet 1000 Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:hp LaserJet 1000;CMD:ZJS;DES:hp LaserJet 1000;DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_1000 foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=BW: "-P " + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_1005.ppd b/PPD/HP-LaserJet_1005.ppd new file mode 100644 index 0000000..e609d51 --- /dev/null +++ b/PPD/HP-LaserJet_1005.ppd @@ -0,0 +1,426 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_1005-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "HP" +*Product: "(hp LaserJet 1005 series)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet 1005" +*ShortNickName: "HP LaserJet 1005 foo2zjs" +*NickName: "HP LaserJet 1005 Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:hp LaserJet 1005 series;CMD:ZJS;DES:hp LaserJet 1005 series;DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_1005 foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=BW: "-P " + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_1018.ppd b/PPD/HP-LaserJet_1018.ppd new file mode 100644 index 0000000..d5c5f75 --- /dev/null +++ b/PPD/HP-LaserJet_1018.ppd @@ -0,0 +1,489 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_1018-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet 1018)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet 1018" +*ShortNickName: "HP LaserJet 1018 foo2zjs-z1" +*NickName: "HP LaserJet 1018 Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet 1018;CMD:ACL;DES:HP LaserJet 1018;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_1018 foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_1020.ppd b/PPD/HP-LaserJet_1020.ppd new file mode 100644 index 0000000..5cfe185 --- /dev/null +++ b/PPD/HP-LaserJet_1020.ppd @@ -0,0 +1,489 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_1020-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet 1020)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet 1020" +*ShortNickName: "HP LaserJet 1020 foo2zjs-z1" +*NickName: "HP LaserJet 1020 Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;DES:HP LaserJet 1020;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_1020 foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_1022.ppd b/PPD/HP-LaserJet_1022.ppd new file mode 100644 index 0000000..994de21 --- /dev/null +++ b/PPD/HP-LaserJet_1022.ppd @@ -0,0 +1,489 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_1022-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet 1022)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet 1022" +*ShortNickName: "HP LaserJet 1022 foo2zjs-z1" +*NickName: "HP LaserJet 1022 Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet 1022;CMD:ACL;DES:HP LaserJet 1022;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_1022 foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_1022n.ppd b/PPD/HP-LaserJet_1022n.ppd new file mode 100644 index 0000000..2869286 --- /dev/null +++ b/PPD/HP-LaserJet_1022n.ppd @@ -0,0 +1,503 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_1022n-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet 1022n)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet 1022n" +*ShortNickName: "HP LaserJet 1022n foo2zjs-z1" +*NickName: "HP LaserJet 1022n Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet 1022n;CMD:ACL;DES:HP LaserJet 1022n;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_1022n foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_1022nw.ppd b/PPD/HP-LaserJet_1022nw.ppd new file mode 100644 index 0000000..6a281ac --- /dev/null +++ b/PPD/HP-LaserJet_1022nw.ppd @@ -0,0 +1,503 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_1022nw-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet 1022nw)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet 1022nw" +*ShortNickName: "HP LaserJet 1022nw foo2zjs-z1" +*NickName: "HP LaserJet 1022nw Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet 1022nw;CMD:ACL;DES:HP LaserJet 1022nw;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_1022nw foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_M1005_MFP.ppd b/PPD/HP-LaserJet_M1005_MFP.ppd new file mode 100644 index 0000000..8040eb7 --- /dev/null +++ b/PPD/HP-LaserJet_M1005_MFP.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_M1005_MFP-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet M1005)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet M1005 MFP" +*ShortNickName: "HP LaserJet M1005 MFP foo2xqx" +*NickName: "HP LaserJet M1005 MFP Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet M1005;CMD:ACL;DES:HP LaserJet M1005;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_M1005_MFP foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_M1120_MFP.ppd b/PPD/HP-LaserJet_M1120_MFP.ppd new file mode 100644 index 0000000..5ca1759 --- /dev/null +++ b/PPD/HP-LaserJet_M1120_MFP.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_M1120_MFP-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet M1120)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet M1120 MFP" +*ShortNickName: "HP LaserJet M1120 MFP foo2xqx" +*NickName: "HP LaserJet M1120 MFP Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet M1120;CMD:ACL;DES:HP LaserJet M1120;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_M1120_MFP foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_M1319_MFP.ppd b/PPD/HP-LaserJet_M1319_MFP.ppd new file mode 100644 index 0000000..55bc09d --- /dev/null +++ b/PPD/HP-LaserJet_M1319_MFP.ppd @@ -0,0 +1,489 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_M1319_MFP-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet M1319)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet M1319 MFP" +*ShortNickName: "HP Las.Jet M1319 MFP foo2zjs-z1" +*NickName: "HP LaserJet M1319 MFP Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet M1319;CMD:ACL;DES:HP LaserJet M1319;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_M1319_MFP foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P1005.ppd b/PPD/HP-LaserJet_P1005.ppd new file mode 100644 index 0000000..adc2285 --- /dev/null +++ b/PPD/HP-LaserJet_P1005.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P1005-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P1005)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P1005" +*ShortNickName: "HP LaserJet P1005 foo2xqx" +*NickName: "HP LaserJet P1005 Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P1005;CMD:ACL;DES:HP LaserJet P1005;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P1005 foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P1006.ppd b/PPD/HP-LaserJet_P1006.ppd new file mode 100644 index 0000000..36c74b7 --- /dev/null +++ b/PPD/HP-LaserJet_P1006.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P1006-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P1006)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P1006" +*ShortNickName: "HP LaserJet P1006 foo2xqx" +*NickName: "HP LaserJet P1006 Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P1006;CMD:ACL;DES:HP LaserJet P1006;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P1006 foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P1007.ppd b/PPD/HP-LaserJet_P1007.ppd new file mode 100644 index 0000000..15904ca --- /dev/null +++ b/PPD/HP-LaserJet_P1007.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P1007-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P1007)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P1007" +*ShortNickName: "HP LaserJet P1007 foo2xqx" +*NickName: "HP LaserJet P1007 Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P1007;CMD:ACL;DES:HP LaserJet P1007;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P1007 foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P1008.ppd b/PPD/HP-LaserJet_P1008.ppd new file mode 100644 index 0000000..ce001c0 --- /dev/null +++ b/PPD/HP-LaserJet_P1008.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P1008-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P1008)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P1008" +*ShortNickName: "HP LaserJet P1008 foo2xqx" +*NickName: "HP LaserJet P1008 Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P1008;CMD:ACL;DES:HP LaserJet P1008;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P1008 foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P1505.ppd b/PPD/HP-LaserJet_P1505.ppd new file mode 100644 index 0000000..7bc0d49 --- /dev/null +++ b/PPD/HP-LaserJet_P1505.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P1505-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P1505)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P1505" +*ShortNickName: "HP LaserJet P1505 foo2xqx" +*NickName: "HP LaserJet P1505 Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P1505;CMD:ACL;DES:HP LaserJet P1505;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P1505 foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P1505n.ppd b/PPD/HP-LaserJet_P1505n.ppd new file mode 100644 index 0000000..5938730 --- /dev/null +++ b/PPD/HP-LaserJet_P1505n.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P1505n-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P1505)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P1505n" +*ShortNickName: "HP LaserJet P1505n foo2xqx" +*NickName: "HP LaserJet P1505n Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P1505;CMD:ACL;DES:HP LaserJet P1505;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P1505n foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P2014.ppd b/PPD/HP-LaserJet_P2014.ppd new file mode 100644 index 0000000..ab285fd --- /dev/null +++ b/PPD/HP-LaserJet_P2014.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P2014-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P2014)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P2014" +*ShortNickName: "HP LaserJet P2014 foo2xqx" +*NickName: "HP LaserJet P2014 Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P2014;CMD:ACL;DES:HP LaserJet P2014;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P2014 foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P2014n.ppd b/PPD/HP-LaserJet_P2014n.ppd new file mode 100644 index 0000000..1521212 --- /dev/null +++ b/PPD/HP-LaserJet_P2014n.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P2014n-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P2014)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P2014n" +*ShortNickName: "HP LaserJet P2014n foo2xqx" +*NickName: "HP LaserJet P2014n Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P2014;CMD:ACL;DES:HP LaserJet P2014;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P2014n foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P2035.ppd b/PPD/HP-LaserJet_P2035.ppd new file mode 100644 index 0000000..34d9e37 --- /dev/null +++ b/PPD/HP-LaserJet_P2035.ppd @@ -0,0 +1,489 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P2035-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P2035)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P2035" +*ShortNickName: "HP LaserJet P2035 foo2zjs-z1" +*NickName: "HP LaserJet P2035 Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P2035;CMD:ACL;DES:HP LaserJet P2035;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P2035 foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_P2035n.ppd b/PPD/HP-LaserJet_P2035n.ppd new file mode 100644 index 0000000..21c906c --- /dev/null +++ b/PPD/HP-LaserJet_P2035n.ppd @@ -0,0 +1,491 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_P2035n-foo2zjs-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet P2035)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet P2035n" +*ShortNickName: "HP LaserJet P2035n foo2zjs-z1" +*NickName: "HP LaserJet P2035n Foomatic/foo2zjs-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet P2035;CMD:ACL;DES:HP LaserJet P2035;DRV:Dfoo2zjs-z1,R1,M0,TF;" + +*driverName foo2zjs-z1/foo2zjs-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_P2035n foo2zjs-z1 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z1 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p262 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*FoomaticRIPOptionSetting PageSize=B5ISO: "-p259 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p261 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p260 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5ISO/B5 ISO: "%% FoomaticRIPOptionSetting: PageSize=B5ISO" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea B5ISO/B5 ISO: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5ISO/B5 ISO: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_Pro_CP1025nw.ppd b/PPD/HP-LaserJet_Pro_CP1025nw.ppd new file mode 100644 index 0000000..272d90e --- /dev/null +++ b/PPD/HP-LaserJet_Pro_CP1025nw.ppd @@ -0,0 +1,541 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_Pro_CP1025nw-foo2zjs-z3.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet CP1025nw)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet Pro CP1025nw" +*ShortNickName: "HP Las.Jet Pro, foo2zjs-z3" +*NickName: "HP LaserJet Pro CP1025nw Foomatic/foo2zjs-z3 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet CP1025nw;CMD:ZJS,PJL,ACL;DES:HP LaserJet CP1025nw;DRV:Dfoo2zjs-z3,R1,M0,TF;" + +*driverName foo2zjs-z3/foo2zjs-z3: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_Pro_CP1025nw foo2zjs-z3 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z3 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p268 " +*PageSize Photo5x8/Photo Size 5x8 in: "%% FoomaticRIPOptionSetting: PageSize=Photo5x8" +*FoomaticRIPOptionSetting PageSize=Photo5x8: "-p269 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p270 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p70 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p82 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p43 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo5x8/Photo Size 5x8 in: "%% FoomaticRIPOptionSetting: PageSize=Photo5x8" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo5x8/Photo Size 5x8 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo5x8/Photo Size 5x8 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType ExtraHeavy/Extra Heavy: "%% FoomaticRIPOptionSetting: MediaType=ExtraHeavy" +*FoomaticRIPOptionSetting MediaType=ExtraHeavy: "-m283 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Medium/Medium: "%% FoomaticRIPOptionSetting: MediaType=Medium" +*FoomaticRIPOptionSetting MediaType=Medium: "-m282 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: cp1025 +*ICM cp1025/ICM file hp-cp1025.icm: "%% FoomaticRIPOptionSetting: ICM=cp1025" +*FoomaticRIPOptionSetting ICM=cp1025: "-Ghp-cp1025-rgb-392-bpp1.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*OpenUI *Intent/ICM Color Profile Intent: PickOne +*FoomaticRIPOption Intent: enum CmdLine A +*OrderDependency: 310 AnySetup *Intent +*DefaultIntent: Perceptual +*Intent Absolute/Absolute Intent: "%% FoomaticRIPOptionSetting: Intent=Absolute" +*FoomaticRIPOptionSetting Intent=Absolute: "-I3 " +*Intent Colorimetric/Colorimetric Intent: "%% FoomaticRIPOptionSetting: Intent=Colorimetric" +*FoomaticRIPOptionSetting Intent=Colorimetric: "-I1 " +*Intent Perceptual/Perceptual Intent: "%% FoomaticRIPOptionSetting: Intent=Perceptual" +*FoomaticRIPOptionSetting Intent=Perceptual: "-I0 " +*Intent Saturation/Saturation Intent: "%% FoomaticRIPOptionSetting: Intent=Saturation" +*FoomaticRIPOptionSetting Intent=Saturation: "-I2 " +*CloseUI: *Intent + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_Pro_M1212nf_MFP.ppd b/PPD/HP-LaserJet_Pro_M1212nf_MFP.ppd new file mode 100644 index 0000000..c175f6c --- /dev/null +++ b/PPD/HP-LaserJet_Pro_M1212nf_MFP.ppd @@ -0,0 +1,490 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_Professional_M1212nf_MFP-foo2xqx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2XQX.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet Professional M1212nf)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet Professional M1212nf MFP" +*ShortNickName: "HP Las.Jet Profession, foo2xqx" +*NickName: "HP LaserJet Professional M1212nf MFP Foomatic/foo2xqx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet Professional M1212nf;CMD:ACL;DES:HP LaserJet Professional M1212nf;DRV:Dfoo2xqx,R1,M0,TF;" + +*driverName foo2xqx/foo2xqx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2xqx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_Pro_M1212nf_MFP foo2xqx +*FoomaticRIPCommandLine: "foo2xqx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType Multipurpose/HP Multipurpose Paper: "%% FoomaticRIPOptionSetting: MediaType=Multipurpose" +*FoomaticRIPOptionSetting MediaType=Multipurpose: "-m301 " +*MediaType All-in-one/HP All-in-one Printing Paper: "%% FoomaticRIPOptionSetting: MediaType=All-in-one" +*FoomaticRIPOptionSetting MediaType=All-in-one: "-m303 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m261 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType LaserJet/HP LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=LaserJet" +*FoomaticRIPOptionSetting MediaType=LaserJet: "-m302 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Office/HP Office Paper: "%% FoomaticRIPOptionSetting: MediaType=Office" +*FoomaticRIPOptionSetting MediaType=Office: "-m300 " +*MediaType PremiumLaserJet/HP Premium Choice LaserJet Paper: "%% FoomaticRIPOptionSetting: MediaType=PremiumLaserJet" +*FoomaticRIPOptionSetting MediaType=PremiumLaserJet: "-m302 " +*MediaType Preprinted/Preprinted Paper: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched Paper: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Unspecified/Unspecified Paper: "%% FoomaticRIPOptionSetting: MediaType=Unspecified" +*FoomaticRIPOptionSetting MediaType=Unspecified: "-m0 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_Pro_P1102.ppd b/PPD/HP-LaserJet_Pro_P1102.ppd new file mode 100644 index 0000000..50d5b38 --- /dev/null +++ b/PPD/HP-LaserJet_Pro_P1102.ppd @@ -0,0 +1,491 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_Pro_P1102-foo2zjs-z2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet Professional P1102)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet Pro P1102" +*ShortNickName: "HP Las.Jet Pro P1102 foo2zjs-z2" +*NickName: "HP LaserJet Pro P1102 Foomatic/foo2zjs-z2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet Professional P1102;CMD:ZJS,PJL,ACL,HTTP;DES:HP LaserJet Professional P1102;DRV:Dfoo2zjs-z2,R1,M0,TF;" + +*driverName foo2zjs-z2/foo2zjs-z2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_Pro_P1102 foo2zjs-z2 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z2 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p70 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p82 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p43 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType ExtraHeavy/Extra Heavy: "%% FoomaticRIPOptionSetting: MediaType=ExtraHeavy" +*FoomaticRIPOptionSetting MediaType=ExtraHeavy: "-m283 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Medium/Medium: "%% FoomaticRIPOptionSetting: MediaType=Medium" +*FoomaticRIPOptionSetting MediaType=Medium: "-m282 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_Pro_P1102w.ppd b/PPD/HP-LaserJet_Pro_P1102w.ppd new file mode 100644 index 0000000..a4bf251 --- /dev/null +++ b/PPD/HP-LaserJet_Pro_P1102w.ppd @@ -0,0 +1,491 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_Pro_P1102w-foo2zjs-z2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet Professional P1102w)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet Pro P1102w" +*ShortNickName: "HP Las.Jet Pro, foo2zjs-z2" +*NickName: "HP LaserJet Pro P1102w Foomatic/foo2zjs-z2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet Professional P1102w;CMD:ZJS,PJL,ACL,HTTP;DES:HP LaserJet Professional P1102w;DRV:Dfoo2zjs-z2,R1,M0,TF;" + +*driverName foo2zjs-z2/foo2zjs-z2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_Pro_P1102w foo2zjs-z2 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z2 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p70 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p82 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p43 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType ExtraHeavy/Extra Heavy: "%% FoomaticRIPOptionSetting: MediaType=ExtraHeavy" +*FoomaticRIPOptionSetting MediaType=ExtraHeavy: "-m283 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Medium/Medium: "%% FoomaticRIPOptionSetting: MediaType=Medium" +*FoomaticRIPOptionSetting MediaType=Medium: "-m282 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_Pro_P1566.ppd b/PPD/HP-LaserJet_Pro_P1566.ppd new file mode 100644 index 0000000..25b5505 --- /dev/null +++ b/PPD/HP-LaserJet_Pro_P1566.ppd @@ -0,0 +1,491 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_Pro_P1566-foo2zjs-z2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet Pro P1566)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet Pro P1566" +*ShortNickName: "HP Las.Jet Pro P1566 foo2zjs-z2" +*NickName: "HP LaserJet Pro P1566 Foomatic/foo2zjs-z2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet Pro P1566;CMD:ACL;DES:HP LaserJet Pro P1566;DRV:Dfoo2zjs-z2,R1,M0,TF;" + +*driverName foo2zjs-z2/foo2zjs-z2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_Pro_P1566 foo2zjs-z2 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z2 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p70 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p82 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p43 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType ExtraHeavy/Extra Heavy: "%% FoomaticRIPOptionSetting: MediaType=ExtraHeavy" +*FoomaticRIPOptionSetting MediaType=ExtraHeavy: "-m283 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Medium/Medium: "%% FoomaticRIPOptionSetting: MediaType=Medium" +*FoomaticRIPOptionSetting MediaType=Medium: "-m282 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/HP-LaserJet_Pro_P1606dn.ppd b/PPD/HP-LaserJet_Pro_P1606dn.ppd new file mode 100644 index 0000000..f884cb5 --- /dev/null +++ b/PPD/HP-LaserJet_Pro_P1606dn.ppd @@ -0,0 +1,503 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'HP-LaserJet_Pro_P1606dn-foo2zjs-z2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS-.PPD" +*Manufacturer: "HP" +*Product: "(HP LaserJet Professional P1606dn)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "HP LaserJet Pro P1606dn" +*ShortNickName: "HP Las.Jet Pro, foo2zjs-z2" +*NickName: "HP LaserJet Pro P1606dn Foomatic/foo2zjs-z2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet Professional P1606dn;CMD:ACL;DES:HP LaserJet Pro P1606dn;DRV:Dfoo2zjs-z2,R1,M0,TF;" + +*driverName foo2zjs-z2/foo2zjs-z2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: HP-LaserJet_Pro_P1606dn foo2zjs-z2 +*FoomaticRIPCommandLine: "foo2zjs-wrapper -z2 -P -L0 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p70 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*FoomaticRIPOptionSetting PageSize=DoublePostcard: "-p82 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p258 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*FoomaticRIPOptionSetting PageSize=Postcard: "-p43 " +*PageSize w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p263 " +*PageSize w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p264 " +*PageSize w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p257 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion DoublePostcard/Double Postcard: "%% FoomaticRIPOptionSetting: PageSize=DoublePostcard" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Postcard/Postcard: "%% FoomaticRIPOptionSetting: PageSize=Postcard" +*PageRegion w522h737/16k 184x260 mm: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270 mm: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273 mm: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea A6/A6: "11.34 11.34 285.66 408.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea DoublePostcard/Double Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" +*ImageableArea Postcard/Postcard: "11.34 11.34 271.66 404.66" +*ImageableArea w522h737/16k 184x260 mm: "11.34 11.34 510.66 725.66" +*ImageableArea w553h765/16k 195x270 mm: "11.34 11.34 541.66 753.66" +*ImageableArea w558h774/16k 197x273 mm: "11.34 11.34 546.66 762.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5/B5: "498 708" +*PaperDimension DoublePostcard/Double Postcard: "283 416" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Postcard/Postcard: "283 416" +*PaperDimension w522h737/16k 184x260 mm: "522 737" +*PaperDimension w553h765/16k 195x270 mm: "553 765" +*PaperDimension w558h774/16k 197x273 mm: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper or Only One InputSlot: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s1 " +*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle" +*FoomaticRIPOptionSetting InputSlot=Middle: "-s3 " +*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s2 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Envelope/Envelope: "%% FoomaticRIPOptionSetting: InputSlot=Envelope" +*FoomaticRIPOptionSetting InputSlot=Envelope: "-s5 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m260 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m512 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m267 " +*MediaType ExtraHeavy/Extra Heavy: "%% FoomaticRIPOptionSetting: MediaType=ExtraHeavy" +*FoomaticRIPOptionSetting MediaType=ExtraHeavy: "-m283 " +*MediaType Heavy/Heavy: "%% FoomaticRIPOptionSetting: MediaType=Heavy" +*FoomaticRIPOptionSetting MediaType=Heavy: "-m262 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m265 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m513 " +*MediaType Light/Light: "%% FoomaticRIPOptionSetting: MediaType=Light" +*FoomaticRIPOptionSetting MediaType=Light: "-m258 " +*MediaType Medium/Medium: "%% FoomaticRIPOptionSetting: MediaType=Medium" +*FoomaticRIPOptionSetting MediaType=Medium: "-m282 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m514 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m515 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m516 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m263 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m273 " +*CloseUI: *MediaType + +*OpenUI *Density/Print Density: PickOne +*FoomaticRIPOption Density: enum CmdLine A +*OrderDependency: 150 AnySetup *Density +*DefaultDensity: Density3 +*Density Density1/Extra Light (1): "%% FoomaticRIPOptionSetting: Density=Density1" +*FoomaticRIPOptionSetting Density=Density1: "-T1 " +*Density Density2/Light (2): "%% FoomaticRIPOptionSetting: Density=Density2" +*FoomaticRIPOptionSetting Density=Density2: "-T2 " +*Density Density3/Medium (3): "%% FoomaticRIPOptionSetting: Density=Density3" +*FoomaticRIPOptionSetting Density=Density3: "-T3 " +*Density Density4/Dark (4): "%% FoomaticRIPOptionSetting: Density=Density4" +*FoomaticRIPOptionSetting Density=Density4: "-T4 " +*Density Density5/Extra Dark (5): "%% FoomaticRIPOptionSetting: Density=Density5" +*FoomaticRIPOptionSetting Density=Density5: "-T5 " +*CloseUI: *Density + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_1600W.ppd b/PPD/KONICA_MINOLTA-magicolor_1600W.ppd new file mode 100644 index 0000000..63c9582 --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_1600W.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_1600W-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(mc1600W)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 1600W" +*ShortNickName: "KONI. MINOLTA m. 1600W foo2lava" +*NickName: "KONICA MINOLTA magicolor 1600W Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:KONICA MINOLTA;MDL:mc1600W;CMD:ZJS,PJL,LAVAFLOW;DES:KONICA MINOLTA mc1600W;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_1600W foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km1600-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_1680MF.ppd b/PPD/KONICA_MINOLTA-magicolor_1680MF.ppd new file mode 100644 index 0000000..da222a4 --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_1680MF.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_1680MF-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(mc1680MF)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 1680MF" +*ShortNickName: "KON. MINOLTA m. 1680MF foo2lava" +*NickName: "KONICA MINOLTA magicolor 1680MF Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:KONICA MINOLTA;MDL:mc1680MF;CMD:ZJS,PJL,LAVAFLOW;DES:KONICA MINOLTA mc1680MF;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_1680MF foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km1600-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_1690MF.ppd b/PPD/KONICA_MINOLTA-magicolor_1690MF.ppd new file mode 100644 index 0000000..a4b4af9 --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_1690MF.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_1690MF-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(mc1690MF)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 1690MF" +*ShortNickName: "KON. MINOLTA m. 1690MF foo2lava" +*NickName: "KONICA MINOLTA magicolor 1690MF Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:KONICA MINOLTA;MDL:mc1690MF;CMD:ZJS,PJL,LAVAFLOW;DES:KONICA MINOLTA mc1690MF;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_1690MF foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km1600-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_2430_DL.ppd b/PPD/KONICA_MINOLTA-magicolor_2430_DL.ppd new file mode 100644 index 0000000..f1a8356 --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_2430_DL.ppd @@ -0,0 +1,496 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_2430_DL-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(magicolor 2430 DL)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 2430 DL" +*ShortNickName: "KON. MINOLTA m. 2430 DL foo2zjs" +*NickName: "KONICA MINOLTA magicolor 2430 DL Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MANUFACTURER:KONICA MINOLTA;MODEL:magicolor 2430 DL;COMMAND SET:ZJS,PJL;DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_2430_DL foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=Color: " " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode PhotoOnly/Color - Photo Only: "%% FoomaticRIPOptionSetting: ColorMode=PhotoOnly" +*FoomaticRIPOptionSetting ColorMode=PhotoOnly: "-c -C1 " +*ColorMode PhotosAndText/Color - Photos and Text: "%% FoomaticRIPOptionSetting: ColorMode=PhotosAndText" +*FoomaticRIPOptionSetting ColorMode=PhotosAndText: "-c -C2 " +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode GraphicsAndText/Color - Graphics and Text: "%% FoomaticRIPOptionSetting: ColorMode=GraphicsAndText" +*FoomaticRIPOptionSetting ColorMode=GraphicsAndText: "-c -C3 " +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Lower/Optional Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s3 " +*InputSlot Multipurpose/Multipurpose Tray: "%% FoomaticRIPOptionSetting: InputSlot=Multipurpose" +*FoomaticRIPOptionSetting InputSlot=Multipurpose: "-s1 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: DL2312 +*ICM DL2312/File DL2312.icm: "%% FoomaticRIPOptionSetting: ICM=DL2312" +*FoomaticRIPOptionSetting ICM=DL2312: "-GDL2312.icm " +*ICM DL2324/File DL2324.icm: "%% FoomaticRIPOptionSetting: ICM=DL2324" +*FoomaticRIPOptionSetting ICM=DL2324: "-GDL2324.icm " +*ICM km2430_2/File km2430_2.icm: "%% FoomaticRIPOptionSetting: ICM=km2430_2" +*FoomaticRIPOptionSetting ICM=km2430_2: "-Gkm2430_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*OpenUI *Intent/ICM Color Profile Intent: PickOne +*FoomaticRIPOption Intent: enum CmdLine A +*OrderDependency: 310 AnySetup *Intent +*DefaultIntent: Perceptual +*Intent Absolute/Absolute Intent: "%% FoomaticRIPOptionSetting: Intent=Absolute" +*FoomaticRIPOptionSetting Intent=Absolute: "-I3 " +*Intent Colorimetric/Colorimetric Intent: "%% FoomaticRIPOptionSetting: Intent=Colorimetric" +*FoomaticRIPOptionSetting Intent=Colorimetric: "-I1 " +*Intent Perceptual/Perceptual Intent: "%% FoomaticRIPOptionSetting: Intent=Perceptual" +*FoomaticRIPOptionSetting Intent=Perceptual: "-I0 " +*Intent Saturation/Saturation Intent: "%% FoomaticRIPOptionSetting: Intent=Saturation" +*FoomaticRIPOptionSetting Intent=Saturation: "-I2 " +*CloseUI: *Intent + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_2480_MF.ppd b/PPD/KONICA_MINOLTA-magicolor_2480_MF.ppd new file mode 100644 index 0000000..ae87876 --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_2480_MF.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_2480_MF-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(magicolor 2480 MF)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 2480 MF" +*ShortNickName: "KO. MINOLTA m. 2480 MF foo2lava" +*NickName: "KONICA MINOLTA magicolor 2480 MF Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MANUFACTURER:KONICA MINOLTA;MODEL:magicolor 2480 MF;COMMAND SET:ZJS,PJL;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_2480_MF foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=opl: "-z1 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km2530-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_2490_MF.ppd b/PPD/KONICA_MINOLTA-magicolor_2490_MF.ppd new file mode 100644 index 0000000..88aae18 --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_2490_MF.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_2490_MF-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(magicolor 2490 MF)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 2490 MF" +*ShortNickName: "KO. MINOLTA m. 2490 MF foo2lava" +*NickName: "KONICA MINOLTA magicolor 2490 MF Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MANUFACTURER:KONICA MINOLTA;MODEL:magicolor 2490 MF;COMMAND SET:ZJS,PJL;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_2490_MF foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km2530-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_2530_DL.ppd b/PPD/KONICA_MINOLTA-magicolor_2530_DL.ppd new file mode 100644 index 0000000..5fb4da2 --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_2530_DL.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_2530_DL-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(mc2530DL)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 2530 DL" +*ShortNickName: "KO. MINOLTA m. 2530 DL foo2lava" +*NickName: "KONICA MINOLTA magicolor 2530 DL Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:KONICA MINOLTA;MDL:mc2530DL;CMD:ZJS,PJL,LAVAFLOW;DES:KONICA MINOLTA mc2530DL;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_2530_DL foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km2530-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/KONICA_MINOLTA-magicolor_4690MF.ppd b/PPD/KONICA_MINOLTA-magicolor_4690MF.ppd new file mode 100644 index 0000000..563c6eb --- /dev/null +++ b/PPD/KONICA_MINOLTA-magicolor_4690MF.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'KONICA_MINOLTA-magicolor_4690MF-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "KONICA MINOLTA" +*Product: "(magicolor 4690MF)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "KONICA MINOLTA magicolor 4690MF" +*ShortNickName: "KON. MINOLTA m. 4690MF foo2lava" +*NickName: "KONICA MINOLTA magicolor 4690MF Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MANUFACTURER:KONICA MINOLTA;MODEL:magicolor 4690MF;COMMAND SET:ZJS,PJL;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: KONICA_MINOLTA-magicolor_4690MF foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km1600-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Kyocera-KM-1635.ppd b/PPD/Kyocera-KM-1635.ppd new file mode 100644 index 0000000..62ed5d5 --- /dev/null +++ b/PPD/Kyocera-KM-1635.ppd @@ -0,0 +1,458 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Kyocera-KM-1635-foo2oak-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2OAK-.PPD" +*Manufacturer: "Kyocera" +*Product: "(KM-1635)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Kyocera KM-1635" +*ShortNickName: "Kyocera KM-1635 foo2oak-z1" +*NickName: "Kyocera KM-1635 Foomatic/foo2oak-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2oak-z1,R1,M0,TF;" + +*driverName foo2oak-z1/foo2oak-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2oak.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 12.00 12.00 12 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Kyocera-KM-1635 foo2oak-z1 +*FoomaticRIPCommandLine: "foo2oak-wrapper -z1 %A" + +*OpenGroup: General/General + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3" +*FoomaticRIPOptionSetting PageSize=A3: "-p8 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p257 " +*PageSize B4/B4: "%% FoomaticRIPOptionSetting: PageSize=B4" +*FoomaticRIPOptionSetting PageSize=B4: "-p12 " +*PageSize B5/B5 [ISO]: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p259 " +*PageSize B5jis/B5 [JIS]: "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p13 " +*PageSize B6/B6: "%% FoomaticRIPOptionSetting: PageSize=B6" +*FoomaticRIPOptionSetting PageSize=B6: "-p258 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC4/Env C4: "%% FoomaticRIPOptionSetting: PageSize=EnvC4" +*FoomaticRIPOptionSetting PageSize=EnvC4: "-p30 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p14 " +*PageSize Ledger/Ledger: "%% FoomaticRIPOptionSetting: PageSize=Ledger" +*FoomaticRIPOptionSetting PageSize=Ledger: "-p3 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Statement/Statement: "%% FoomaticRIPOptionSetting: PageSize=Statement" +*FoomaticRIPOptionSetting PageSize=Statement: "-p6 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B4/B4: "%% FoomaticRIPOptionSetting: PageSize=B4" +*PageRegion B5/B5 [ISO]: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5jis/B5 [JIS]: "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion B6/B6: "%% FoomaticRIPOptionSetting: PageSize=B6" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC4/Env C4: "%% FoomaticRIPOptionSetting: PageSize=EnvC4" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Ledger/Ledger: "%% FoomaticRIPOptionSetting: PageSize=Ledger" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Statement/Statement: "%% FoomaticRIPOptionSetting: PageSize=Statement" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "12.00 12.00 600.00 780.00" +*ImageableArea A4/A4: "12.00 12.00 583.00 830.00" +*ImageableArea A3/A3: "12.00 12.00 830.00 1179.00" +*ImageableArea A5/A5: "12.00 12.00 408.00 583.00" +*ImageableArea A6/A6: "12.00 12.00 285.00 408.00" +*ImageableArea B4/B4: "12.00 12.00 696.00 988.00" +*ImageableArea B5/B5 [ISO]: "12.00 12.00 486.00 696.00" +*ImageableArea B5jis/B5 [JIS]: "12.00 12.00 506.00 715.00" +*ImageableArea B6/B6: "12.00 12.00 342.00 486.00" +*ImageableArea Env10/Env #10: "12.00 12.00 285.00 672.00" +*ImageableArea EnvC4/Env C4: "12.00 12.00 637.00 906.00" +*ImageableArea EnvC5/Env C5: "12.00 12.00 447.00 637.00" +*ImageableArea EnvDL/Env DL: "12.00 12.00 299.00 611.00" +*ImageableArea EnvISOB5/Env ISO B5: "12.00 12.00 486.00 696.00" +*ImageableArea EnvMonarch/Env Monarch: "12.00 12.00 267.00 528.00" +*ImageableArea Executive/Executive: "12.00 12.00 510.00 744.00" +*ImageableArea Folio/Folio: "12.00 12.00 600.00 924.00" +*ImageableArea Ledger/Ledger: "12.00 12.00 1212.00 780.00" +*ImageableArea Legal/Legal: "12.00 12.00 600.00 996.00" +*ImageableArea Statement/Statement: "12.00 12.00 384.00 600.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A3/A3: "842 1191" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B4/B4: "708 1000" +*PaperDimension B5/B5 [ISO]: "498 708" +*PaperDimension B5jis/B5 [JIS]: "518 727" +*PaperDimension B6/B6: "354 498" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC4/Env C4: "649 918" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Ledger/Ledger: "1224 792" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Statement/Statement: "396 612" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Cassette1/Cassette 1: "%% FoomaticRIPOptionSetting: InputSlot=Cassette1" +*FoomaticRIPOptionSetting InputSlot=Cassette1: "-s1 " +*InputSlot MPTray/MP Tray: "%% FoomaticRIPOptionSetting: InputSlot=MPTray" +*FoomaticRIPOptionSetting InputSlot=MPTray: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Auto +*MediaType Plain/Plain: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType HighQuality/High quality: "%% FoomaticRIPOptionSetting: MediaType=HighQuality" +*FoomaticRIPOptionSetting MediaType=HighQuality: "-m20 " +*MediaType Auto/Auto Select: "%% FoomaticRIPOptionSetting: MediaType=Auto" +*FoomaticRIPOptionSetting MediaType=Auto: "-m0 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m7 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m10 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m9 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m12 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m6 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m3 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m2 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m5 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m8 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m16 " +*MediaType Thick/Thick: "%% FoomaticRIPOptionSetting: MediaType=Thick" +*FoomaticRIPOptionSetting MediaType=Thick: "-m19 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m4 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m15 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Kyocera-KM-2035.ppd b/PPD/Kyocera-KM-2035.ppd new file mode 100644 index 0000000..e87004b --- /dev/null +++ b/PPD/Kyocera-KM-2035.ppd @@ -0,0 +1,458 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Kyocera-KM-2035-foo2oak-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2OAK-.PPD" +*Manufacturer: "Kyocera" +*Product: "(KM-2035)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Kyocera KM-2035" +*ShortNickName: "Kyocera KM-2035 foo2oak-z1" +*NickName: "Kyocera KM-2035 Foomatic/foo2oak-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2oak-z1,R1,M0,TF;" + +*driverName foo2oak-z1/foo2oak-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2oak.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 12.00 12.00 12 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Kyocera-KM-2035 foo2oak-z1 +*FoomaticRIPCommandLine: "foo2oak-wrapper -z1 %A" + +*OpenGroup: General/General + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3" +*FoomaticRIPOptionSetting PageSize=A3: "-p8 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p257 " +*PageSize B4/B4: "%% FoomaticRIPOptionSetting: PageSize=B4" +*FoomaticRIPOptionSetting PageSize=B4: "-p12 " +*PageSize B5/B5 [ISO]: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p259 " +*PageSize B5jis/B5 [JIS]: "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p13 " +*PageSize B6/B6: "%% FoomaticRIPOptionSetting: PageSize=B6" +*FoomaticRIPOptionSetting PageSize=B6: "-p258 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC4/Env C4: "%% FoomaticRIPOptionSetting: PageSize=EnvC4" +*FoomaticRIPOptionSetting PageSize=EnvC4: "-p30 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p14 " +*PageSize Ledger/Ledger: "%% FoomaticRIPOptionSetting: PageSize=Ledger" +*FoomaticRIPOptionSetting PageSize=Ledger: "-p3 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*PageSize Statement/Statement: "%% FoomaticRIPOptionSetting: PageSize=Statement" +*FoomaticRIPOptionSetting PageSize=Statement: "-p6 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B4/B4: "%% FoomaticRIPOptionSetting: PageSize=B4" +*PageRegion B5/B5 [ISO]: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5jis/B5 [JIS]: "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion B6/B6: "%% FoomaticRIPOptionSetting: PageSize=B6" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC4/Env C4: "%% FoomaticRIPOptionSetting: PageSize=EnvC4" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Ledger/Ledger: "%% FoomaticRIPOptionSetting: PageSize=Ledger" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Statement/Statement: "%% FoomaticRIPOptionSetting: PageSize=Statement" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "12.00 12.00 600.00 780.00" +*ImageableArea A4/A4: "12.00 12.00 583.00 830.00" +*ImageableArea A3/A3: "12.00 12.00 830.00 1179.00" +*ImageableArea A5/A5: "12.00 12.00 408.00 583.00" +*ImageableArea A6/A6: "12.00 12.00 285.00 408.00" +*ImageableArea B4/B4: "12.00 12.00 696.00 988.00" +*ImageableArea B5/B5 [ISO]: "12.00 12.00 486.00 696.00" +*ImageableArea B5jis/B5 [JIS]: "12.00 12.00 506.00 715.00" +*ImageableArea B6/B6: "12.00 12.00 342.00 486.00" +*ImageableArea Env10/Env #10: "12.00 12.00 285.00 672.00" +*ImageableArea EnvC4/Env C4: "12.00 12.00 637.00 906.00" +*ImageableArea EnvC5/Env C5: "12.00 12.00 447.00 637.00" +*ImageableArea EnvDL/Env DL: "12.00 12.00 299.00 611.00" +*ImageableArea EnvISOB5/Env ISO B5: "12.00 12.00 486.00 696.00" +*ImageableArea EnvMonarch/Env Monarch: "12.00 12.00 267.00 528.00" +*ImageableArea Executive/Executive: "12.00 12.00 510.00 744.00" +*ImageableArea Folio/Folio: "12.00 12.00 600.00 924.00" +*ImageableArea Ledger/Ledger: "12.00 12.00 1212.00 780.00" +*ImageableArea Legal/Legal: "12.00 12.00 600.00 996.00" +*ImageableArea Statement/Statement: "12.00 12.00 384.00 600.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A3/A3: "842 1191" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B4/B4: "708 1000" +*PaperDimension B5/B5 [ISO]: "498 708" +*PaperDimension B5jis/B5 [JIS]: "518 727" +*PaperDimension B6/B6: "354 498" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC4/Env C4: "649 918" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Ledger/Ledger: "1224 792" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Statement/Statement: "396 612" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Cassette1/Cassette 1: "%% FoomaticRIPOptionSetting: InputSlot=Cassette1" +*FoomaticRIPOptionSetting InputSlot=Cassette1: "-s1 " +*InputSlot MPTray/MP Tray: "%% FoomaticRIPOptionSetting: InputSlot=MPTray" +*FoomaticRIPOptionSetting InputSlot=MPTray: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Auto +*MediaType Plain/Plain: "%% FoomaticRIPOptionSetting: MediaType=Plain" +*FoomaticRIPOptionSetting MediaType=Plain: "-m1 " +*MediaType HighQuality/High quality: "%% FoomaticRIPOptionSetting: MediaType=HighQuality" +*FoomaticRIPOptionSetting MediaType=HighQuality: "-m20 " +*MediaType Auto/Auto Select: "%% FoomaticRIPOptionSetting: MediaType=Auto" +*FoomaticRIPOptionSetting MediaType=Auto: "-m0 " +*MediaType Bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=Bond" +*FoomaticRIPOptionSetting MediaType=Bond: "-m7 " +*MediaType Cardstock/Cardstock: "%% FoomaticRIPOptionSetting: MediaType=Cardstock" +*FoomaticRIPOptionSetting MediaType=Cardstock: "-m10 " +*MediaType Color/Color: "%% FoomaticRIPOptionSetting: MediaType=Color" +*FoomaticRIPOptionSetting MediaType=Color: "-m9 " +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m12 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m6 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m3 " +*MediaType Preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=Preprinted" +*FoomaticRIPOptionSetting MediaType=Preprinted: "-m2 " +*MediaType Prepunched/Prepunched: "%% FoomaticRIPOptionSetting: MediaType=Prepunched" +*FoomaticRIPOptionSetting MediaType=Prepunched: "-m5 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m8 " +*MediaType Rough/Rough: "%% FoomaticRIPOptionSetting: MediaType=Rough" +*FoomaticRIPOptionSetting MediaType=Rough: "-m16 " +*MediaType Thick/Thick: "%% FoomaticRIPOptionSetting: MediaType=Thick" +*FoomaticRIPOptionSetting MediaType=Thick: "-m19 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m4 " +*MediaType Vellum/Vellum: "%% FoomaticRIPOptionSetting: MediaType=Vellum" +*FoomaticRIPOptionSetting MediaType=Vellum: "-m15 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Lexmark-C500.ppd b/PPD/Lexmark-C500.ppd new file mode 100644 index 0000000..3b87b93 --- /dev/null +++ b/PPD/Lexmark-C500.ppd @@ -0,0 +1,440 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Lexmark-C500-foo2slx.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2SLX.PPD" +*Manufacturer: "Lexmark" +*Product: "(C500)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Lexmark C500" +*ShortNickName: "Lexmark C500 foo2slx" +*NickName: "Lexmark C500 Foomatic/foo2slx (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2slx,R1,M0,TF;" + +*driverName foo2slx/foo2slx: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2slx.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Lexmark-C500 foo2slx +*FoomaticRIPCommandLine: "foo2slx-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p6 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p4 " +*PageSize B5iso/B5iso: "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p5 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p11 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p8 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p9 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion B5iso/B5iso: "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea B5/B5: "9 12.00 489 696.00" +*ImageableArea B5iso/B5iso: "9 12.00 489 696.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension B5/B5: "498 708" +*PaperDimension B5iso/B5iso: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Cassette1/Cassette 1: "%% FoomaticRIPOptionSetting: InputSlot=Cassette1" +*FoomaticRIPOptionSetting InputSlot=Cassette1: "-s1 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType middle/Middle: "%% FoomaticRIPOptionSetting: MediaType=middle" +*FoomaticRIPOptionSetting MediaType=middle: "-m8 " +*MediaType envelope1/Envelope 1: "%% FoomaticRIPOptionSetting: MediaType=envelope1" +*FoomaticRIPOptionSetting MediaType=envelope1: "-m4 " +*MediaType envelope2/Envelope 2: "%% FoomaticRIPOptionSetting: MediaType=envelope2" +*FoomaticRIPOptionSetting MediaType=envelope2: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m2 " +*MediaType special/Special: "%% FoomaticRIPOptionSetting: MediaType=special" +*FoomaticRIPOptionSetting MediaType=special: "-m9 " +*MediaType thick1/Thick 1: "%% FoomaticRIPOptionSetting: MediaType=thick1" +*FoomaticRIPOptionSetting MediaType=thick1: "-m3 " +*MediaType thick2/Thick 2: "%% FoomaticRIPOptionSetting: MediaType=thick2" +*FoomaticRIPOptionSetting MediaType=thick2: "-m6 " +*MediaType thin/Thin: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m5 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m1 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: lexRPCA2000 +*ICM lexRPCA2000/File lexRPCA2000.icm (xp): "%% FoomaticRIPOptionSetting: ICM=lexRPCA2000" +*FoomaticRIPOptionSetting ICM=lexRPCA2000: "-GlexRPCA2000.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Minolta-Color_PageWorks_Pro_L.ppd b/PPD/Minolta-Color_PageWorks_Pro_L.ppd new file mode 100644 index 0000000..7120386 --- /dev/null +++ b/PPD/Minolta-Color_PageWorks_Pro_L.ppd @@ -0,0 +1,493 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Minolta-Color_PageWorks_Pro_L-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "Minolta" +*Product: "(Color PageWorks/Pro L)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Minolta Color PageWorks/Pro L" +*ShortNickName: "Minolta C. P.Wor./Pro L foo2zjs" +*NickName: "Minolta Color PageWorks/Pro L Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Minolta-Color_PageWorks_Pro_L foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode PhotoOnly/Color - Photo Only: "%% FoomaticRIPOptionSetting: ColorMode=PhotoOnly" +*FoomaticRIPOptionSetting ColorMode=PhotoOnly: "-c -C1 " +*ColorMode PhotosAndText/Color - Photos and Text: "%% FoomaticRIPOptionSetting: ColorMode=PhotosAndText" +*FoomaticRIPOptionSetting ColorMode=PhotosAndText: "-c -C2 " +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode GraphicsAndText/Color - Graphics and Text: "%% FoomaticRIPOptionSetting: ColorMode=GraphicsAndText" +*FoomaticRIPOptionSetting ColorMode=GraphicsAndText: "-c -C3 " +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s3 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM CPWL6W/File CPWL6W.icm: "%% FoomaticRIPOptionSetting: ICM=CPWL6W" +*FoomaticRIPOptionSetting ICM=CPWL6W: "-GCPWL6W.icm " +*ICM CPWL12W/File CPWL12W.icm: "%% FoomaticRIPOptionSetting: ICM=CPWL12W" +*FoomaticRIPOptionSetting ICM=CPWL12W: "-GCPWL12W.icm " +*ICM CPWL24W/File CPWL24W.icm: "%% FoomaticRIPOptionSetting: ICM=CPWL24W" +*FoomaticRIPOptionSetting ICM=CPWL24W: "-GCPWL24W.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*OpenUI *Intent/ICM Color Profile Intent: PickOne +*FoomaticRIPOption Intent: enum CmdLine A +*OrderDependency: 310 AnySetup *Intent +*DefaultIntent: Perceptual +*Intent Absolute/Absolute Intent: "%% FoomaticRIPOptionSetting: Intent=Absolute" +*FoomaticRIPOptionSetting Intent=Absolute: "-I3 " +*Intent Colorimetric/Colorimetric Intent: "%% FoomaticRIPOptionSetting: Intent=Colorimetric" +*FoomaticRIPOptionSetting Intent=Colorimetric: "-I1 " +*Intent Perceptual/Perceptual Intent: "%% FoomaticRIPOptionSetting: Intent=Perceptual" +*FoomaticRIPOptionSetting Intent=Perceptual: "-I0 " +*Intent Saturation/Saturation Intent: "%% FoomaticRIPOptionSetting: Intent=Saturation" +*FoomaticRIPOptionSetting Intent=Saturation: "-I2 " +*CloseUI: *Intent + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Minolta-magicolor_2200_DL.ppd b/PPD/Minolta-magicolor_2200_DL.ppd new file mode 100644 index 0000000..c2f36f7 --- /dev/null +++ b/PPD/Minolta-magicolor_2200_DL.ppd @@ -0,0 +1,485 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Minolta-magicolor_2200_DL-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "Minolta" +*Product: "(magicolor 2200 DL)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Minolta magicolor 2200 DL" +*ShortNickName: "Minolta magico. 2200 DL foo2zjs" +*NickName: "Minolta magicolor 2200 DL Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Minolta-magicolor_2200_DL foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=Color: " " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode PhotoOnly/Color - Photo Only: "%% FoomaticRIPOptionSetting: ColorMode=PhotoOnly" +*FoomaticRIPOptionSetting ColorMode=PhotoOnly: "-c -C1 " +*ColorMode PhotosAndText/Color - Photos and Text: "%% FoomaticRIPOptionSetting: ColorMode=PhotosAndText" +*FoomaticRIPOptionSetting ColorMode=PhotosAndText: "-c -C2 " +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode GraphicsAndText/Color - Graphics and Text: "%% FoomaticRIPOptionSetting: ColorMode=GraphicsAndText" +*FoomaticRIPOptionSetting ColorMode=GraphicsAndText: "-c -C3 " +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Upper/Upper Tray: "%% FoomaticRIPOptionSetting: InputSlot=Upper" +*FoomaticRIPOptionSetting InputSlot=Upper: "-s2 " +*InputSlot Lower/Optional Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s5 " +*InputSlot Multipurpose/Multipurpose Tray: "%% FoomaticRIPOptionSetting: InputSlot=Multipurpose" +*FoomaticRIPOptionSetting InputSlot=Multipurpose: "-s1 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: DL2200RGB +*ICM DL2200RGB/File DL2200RGB.icm: "%% FoomaticRIPOptionSetting: ICM=DL2200RGB" +*FoomaticRIPOptionSetting ICM=DL2200RGB: "-GDL2200RGB.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*OpenUI *Intent/ICM Color Profile Intent: PickOne +*FoomaticRIPOption Intent: enum CmdLine A +*OrderDependency: 310 AnySetup *Intent +*DefaultIntent: Perceptual +*Intent Absolute/Absolute Intent: "%% FoomaticRIPOptionSetting: Intent=Absolute" +*FoomaticRIPOptionSetting Intent=Absolute: "-I3 " +*Intent Colorimetric/Colorimetric Intent: "%% FoomaticRIPOptionSetting: Intent=Colorimetric" +*FoomaticRIPOptionSetting Intent=Colorimetric: "-I1 " +*Intent Perceptual/Perceptual Intent: "%% FoomaticRIPOptionSetting: Intent=Perceptual" +*FoomaticRIPOptionSetting Intent=Perceptual: "-I0 " +*Intent Saturation/Saturation Intent: "%% FoomaticRIPOptionSetting: Intent=Saturation" +*FoomaticRIPOptionSetting Intent=Saturation: "-I2 " +*CloseUI: *Intent + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Minolta-magicolor_2300_DL.ppd b/PPD/Minolta-magicolor_2300_DL.ppd new file mode 100644 index 0000000..8b88035 --- /dev/null +++ b/PPD/Minolta-magicolor_2300_DL.ppd @@ -0,0 +1,496 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Minolta-magicolor_2300_DL-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "Minolta" +*Product: "(magicolor 2300 DL)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Minolta magicolor 2300 DL" +*ShortNickName: "Minolta magico. 2300 DL foo2zjs" +*NickName: "Minolta magicolor 2300 DL Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MANUFACTURER:MINOLTA-QMS;MODEL:magicolor 2300 DL;COMMAND SET:ZJS,PJL;DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Minolta-magicolor_2300_DL foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=Color: " " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode PhotoOnly/Color - Photo Only: "%% FoomaticRIPOptionSetting: ColorMode=PhotoOnly" +*FoomaticRIPOptionSetting ColorMode=PhotoOnly: "-c -C1 " +*ColorMode PhotosAndText/Color - Photos and Text: "%% FoomaticRIPOptionSetting: ColorMode=PhotosAndText" +*FoomaticRIPOptionSetting ColorMode=PhotosAndText: "-c -C2 " +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode GraphicsAndText/Color - Graphics and Text: "%% FoomaticRIPOptionSetting: ColorMode=GraphicsAndText" +*FoomaticRIPOptionSetting ColorMode=GraphicsAndText: "-c -C3 " +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Lower/Optional Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s3 " +*InputSlot Multipurpose/Multipurpose Tray: "%% FoomaticRIPOptionSetting: InputSlot=Multipurpose" +*FoomaticRIPOptionSetting InputSlot=Multipurpose: "-s1 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: DL2312 +*ICM DL2312/File DL2312.icm: "%% FoomaticRIPOptionSetting: ICM=DL2312" +*FoomaticRIPOptionSetting ICM=DL2312: "-GDL2312.icm " +*ICM DL2324/File DL2324.icm: "%% FoomaticRIPOptionSetting: ICM=DL2324" +*FoomaticRIPOptionSetting ICM=DL2324: "-GDL2324.icm " +*ICM km2430_2/File km2430_2.icm: "%% FoomaticRIPOptionSetting: ICM=km2430_2" +*FoomaticRIPOptionSetting ICM=km2430_2: "-Gkm2430_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*OpenUI *Intent/ICM Color Profile Intent: PickOne +*FoomaticRIPOption Intent: enum CmdLine A +*OrderDependency: 310 AnySetup *Intent +*DefaultIntent: Perceptual +*Intent Absolute/Absolute Intent: "%% FoomaticRIPOptionSetting: Intent=Absolute" +*FoomaticRIPOptionSetting Intent=Absolute: "-I3 " +*Intent Colorimetric/Colorimetric Intent: "%% FoomaticRIPOptionSetting: Intent=Colorimetric" +*FoomaticRIPOptionSetting Intent=Colorimetric: "-I1 " +*Intent Perceptual/Perceptual Intent: "%% FoomaticRIPOptionSetting: Intent=Perceptual" +*FoomaticRIPOptionSetting Intent=Perceptual: "-I0 " +*Intent Saturation/Saturation Intent: "%% FoomaticRIPOptionSetting: Intent=Saturation" +*FoomaticRIPOptionSetting Intent=Saturation: "-I2 " +*CloseUI: *Intent + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Minolta-magicolor_2430_DL.ppd b/PPD/Minolta-magicolor_2430_DL.ppd new file mode 100644 index 0000000..3ea9712 --- /dev/null +++ b/PPD/Minolta-magicolor_2430_DL.ppd @@ -0,0 +1,496 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Minolta-magicolor_2430_DL-foo2zjs.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2ZJS.PPD" +*Manufacturer: "Minolta" +*Product: "(magicolor 2430 DL)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Minolta magicolor 2430 DL" +*ShortNickName: "Minolta magico. 2430 DL foo2zjs" +*NickName: "Minolta magicolor 2430 DL Foomatic/foo2zjs (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MANUFACTURER:MINOLTA-QMS;MODEL:magicolor 2430 DL;COMMAND SET:ZJS,PJL;DRV:Dfoo2zjs,R1,M0,TF;" + +*driverName foo2zjs/foo2zjs: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2zjs.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Minolta-magicolor_2430_DL foo2zjs +*FoomaticRIPCommandLine: "foo2zjs-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=Color: " " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode PhotoOnly/Color - Photo Only: "%% FoomaticRIPOptionSetting: ColorMode=PhotoOnly" +*FoomaticRIPOptionSetting ColorMode=PhotoOnly: "-c -C1 " +*ColorMode PhotosAndText/Color - Photos and Text: "%% FoomaticRIPOptionSetting: ColorMode=PhotosAndText" +*FoomaticRIPOptionSetting ColorMode=PhotosAndText: "-c -C2 " +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode GraphicsAndText/Color - Graphics and Text: "%% FoomaticRIPOptionSetting: ColorMode=GraphicsAndText" +*FoomaticRIPOptionSetting ColorMode=GraphicsAndText: "-c -C3 " +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p9 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p11 " +*PageSize B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*FoomaticRIPOptionSetting PageSize=B5: "-p13 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p20 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p28 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p27 " +*PageSize EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*FoomaticRIPOptionSetting PageSize=EnvISOB5: "-p34 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p37 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p7 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p5 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5/B5: "%% FoomaticRIPOptionSetting: PageSize=B5" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvISOB5/Env ISO B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5/B5: "11.34 11.34 486.66 696.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvISOB5/Env ISO B5: "11.34 11.34 486.66 696.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5/B5: "498 708" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvISOB5/Env ISO B5: "498 708" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Lower/Optional Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower" +*FoomaticRIPOptionSetting InputSlot=Lower: "-s3 " +*InputSlot Multipurpose/Multipurpose Tray: "%% FoomaticRIPOptionSetting: InputSlot=Multipurpose" +*FoomaticRIPOptionSetting InputSlot=Multipurpose: "-s1 " +*InputSlot Auto/Auto Source: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s7 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: Standard +*MediaType Envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=Envelope" +*FoomaticRIPOptionSetting MediaType=Envelope: "-m257 " +*MediaType Labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=Labels" +*FoomaticRIPOptionSetting MediaType=Labels: "-m263 " +*MediaType Letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=Letterhead" +*FoomaticRIPOptionSetting MediaType=Letterhead: "-m259 " +*MediaType Postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=Postcard" +*FoomaticRIPOptionSetting MediaType=Postcard: "-m262 " +*MediaType Standard/Standard Paper: "%% FoomaticRIPOptionSetting: MediaType=Standard" +*FoomaticRIPOptionSetting MediaType=Standard: "-m1 " +*MediaType ThickStock/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=ThickStock" +*FoomaticRIPOptionSetting MediaType=ThickStock: "-m261 " +*MediaType Transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=Transparency" +*FoomaticRIPOptionSetting MediaType=Transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: DL2312 +*ICM DL2312/File DL2312.icm: "%% FoomaticRIPOptionSetting: ICM=DL2312" +*FoomaticRIPOptionSetting ICM=DL2312: "-GDL2312.icm " +*ICM DL2324/File DL2324.icm: "%% FoomaticRIPOptionSetting: ICM=DL2324" +*FoomaticRIPOptionSetting ICM=DL2324: "-GDL2324.icm " +*ICM km2430_2/File km2430_2.icm: "%% FoomaticRIPOptionSetting: ICM=km2430_2" +*FoomaticRIPOptionSetting ICM=km2430_2: "-Gkm2430_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*CloseUI: *ICM + +*OpenUI *Intent/ICM Color Profile Intent: PickOne +*FoomaticRIPOption Intent: enum CmdLine A +*OrderDependency: 310 AnySetup *Intent +*DefaultIntent: Perceptual +*Intent Absolute/Absolute Intent: "%% FoomaticRIPOptionSetting: Intent=Absolute" +*FoomaticRIPOptionSetting Intent=Absolute: "-I3 " +*Intent Colorimetric/Colorimetric Intent: "%% FoomaticRIPOptionSetting: Intent=Colorimetric" +*FoomaticRIPOptionSetting Intent=Colorimetric: "-I1 " +*Intent Perceptual/Perceptual Intent: "%% FoomaticRIPOptionSetting: Intent=Perceptual" +*FoomaticRIPOptionSetting Intent=Perceptual: "-I0 " +*Intent Saturation/Saturation Intent: "%% FoomaticRIPOptionSetting: Intent=Saturation" +*FoomaticRIPOptionSetting Intent=Saturation: "-I2 " +*CloseUI: *Intent + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C110.ppd b/PPD/Oki-C110.ppd new file mode 100644 index 0000000..72f6712 --- /dev/null +++ b/PPD/Oki-C110.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C110-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "Oki" +*Product: "(C110)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C110" +*ShortNickName: "Oki C110 foo2lava" +*NickName: "Oki C110 Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:OKI DATA CORP;MDL:C110;CMD:GDI;DES:OKI C110;DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C110 foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: oki-c110-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C301dn.ppd b/PPD/Oki-C301dn.ppd new file mode 100644 index 0000000..5e5c126 --- /dev/null +++ b/PPD/Oki-C301dn.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C301dn-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C301dn)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C301dn" +*ShortNickName: "Oki C301dn foo2hiperc" +*NickName: "Oki C301dn Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C301dn foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C3100.ppd b/PPD/Oki-C3100.ppd new file mode 100644 index 0000000..fda8426 --- /dev/null +++ b/PPD/Oki-C3100.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C3100-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C3100)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C3100" +*ShortNickName: "Oki C3100 foo2hiperc" +*NickName: "Oki C3100 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C3100 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C310dn.ppd b/PPD/Oki-C310dn.ppd new file mode 100644 index 0000000..f922ec2 --- /dev/null +++ b/PPD/Oki-C310dn.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C310dn-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C310dn)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C310dn" +*ShortNickName: "Oki C310dn foo2hiperc" +*NickName: "Oki C310dn Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C310dn foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C3200.ppd b/PPD/Oki-C3200.ppd new file mode 100644 index 0000000..7ea0824 --- /dev/null +++ b/PPD/Oki-C3200.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C3200-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C3200)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C3200" +*ShortNickName: "Oki C3200 foo2hiperc" +*NickName: "Oki C3200 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C3200 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C3300.ppd b/PPD/Oki-C3300.ppd new file mode 100644 index 0000000..b3595c3 --- /dev/null +++ b/PPD/Oki-C3300.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C3300-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C3300)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C3300" +*ShortNickName: "Oki C3300 foo2hiperc" +*NickName: "Oki C3300 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C3300 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C3400.ppd b/PPD/Oki-C3400.ppd new file mode 100644 index 0000000..0fff1af --- /dev/null +++ b/PPD/Oki-C3400.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C3400-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C3400)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C3400" +*ShortNickName: "Oki C3400 foo2hiperc" +*NickName: "Oki C3400 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C3400 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C3530_MFP.ppd b/PPD/Oki-C3530_MFP.ppd new file mode 100644 index 0000000..c6150ce --- /dev/null +++ b/PPD/Oki-C3530_MFP.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C3530_MFP-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C3530 MFP)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C3530 MFP" +*ShortNickName: "Oki C3530 MFP foo2hiperc" +*NickName: "Oki C3530 MFP Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C3530_MFP foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C5100.ppd b/PPD/Oki-C5100.ppd new file mode 100644 index 0000000..05eed38 --- /dev/null +++ b/PPD/Oki-C5100.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C5100-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C5100)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C5100" +*ShortNickName: "Oki C5100 foo2hiperc" +*NickName: "Oki C5100 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C5100 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C511dn.ppd b/PPD/Oki-C511dn.ppd new file mode 100644 index 0000000..552d84f --- /dev/null +++ b/PPD/Oki-C511dn.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C511dn-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C511dn)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C511dn" +*ShortNickName: "Oki C511dn foo2hiperc" +*NickName: "Oki C511dn Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C511dn foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C5200.ppd b/PPD/Oki-C5200.ppd new file mode 100644 index 0000000..8e8e846 --- /dev/null +++ b/PPD/Oki-C5200.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C5200-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C5200)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C5200" +*ShortNickName: "Oki C5200 foo2hiperc" +*NickName: "Oki C5200 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C5200 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C5500.ppd b/PPD/Oki-C5500.ppd new file mode 100644 index 0000000..a154e2b --- /dev/null +++ b/PPD/Oki-C5500.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C5500-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C5500)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C5500" +*ShortNickName: "Oki C5500 foo2hiperc" +*NickName: "Oki C5500 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C5500 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C5600.ppd b/PPD/Oki-C5600.ppd new file mode 100644 index 0000000..211dca8 --- /dev/null +++ b/PPD/Oki-C5600.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C5600-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C5600)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C5600" +*ShortNickName: "Oki C5600 foo2hiperc" +*NickName: "Oki C5600 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C5600 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C5650.ppd b/PPD/Oki-C5650.ppd new file mode 100644 index 0000000..3e37e8e --- /dev/null +++ b/PPD/Oki-C5650.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C5650-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C5650)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C5650" +*ShortNickName: "Oki C5650 foo2hiperc" +*NickName: "Oki C5650 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C5650 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C5800.ppd b/PPD/Oki-C5800.ppd new file mode 100644 index 0000000..b543447 --- /dev/null +++ b/PPD/Oki-C5800.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C5800-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C5800)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C5800" +*ShortNickName: "Oki C5800 foo2hiperc" +*NickName: "Oki C5800 Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C5800 foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Oki-C810.ppd b/PPD/Oki-C810.ppd new file mode 100644 index 0000000..b11c757 --- /dev/null +++ b/PPD/Oki-C810.ppd @@ -0,0 +1,529 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Oki-C810-foo2hiperc-z1.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Oki" +*Product: "(C810)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Oki C810" +*ShortNickName: "Oki C810 foo2hiperc-z1" +*NickName: "Oki C810 Foomatic/foo2hiperc-z1 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc-z1,R1,M0,TF;" + +*driverName foo2hiperc-z1/foo2hiperc-z1: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Oki-C810 foo2hiperc-z1 +*FoomaticRIPCommandLine: "foo2hiperc-wrapper -z1 %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3" +*FoomaticRIPOptionSetting PageSize=A3: "-p15 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*PageSize tabloid/Ledger or Tabloid: "%% FoomaticRIPOptionSetting: PageSize=tabloid" +*FoomaticRIPOptionSetting PageSize=tabloid: "-p16 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*PageRegion tabloid/Ledger or Tabloid: "%% FoomaticRIPOptionSetting: PageSize=tabloid" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A3/A3: "9 12.00 833 1179.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" +*ImageableArea tabloid/Ledger or Tabloid: "9 12.00 783 1212.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A3/A3: "842 1191" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" +*PaperDimension tabloid/Ledger or Tabloid: "792 1224" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Olivetti-d-Color_P160W.ppd b/PPD/Olivetti-d-Color_P160W.ppd new file mode 100644 index 0000000..ff925ea --- /dev/null +++ b/PPD/Olivetti-d-Color_P160W.ppd @@ -0,0 +1,519 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Olivetti-d-Color_P160W-foo2hiperc.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HIPE.PPD" +*Manufacturer: "Olivetti" +*Product: "(d-Color P160W)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Olivetti d-Color P160W" +*ShortNickName: "Olivetti d-Co. P160W foo2hiperc" +*NickName: "Olivetti d-Color P160W Foomatic/foo2hiperc (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hiperc,R1,M0,TF;" + +*driverName foo2hiperc/foo2hiperc: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hiperc.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Olivetti-d-Color_P160W foo2hiperc +*FoomaticRIPCommandLine: "foo2hiperc-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 300x300dpi/300x300 dpi: "%% FoomaticRIPOptionSetting: Resolution=300x300dpi" +*FoomaticRIPOptionSetting Resolution=300x300dpi: "-r300x300 " +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 600x1200dpi/600x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x1200dpi" +*FoomaticRIPOptionSetting Resolution=600x1200dpi: "-r600x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p5 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p6 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p11 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p10 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p8 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p12 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*PageSize Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*FoomaticRIPOptionSetting PageSize=Legal13: "-p4 " +*PageSize Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*FoomaticRIPOptionSetting PageSize=Legal135: "-p14 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion Legal13/Legal 13: "%% FoomaticRIPOptionSetting: PageSize=Legal13" +*PageRegion Legal135/Legal 13.5: "%% FoomaticRIPOptionSetting: PageSize=Legal135" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" +*ImageableArea Legal13/Legal 13: "9 12.00 603 996.00" +*ImageableArea Legal135/Legal 13.5: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension Legal13/Legal 13: "612 1008" +*PaperDimension Legal135/Legal 13.5: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s2 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s0 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s4 " +*InputSlot Multi/MultiPurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m1 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m2 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *Compression/Compression Mode: PickOne +*FoomaticRIPOption Compression: enum CmdLine A +*OrderDependency: 120 AnySetup *Compression +*DefaultCompression: uncompressed +*Compression compressed/Compressed: "%% FoomaticRIPOptionSetting: Compression=compressed" +*FoomaticRIPOptionSetting Compression=compressed: "-Z1 " +*Compression uncompressed/Uncompressed: "%% FoomaticRIPOptionSetting: Compression=uncompressed" +*FoomaticRIPOptionSetting Compression=uncompressed: "-Z0 " +*CloseUI: *Compression + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: OK3200L2 +*ICM C3400-L1/C3400-L1.icm - 1200dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L1" +*FoomaticRIPOptionSetting ICM=C3400-L1: "-C10 -GC3400-L1-BIN-ICC_06031&& +50.icm " +*End +*ICM C3400-L2/C3400-L2.icm - 600dpi C3300/C3400/C3530 MFP: "%% FoomaticRIPOptionSetting: ICM=C3400-L2" +*FoomaticRIPOptionSetting ICM=C3400-L2: "-C10 -GC3400-L2-BIN-ICC_06041&& +10.icm " +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM OK160L1/OK160L1.icm - 600dpi Multi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L1" +*FoomaticRIPOptionSetting ICM=OK160L1: "-C10 -GOK5600L1.icm " +*ICM OK160L2/OK160L2.icm - 1200dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L2" +*FoomaticRIPOptionSetting ICM=OK160L2: "-C10 -GOK5600L2.icm " +*ICM OK160L3/OK160L3.icm - 600dpi d-Color P160W: "%% FoomaticRIPOptionSetting: ICM=OK160L3" +*FoomaticRIPOptionSetting ICM=OK160L3: "-C10 -GOK5600L3.icm " +*ICM OK3200L1/OK3200L1.icm - 1200dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L1" +*FoomaticRIPOptionSetting ICM=OK3200L1: "-C10 -GOK3200L1.icm " +*ICM OK3200L2/OK3200L2.icm - 600dpi C3100/C3200/C5100/C5200: "%% FoomaticRIPOptionSetting: ICM=OK3200L2" +*FoomaticRIPOptionSetting ICM=OK3200L2: "-C10 -GOK3200L2.icm " +*ICM OK5600L1/OK5600L1.icm - 600dpi Multi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L1" +*FoomaticRIPOptionSetting ICM=OK5600L1: "-C10 -GOK5600L1.icm " +*ICM OK5600L2/OK5600L2.icm - 1200dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L2" +*FoomaticRIPOptionSetting ICM=OK5600L2: "-C10 -GOK5600L2.icm " +*ICM OK5600L3/OK5600L3.icm - 600dpi C5500/C5600/C5800: "%% FoomaticRIPOptionSetting: ICM=OK5600L3" +*FoomaticRIPOptionSetting ICM=OK5600L3: "-C10 -GOK5600L3.icm " +*ICM OKC301H1/OKC301H1.icm - 600dpi Multi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H1" +*FoomaticRIPOptionSetting ICM=OKC301H1: "-C10 -GOKC301H1.icm " +*ICM OKC301H2/OKC301H2.icm - 1200dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H2" +*FoomaticRIPOptionSetting ICM=OKC301H2: "-C10 -GOKC301H2.icm " +*ICM OKC301H3/OKC301H3.icm - 600dpi C301dn: "%% FoomaticRIPOptionSetting: ICM=OKC301H3" +*FoomaticRIPOptionSetting ICM=OKC301H3: "-C10 -GOKC301H3.icm " +*ICM OKC310H1/OKC310H1.icm - 600dpi Multi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H1" +*FoomaticRIPOptionSetting ICM=OKC310H1: "-C10 -GOKC310H1.icm " +*ICM OKC310H2/OKC310H2.icm - 1200dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H2" +*FoomaticRIPOptionSetting ICM=OKC310H2: "-C10 -GOKC310H2.icm " +*ICM OKC310H3/OKC310H3.icm - 600dpi C310dn: "%% FoomaticRIPOptionSetting: ICM=OKC310H3" +*FoomaticRIPOptionSetting ICM=OKC310H3: "-C10 -GOKC310H3.icm " +*ICM OKC551H1/OKC551H1.icm - 600dpi Multi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H1" +*FoomaticRIPOptionSetting ICM=OKC551H1: "-C10 -GOKC511H1.icm " +*ICM OKC551H2/OKC551H2.icm - 1200dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H2" +*FoomaticRIPOptionSetting ICM=OKC551H2: "-C10 -GOKC511H2.icm " +*ICM OKC551H3/OKC551H3.icm - 600dpi C511dn: "%% FoomaticRIPOptionSetting: ICM=OKC551H3" +*FoomaticRIPOptionSetting ICM=OKC551H3: "-C10 -GOK5111H3.icm " +*ICM OKC810H1/OKC810H1.icm - 600dpi Multi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H1" +*FoomaticRIPOptionSetting ICM=OKC810H1: "-C10 -GOKC810H1.icm " +*ICM OKC810H2/OKC810H2.icm - 1200dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H2" +*FoomaticRIPOptionSetting ICM=OKC810H2: "-C10 -GOKC810H2.icm " +*ICM OKC810H3/OKC810H3.icm - 600dpi C810: "%% FoomaticRIPOptionSetting: ICM=OKC810H3" +*FoomaticRIPOptionSetting ICM=OKC810H3: "-C10 -GOKC810H3.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Ricoh-SP_112.ppd b/PPD/Ricoh-SP_112.ppd new file mode 100644 index 0000000..ead334f --- /dev/null +++ b/PPD/Ricoh-SP_112.ppd @@ -0,0 +1,341 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Ricoh-SP_112-foo2ddst.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2DDST.PPD" +*Manufacturer: "Ricoh" +*Product: "(SP 112)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Ricoh SP 112" +*ShortNickName: "Ricoh SP 112 foo2ddst" +*NickName: "Ricoh SP 112 Foomatic/foo2ddst (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2ddst,R1,M0,TF;" + +*driverName foo2ddst/foo2ddst: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2ddst.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 14.40 14.40 14.4 14.4 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Ricoh-SP_112 foo2ddst +*FoomaticRIPCommandLine: "foo2ddst-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p5 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p6 " +*PageSize A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7" +*FoomaticRIPOptionSetting PageSize=A7: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p8 " +*PageSize B6jis/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6jis" +*FoomaticRIPOptionSetting PageSize=B6jis: "-p9 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p2 " +*PageSize w522h737/16k 184x260: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p11 " +*PageSize w553h765/16k 195x270: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p12 " +*PageSize w558h774/16k 197x273: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p10 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion B6jis/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6jis" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "14.40 14.40 597.60 777.60" +*ImageableArea A4/A4: "14.40 14.40 580.60 827.60" +*ImageableArea A5/A5: "14.40 14.40 405.60 580.60" +*ImageableArea A7/A7: "14.40 14.40 195.60 282.60" +*ImageableArea B5jis/B5 (JIS): "14.40 14.40 503.60 712.60" +*ImageableArea B6jis/B6 (JIS): "14.40 14.40 347.60 503.60" +*ImageableArea Executive/Executive: "14.40 14.40 507.60 741.60" +*ImageableArea Legal/Legal: "14.40 14.40 597.60 993.60" +*ImageableArea w522h737/16k 184x260: "14.40 14.40 507.60 722.60" +*ImageableArea w553h765/16k 195x270: "14.40 14.40 538.60 750.60" +*ImageableArea w558h774/16k 197x273: "14.40 14.40 543.60 759.60" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A7/A7: "210 297" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension B6jis/B6 (JIS): "362 518" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260: "522 737" +*PaperDimension w553h765/16k 195x270: "553 765" +*PaperDimension w558h774/16k 197x273: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Tray1 +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: PlainAndRecycled +*MediaType PlainAndRecycled/PlainAndRecycled: "%% FoomaticRIPOptionSetting: MediaType=PlainAndRecycled" +*FoomaticRIPOptionSetting MediaType=PlainAndRecycled: "-m1 " +*MediaType Paper/Plain: "%% FoomaticRIPOptionSetting: MediaType=Paper" +*FoomaticRIPOptionSetting MediaType=Paper: "-m2 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m5 " +*MediaType Thick1/Thick 1: "%% FoomaticRIPOptionSetting: MediaType=Thick1" +*FoomaticRIPOptionSetting MediaType=Thick1: "-m4 " +*MediaType Thin/Thin: "%% FoomaticRIPOptionSetting: MediaType=Thin" +*FoomaticRIPOptionSetting MediaType=Thin: "-m3 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Ricoh-SP_201Nw.ppd b/PPD/Ricoh-SP_201Nw.ppd new file mode 100644 index 0000000..1c9e256 --- /dev/null +++ b/PPD/Ricoh-SP_201Nw.ppd @@ -0,0 +1,341 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Ricoh-SP_201Nw-foo2ddst.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2DDST.PPD" +*Manufacturer: "Ricoh" +*Product: "(SP 201Nw)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Ricoh SP 201Nw" +*ShortNickName: "Ricoh SP 201Nw foo2ddst" +*NickName: "Ricoh SP 201Nw Foomatic/foo2ddst (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2ddst,R1,M0,TF;" + +*driverName foo2ddst/foo2ddst: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2ddst.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 14.40 14.40 14.4 14.4 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Ricoh-SP_201Nw foo2ddst +*FoomaticRIPCommandLine: "foo2ddst-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p1 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p5 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p6 " +*PageSize A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7" +*FoomaticRIPOptionSetting PageSize=A7: "-p7 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p8 " +*PageSize B6jis/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6jis" +*FoomaticRIPOptionSetting PageSize=B6jis: "-p9 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p2 " +*PageSize w522h737/16k 184x260: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*FoomaticRIPOptionSetting PageSize=w522h737: "-p11 " +*PageSize w553h765/16k 195x270: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*FoomaticRIPOptionSetting PageSize=w553h765: "-p12 " +*PageSize w558h774/16k 197x273: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*FoomaticRIPOptionSetting PageSize=w558h774: "-p10 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion B6jis/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6jis" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*PageRegion w522h737/16k 184x260: "%% FoomaticRIPOptionSetting: PageSize=w522h737" +*PageRegion w553h765/16k 195x270: "%% FoomaticRIPOptionSetting: PageSize=w553h765" +*PageRegion w558h774/16k 197x273: "%% FoomaticRIPOptionSetting: PageSize=w558h774" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "14.40 14.40 597.60 777.60" +*ImageableArea A4/A4: "14.40 14.40 580.60 827.60" +*ImageableArea A5/A5: "14.40 14.40 405.60 580.60" +*ImageableArea A7/A7: "14.40 14.40 195.60 282.60" +*ImageableArea B5jis/B5 (JIS): "14.40 14.40 503.60 712.60" +*ImageableArea B6jis/B6 (JIS): "14.40 14.40 347.60 503.60" +*ImageableArea Executive/Executive: "14.40 14.40 507.60 741.60" +*ImageableArea Legal/Legal: "14.40 14.40 597.60 993.60" +*ImageableArea w522h737/16k 184x260: "14.40 14.40 507.60 722.60" +*ImageableArea w553h765/16k 195x270: "14.40 14.40 538.60 750.60" +*ImageableArea w558h774/16k 197x273: "14.40 14.40 543.60 759.60" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A7/A7: "210 297" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension B6jis/B6 (JIS): "362 518" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" +*PaperDimension w522h737/16k 184x260: "522 737" +*PaperDimension w553h765/16k 195x270: "553 765" +*PaperDimension w558h774/16k 197x273: "558 774" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Tray1 +*InputSlot Tray1/Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Manual/Manual Feed: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: PlainAndRecycled +*MediaType PlainAndRecycled/PlainAndRecycled: "%% FoomaticRIPOptionSetting: MediaType=PlainAndRecycled" +*FoomaticRIPOptionSetting MediaType=PlainAndRecycled: "-m1 " +*MediaType Paper/Plain: "%% FoomaticRIPOptionSetting: MediaType=Paper" +*FoomaticRIPOptionSetting MediaType=Paper: "-m2 " +*MediaType Recycled/Recycled: "%% FoomaticRIPOptionSetting: MediaType=Recycled" +*FoomaticRIPOptionSetting MediaType=Recycled: "-m5 " +*MediaType Thick1/Thick 1: "%% FoomaticRIPOptionSetting: MediaType=Thick1" +*FoomaticRIPOptionSetting MediaType=Thick1: "-m4 " +*MediaType Thin/Thin: "%% FoomaticRIPOptionSetting: MediaType=Thin" +*FoomaticRIPOptionSetting MediaType=Thin: "-m3 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-300.ppd b/PPD/Samsung-CLP-300.ppd new file mode 100644 index 0000000..adc9c81 --- /dev/null +++ b/PPD/Samsung-CLP-300.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-300-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-300)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-300" +*ShortNickName: "Samsung CLP-300 foo2qpdl" +*NickName: "Samsung CLP-300 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-300 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp300 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-310.ppd b/PPD/Samsung-CLP-310.ppd new file mode 100644 index 0000000..52af1cf --- /dev/null +++ b/PPD/Samsung-CLP-310.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-310-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-310 Series)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-310" +*ShortNickName: "Samsung CLP-310 foo2qpdl" +*NickName: "Samsung CLP-310 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Samsung;MDL:CLP-310 Series;CMD:SPLC;DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-310 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp315 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-315.ppd b/PPD/Samsung-CLP-315.ppd new file mode 100644 index 0000000..a1f3d1d --- /dev/null +++ b/PPD/Samsung-CLP-315.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-315-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-310 Series)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-315" +*ShortNickName: "Samsung CLP-315 foo2qpdl" +*NickName: "Samsung CLP-315 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Samsung;MDL:CLP-310 Series;CMD:SPLC;DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-315 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp315 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-325.ppd b/PPD/Samsung-CLP-325.ppd new file mode 100644 index 0000000..6e9394f --- /dev/null +++ b/PPD/Samsung-CLP-325.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-325-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-320 Series)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-325" +*ShortNickName: "Samsung CLP-325 foo2qpdl" +*NickName: "Samsung CLP-325 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Samsung;MDL:CLP-320 Series;CMD:SPLC;DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-325 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp325 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-365.ppd b/PPD/Samsung-CLP-365.ppd new file mode 100644 index 0000000..fb02d25 --- /dev/null +++ b/PPD/Samsung-CLP-365.ppd @@ -0,0 +1,1173 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-365-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-360 Series)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-365" +*ShortNickName: "Samsung CLP-365 foo2qpdl" +*NickName: "Samsung CLP-365 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Samsung;MDL:CLP-360 Series;CMD:SPLC;DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-365 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z3: "-z3 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Color Adjust/Color Adjust + +*OpenUI *cab/Mono or Color Adjust Brightness: PickOne +*FoomaticRIPOption cab: int CmdLine A +*FoomaticRIPOptionPrototype cab: "-ab=%s " +*FoomaticRIPOptionRange cab: 0 100 +*OrderDependency: 211 AnySetup *cab +*Defaultcab: 50 +*FoomaticRIPDefaultcab: 50 +*cab 0/0: "%% FoomaticRIPOptionSetting: cab=0" +*cab 1/1: "%% FoomaticRIPOptionSetting: cab=1" +*cab 2/2: "%% FoomaticRIPOptionSetting: cab=2" +*cab 3/3: "%% FoomaticRIPOptionSetting: cab=3" +*cab 4/4: "%% FoomaticRIPOptionSetting: cab=4" +*cab 5/5: "%% FoomaticRIPOptionSetting: cab=5" +*cab 6/6: "%% FoomaticRIPOptionSetting: cab=6" +*cab 7/7: "%% FoomaticRIPOptionSetting: cab=7" +*cab 8/8: "%% FoomaticRIPOptionSetting: cab=8" +*cab 9/9: "%% FoomaticRIPOptionSetting: cab=9" +*cab 10/10: "%% FoomaticRIPOptionSetting: cab=10" +*cab 11/11: "%% FoomaticRIPOptionSetting: cab=11" +*cab 12/12: "%% FoomaticRIPOptionSetting: cab=12" +*cab 13/13: "%% FoomaticRIPOptionSetting: cab=13" +*cab 14/14: "%% FoomaticRIPOptionSetting: cab=14" +*cab 15/15: "%% FoomaticRIPOptionSetting: cab=15" +*cab 16/16: "%% FoomaticRIPOptionSetting: cab=16" +*cab 17/17: "%% FoomaticRIPOptionSetting: cab=17" +*cab 18/18: "%% FoomaticRIPOptionSetting: cab=18" +*cab 19/19: "%% FoomaticRIPOptionSetting: cab=19" +*cab 20/20: "%% FoomaticRIPOptionSetting: cab=20" +*cab 21/21: "%% FoomaticRIPOptionSetting: cab=21" +*cab 22/22: "%% FoomaticRIPOptionSetting: cab=22" +*cab 23/23: "%% FoomaticRIPOptionSetting: cab=23" +*cab 24/24: "%% FoomaticRIPOptionSetting: cab=24" +*cab 25/25: "%% FoomaticRIPOptionSetting: cab=25" +*cab 26/26: "%% FoomaticRIPOptionSetting: cab=26" +*cab 27/27: "%% FoomaticRIPOptionSetting: cab=27" +*cab 28/28: "%% FoomaticRIPOptionSetting: cab=28" +*cab 29/29: "%% FoomaticRIPOptionSetting: cab=29" +*cab 30/30: "%% FoomaticRIPOptionSetting: cab=30" +*cab 31/31: "%% FoomaticRIPOptionSetting: cab=31" +*cab 32/32: "%% FoomaticRIPOptionSetting: cab=32" +*cab 33/33: "%% FoomaticRIPOptionSetting: cab=33" +*cab 34/34: "%% FoomaticRIPOptionSetting: cab=34" +*cab 35/35: "%% FoomaticRIPOptionSetting: cab=35" +*cab 36/36: "%% FoomaticRIPOptionSetting: cab=36" +*cab 37/37: "%% FoomaticRIPOptionSetting: cab=37" +*cab 38/38: "%% FoomaticRIPOptionSetting: cab=38" +*cab 39/39: "%% FoomaticRIPOptionSetting: cab=39" +*cab 40/40: "%% FoomaticRIPOptionSetting: cab=40" +*cab 41/41: "%% FoomaticRIPOptionSetting: cab=41" +*cab 42/42: "%% FoomaticRIPOptionSetting: cab=42" +*cab 43/43: "%% FoomaticRIPOptionSetting: cab=43" +*cab 44/44: "%% FoomaticRIPOptionSetting: cab=44" +*cab 45/45: "%% FoomaticRIPOptionSetting: cab=45" +*cab 46/46: "%% FoomaticRIPOptionSetting: cab=46" +*cab 47/47: "%% FoomaticRIPOptionSetting: cab=47" +*cab 48/48: "%% FoomaticRIPOptionSetting: cab=48" +*cab 49/49: "%% FoomaticRIPOptionSetting: cab=49" +*cab 50/50: "%% FoomaticRIPOptionSetting: cab=50" +*cab 51/51: "%% FoomaticRIPOptionSetting: cab=51" +*cab 52/52: "%% FoomaticRIPOptionSetting: cab=52" +*cab 53/53: "%% FoomaticRIPOptionSetting: cab=53" +*cab 54/54: "%% FoomaticRIPOptionSetting: cab=54" +*cab 55/55: "%% FoomaticRIPOptionSetting: cab=55" +*cab 56/56: "%% FoomaticRIPOptionSetting: cab=56" +*cab 57/57: "%% FoomaticRIPOptionSetting: cab=57" +*cab 58/58: "%% FoomaticRIPOptionSetting: cab=58" +*cab 59/59: "%% FoomaticRIPOptionSetting: cab=59" +*cab 60/60: "%% FoomaticRIPOptionSetting: cab=60" +*cab 61/61: "%% FoomaticRIPOptionSetting: cab=61" +*cab 62/62: "%% FoomaticRIPOptionSetting: cab=62" +*cab 63/63: "%% FoomaticRIPOptionSetting: cab=63" +*cab 64/64: "%% FoomaticRIPOptionSetting: cab=64" +*cab 65/65: "%% FoomaticRIPOptionSetting: cab=65" +*cab 66/66: "%% FoomaticRIPOptionSetting: cab=66" +*cab 67/67: "%% FoomaticRIPOptionSetting: cab=67" +*cab 68/68: "%% FoomaticRIPOptionSetting: cab=68" +*cab 69/69: "%% FoomaticRIPOptionSetting: cab=69" +*cab 70/70: "%% FoomaticRIPOptionSetting: cab=70" +*cab 71/71: "%% FoomaticRIPOptionSetting: cab=71" +*cab 72/72: "%% FoomaticRIPOptionSetting: cab=72" +*cab 73/73: "%% FoomaticRIPOptionSetting: cab=73" +*cab 74/74: "%% FoomaticRIPOptionSetting: cab=74" +*cab 75/75: "%% FoomaticRIPOptionSetting: cab=75" +*cab 76/76: "%% FoomaticRIPOptionSetting: cab=76" +*cab 77/77: "%% FoomaticRIPOptionSetting: cab=77" +*cab 78/78: "%% FoomaticRIPOptionSetting: cab=78" +*cab 79/79: "%% FoomaticRIPOptionSetting: cab=79" +*cab 80/80: "%% FoomaticRIPOptionSetting: cab=80" +*cab 81/81: "%% FoomaticRIPOptionSetting: cab=81" +*cab 82/82: "%% FoomaticRIPOptionSetting: cab=82" +*cab 83/83: "%% FoomaticRIPOptionSetting: cab=83" +*cab 84/84: "%% FoomaticRIPOptionSetting: cab=84" +*cab 85/85: "%% FoomaticRIPOptionSetting: cab=85" +*cab 86/86: "%% FoomaticRIPOptionSetting: cab=86" +*cab 87/87: "%% FoomaticRIPOptionSetting: cab=87" +*cab 88/88: "%% FoomaticRIPOptionSetting: cab=88" +*cab 89/89: "%% FoomaticRIPOptionSetting: cab=89" +*cab 90/90: "%% FoomaticRIPOptionSetting: cab=90" +*cab 91/91: "%% FoomaticRIPOptionSetting: cab=91" +*cab 92/92: "%% FoomaticRIPOptionSetting: cab=92" +*cab 93/93: "%% FoomaticRIPOptionSetting: cab=93" +*cab 94/94: "%% FoomaticRIPOptionSetting: cab=94" +*cab 95/95: "%% FoomaticRIPOptionSetting: cab=95" +*cab 96/96: "%% FoomaticRIPOptionSetting: cab=96" +*cab 97/97: "%% FoomaticRIPOptionSetting: cab=97" +*cab 98/98: "%% FoomaticRIPOptionSetting: cab=98" +*cab 99/99: "%% FoomaticRIPOptionSetting: cab=99" +*cab 100/100: "%% FoomaticRIPOptionSetting: cab=100" +*CloseUI: *cab + +*OpenUI *cac/Mono or Color Adjust Contrast: PickOne +*FoomaticRIPOption cac: int CmdLine A +*FoomaticRIPOptionPrototype cac: "-ac=%s " +*FoomaticRIPOptionRange cac: 0 100 +*OrderDependency: 212 AnySetup *cac +*Defaultcac: 50 +*FoomaticRIPDefaultcac: 50 +*cac 0/0: "%% FoomaticRIPOptionSetting: cac=0" +*cac 1/1: "%% FoomaticRIPOptionSetting: cac=1" +*cac 2/2: "%% FoomaticRIPOptionSetting: cac=2" +*cac 3/3: "%% FoomaticRIPOptionSetting: cac=3" +*cac 4/4: "%% FoomaticRIPOptionSetting: cac=4" +*cac 5/5: "%% FoomaticRIPOptionSetting: cac=5" +*cac 6/6: "%% FoomaticRIPOptionSetting: cac=6" +*cac 7/7: "%% FoomaticRIPOptionSetting: cac=7" +*cac 8/8: "%% FoomaticRIPOptionSetting: cac=8" +*cac 9/9: "%% FoomaticRIPOptionSetting: cac=9" +*cac 10/10: "%% FoomaticRIPOptionSetting: cac=10" +*cac 11/11: "%% FoomaticRIPOptionSetting: cac=11" +*cac 12/12: "%% FoomaticRIPOptionSetting: cac=12" +*cac 13/13: "%% FoomaticRIPOptionSetting: cac=13" +*cac 14/14: "%% FoomaticRIPOptionSetting: cac=14" +*cac 15/15: "%% FoomaticRIPOptionSetting: cac=15" +*cac 16/16: "%% FoomaticRIPOptionSetting: cac=16" +*cac 17/17: "%% FoomaticRIPOptionSetting: cac=17" +*cac 18/18: "%% FoomaticRIPOptionSetting: cac=18" +*cac 19/19: "%% FoomaticRIPOptionSetting: cac=19" +*cac 20/20: "%% FoomaticRIPOptionSetting: cac=20" +*cac 21/21: "%% FoomaticRIPOptionSetting: cac=21" +*cac 22/22: "%% FoomaticRIPOptionSetting: cac=22" +*cac 23/23: "%% FoomaticRIPOptionSetting: cac=23" +*cac 24/24: "%% FoomaticRIPOptionSetting: cac=24" +*cac 25/25: "%% FoomaticRIPOptionSetting: cac=25" +*cac 26/26: "%% FoomaticRIPOptionSetting: cac=26" +*cac 27/27: "%% FoomaticRIPOptionSetting: cac=27" +*cac 28/28: "%% FoomaticRIPOptionSetting: cac=28" +*cac 29/29: "%% FoomaticRIPOptionSetting: cac=29" +*cac 30/30: "%% FoomaticRIPOptionSetting: cac=30" +*cac 31/31: "%% FoomaticRIPOptionSetting: cac=31" +*cac 32/32: "%% FoomaticRIPOptionSetting: cac=32" +*cac 33/33: "%% FoomaticRIPOptionSetting: cac=33" +*cac 34/34: "%% FoomaticRIPOptionSetting: cac=34" +*cac 35/35: "%% FoomaticRIPOptionSetting: cac=35" +*cac 36/36: "%% FoomaticRIPOptionSetting: cac=36" +*cac 37/37: "%% FoomaticRIPOptionSetting: cac=37" +*cac 38/38: "%% FoomaticRIPOptionSetting: cac=38" +*cac 39/39: "%% FoomaticRIPOptionSetting: cac=39" +*cac 40/40: "%% FoomaticRIPOptionSetting: cac=40" +*cac 41/41: "%% FoomaticRIPOptionSetting: cac=41" +*cac 42/42: "%% FoomaticRIPOptionSetting: cac=42" +*cac 43/43: "%% FoomaticRIPOptionSetting: cac=43" +*cac 44/44: "%% FoomaticRIPOptionSetting: cac=44" +*cac 45/45: "%% FoomaticRIPOptionSetting: cac=45" +*cac 46/46: "%% FoomaticRIPOptionSetting: cac=46" +*cac 47/47: "%% FoomaticRIPOptionSetting: cac=47" +*cac 48/48: "%% FoomaticRIPOptionSetting: cac=48" +*cac 49/49: "%% FoomaticRIPOptionSetting: cac=49" +*cac 50/50: "%% FoomaticRIPOptionSetting: cac=50" +*cac 51/51: "%% FoomaticRIPOptionSetting: cac=51" +*cac 52/52: "%% FoomaticRIPOptionSetting: cac=52" +*cac 53/53: "%% FoomaticRIPOptionSetting: cac=53" +*cac 54/54: "%% FoomaticRIPOptionSetting: cac=54" +*cac 55/55: "%% FoomaticRIPOptionSetting: cac=55" +*cac 56/56: "%% FoomaticRIPOptionSetting: cac=56" +*cac 57/57: "%% FoomaticRIPOptionSetting: cac=57" +*cac 58/58: "%% FoomaticRIPOptionSetting: cac=58" +*cac 59/59: "%% FoomaticRIPOptionSetting: cac=59" +*cac 60/60: "%% FoomaticRIPOptionSetting: cac=60" +*cac 61/61: "%% FoomaticRIPOptionSetting: cac=61" +*cac 62/62: "%% FoomaticRIPOptionSetting: cac=62" +*cac 63/63: "%% FoomaticRIPOptionSetting: cac=63" +*cac 64/64: "%% FoomaticRIPOptionSetting: cac=64" +*cac 65/65: "%% FoomaticRIPOptionSetting: cac=65" +*cac 66/66: "%% FoomaticRIPOptionSetting: cac=66" +*cac 67/67: "%% FoomaticRIPOptionSetting: cac=67" +*cac 68/68: "%% FoomaticRIPOptionSetting: cac=68" +*cac 69/69: "%% FoomaticRIPOptionSetting: cac=69" +*cac 70/70: "%% FoomaticRIPOptionSetting: cac=70" +*cac 71/71: "%% FoomaticRIPOptionSetting: cac=71" +*cac 72/72: "%% FoomaticRIPOptionSetting: cac=72" +*cac 73/73: "%% FoomaticRIPOptionSetting: cac=73" +*cac 74/74: "%% FoomaticRIPOptionSetting: cac=74" +*cac 75/75: "%% FoomaticRIPOptionSetting: cac=75" +*cac 76/76: "%% FoomaticRIPOptionSetting: cac=76" +*cac 77/77: "%% FoomaticRIPOptionSetting: cac=77" +*cac 78/78: "%% FoomaticRIPOptionSetting: cac=78" +*cac 79/79: "%% FoomaticRIPOptionSetting: cac=79" +*cac 80/80: "%% FoomaticRIPOptionSetting: cac=80" +*cac 81/81: "%% FoomaticRIPOptionSetting: cac=81" +*cac 82/82: "%% FoomaticRIPOptionSetting: cac=82" +*cac 83/83: "%% FoomaticRIPOptionSetting: cac=83" +*cac 84/84: "%% FoomaticRIPOptionSetting: cac=84" +*cac 85/85: "%% FoomaticRIPOptionSetting: cac=85" +*cac 86/86: "%% FoomaticRIPOptionSetting: cac=86" +*cac 87/87: "%% FoomaticRIPOptionSetting: cac=87" +*cac 88/88: "%% FoomaticRIPOptionSetting: cac=88" +*cac 89/89: "%% FoomaticRIPOptionSetting: cac=89" +*cac 90/90: "%% FoomaticRIPOptionSetting: cac=90" +*cac 91/91: "%% FoomaticRIPOptionSetting: cac=91" +*cac 92/92: "%% FoomaticRIPOptionSetting: cac=92" +*cac 93/93: "%% FoomaticRIPOptionSetting: cac=93" +*cac 94/94: "%% FoomaticRIPOptionSetting: cac=94" +*cac 95/95: "%% FoomaticRIPOptionSetting: cac=95" +*cac 96/96: "%% FoomaticRIPOptionSetting: cac=96" +*cac 97/97: "%% FoomaticRIPOptionSetting: cac=97" +*cac 98/98: "%% FoomaticRIPOptionSetting: cac=98" +*cac 99/99: "%% FoomaticRIPOptionSetting: cac=99" +*cac 100/100: "%% FoomaticRIPOptionSetting: cac=100" +*CloseUI: *cac + +*OpenUI *cas/Color Adjust Saturation: PickOne +*FoomaticRIPOption cas: int CmdLine A +*FoomaticRIPOptionPrototype cas: "-as=%s " +*FoomaticRIPOptionRange cas: 0 100 +*OrderDependency: 213 AnySetup *cas +*Defaultcas: 50 +*FoomaticRIPDefaultcas: 50 +*cas 0/0: "%% FoomaticRIPOptionSetting: cas=0" +*cas 1/1: "%% FoomaticRIPOptionSetting: cas=1" +*cas 2/2: "%% FoomaticRIPOptionSetting: cas=2" +*cas 3/3: "%% FoomaticRIPOptionSetting: cas=3" +*cas 4/4: "%% FoomaticRIPOptionSetting: cas=4" +*cas 5/5: "%% FoomaticRIPOptionSetting: cas=5" +*cas 6/6: "%% FoomaticRIPOptionSetting: cas=6" +*cas 7/7: "%% FoomaticRIPOptionSetting: cas=7" +*cas 8/8: "%% FoomaticRIPOptionSetting: cas=8" +*cas 9/9: "%% FoomaticRIPOptionSetting: cas=9" +*cas 10/10: "%% FoomaticRIPOptionSetting: cas=10" +*cas 11/11: "%% FoomaticRIPOptionSetting: cas=11" +*cas 12/12: "%% FoomaticRIPOptionSetting: cas=12" +*cas 13/13: "%% FoomaticRIPOptionSetting: cas=13" +*cas 14/14: "%% FoomaticRIPOptionSetting: cas=14" +*cas 15/15: "%% FoomaticRIPOptionSetting: cas=15" +*cas 16/16: "%% FoomaticRIPOptionSetting: cas=16" +*cas 17/17: "%% FoomaticRIPOptionSetting: cas=17" +*cas 18/18: "%% FoomaticRIPOptionSetting: cas=18" +*cas 19/19: "%% FoomaticRIPOptionSetting: cas=19" +*cas 20/20: "%% FoomaticRIPOptionSetting: cas=20" +*cas 21/21: "%% FoomaticRIPOptionSetting: cas=21" +*cas 22/22: "%% FoomaticRIPOptionSetting: cas=22" +*cas 23/23: "%% FoomaticRIPOptionSetting: cas=23" +*cas 24/24: "%% FoomaticRIPOptionSetting: cas=24" +*cas 25/25: "%% FoomaticRIPOptionSetting: cas=25" +*cas 26/26: "%% FoomaticRIPOptionSetting: cas=26" +*cas 27/27: "%% FoomaticRIPOptionSetting: cas=27" +*cas 28/28: "%% FoomaticRIPOptionSetting: cas=28" +*cas 29/29: "%% FoomaticRIPOptionSetting: cas=29" +*cas 30/30: "%% FoomaticRIPOptionSetting: cas=30" +*cas 31/31: "%% FoomaticRIPOptionSetting: cas=31" +*cas 32/32: "%% FoomaticRIPOptionSetting: cas=32" +*cas 33/33: "%% FoomaticRIPOptionSetting: cas=33" +*cas 34/34: "%% FoomaticRIPOptionSetting: cas=34" +*cas 35/35: "%% FoomaticRIPOptionSetting: cas=35" +*cas 36/36: "%% FoomaticRIPOptionSetting: cas=36" +*cas 37/37: "%% FoomaticRIPOptionSetting: cas=37" +*cas 38/38: "%% FoomaticRIPOptionSetting: cas=38" +*cas 39/39: "%% FoomaticRIPOptionSetting: cas=39" +*cas 40/40: "%% FoomaticRIPOptionSetting: cas=40" +*cas 41/41: "%% FoomaticRIPOptionSetting: cas=41" +*cas 42/42: "%% FoomaticRIPOptionSetting: cas=42" +*cas 43/43: "%% FoomaticRIPOptionSetting: cas=43" +*cas 44/44: "%% FoomaticRIPOptionSetting: cas=44" +*cas 45/45: "%% FoomaticRIPOptionSetting: cas=45" +*cas 46/46: "%% FoomaticRIPOptionSetting: cas=46" +*cas 47/47: "%% FoomaticRIPOptionSetting: cas=47" +*cas 48/48: "%% FoomaticRIPOptionSetting: cas=48" +*cas 49/49: "%% FoomaticRIPOptionSetting: cas=49" +*cas 50/50: "%% FoomaticRIPOptionSetting: cas=50" +*cas 51/51: "%% FoomaticRIPOptionSetting: cas=51" +*cas 52/52: "%% FoomaticRIPOptionSetting: cas=52" +*cas 53/53: "%% FoomaticRIPOptionSetting: cas=53" +*cas 54/54: "%% FoomaticRIPOptionSetting: cas=54" +*cas 55/55: "%% FoomaticRIPOptionSetting: cas=55" +*cas 56/56: "%% FoomaticRIPOptionSetting: cas=56" +*cas 57/57: "%% FoomaticRIPOptionSetting: cas=57" +*cas 58/58: "%% FoomaticRIPOptionSetting: cas=58" +*cas 59/59: "%% FoomaticRIPOptionSetting: cas=59" +*cas 60/60: "%% FoomaticRIPOptionSetting: cas=60" +*cas 61/61: "%% FoomaticRIPOptionSetting: cas=61" +*cas 62/62: "%% FoomaticRIPOptionSetting: cas=62" +*cas 63/63: "%% FoomaticRIPOptionSetting: cas=63" +*cas 64/64: "%% FoomaticRIPOptionSetting: cas=64" +*cas 65/65: "%% FoomaticRIPOptionSetting: cas=65" +*cas 66/66: "%% FoomaticRIPOptionSetting: cas=66" +*cas 67/67: "%% FoomaticRIPOptionSetting: cas=67" +*cas 68/68: "%% FoomaticRIPOptionSetting: cas=68" +*cas 69/69: "%% FoomaticRIPOptionSetting: cas=69" +*cas 70/70: "%% FoomaticRIPOptionSetting: cas=70" +*cas 71/71: "%% FoomaticRIPOptionSetting: cas=71" +*cas 72/72: "%% FoomaticRIPOptionSetting: cas=72" +*cas 73/73: "%% FoomaticRIPOptionSetting: cas=73" +*cas 74/74: "%% FoomaticRIPOptionSetting: cas=74" +*cas 75/75: "%% FoomaticRIPOptionSetting: cas=75" +*cas 76/76: "%% FoomaticRIPOptionSetting: cas=76" +*cas 77/77: "%% FoomaticRIPOptionSetting: cas=77" +*cas 78/78: "%% FoomaticRIPOptionSetting: cas=78" +*cas 79/79: "%% FoomaticRIPOptionSetting: cas=79" +*cas 80/80: "%% FoomaticRIPOptionSetting: cas=80" +*cas 81/81: "%% FoomaticRIPOptionSetting: cas=81" +*cas 82/82: "%% FoomaticRIPOptionSetting: cas=82" +*cas 83/83: "%% FoomaticRIPOptionSetting: cas=83" +*cas 84/84: "%% FoomaticRIPOptionSetting: cas=84" +*cas 85/85: "%% FoomaticRIPOptionSetting: cas=85" +*cas 86/86: "%% FoomaticRIPOptionSetting: cas=86" +*cas 87/87: "%% FoomaticRIPOptionSetting: cas=87" +*cas 88/88: "%% FoomaticRIPOptionSetting: cas=88" +*cas 89/89: "%% FoomaticRIPOptionSetting: cas=89" +*cas 90/90: "%% FoomaticRIPOptionSetting: cas=90" +*cas 91/91: "%% FoomaticRIPOptionSetting: cas=91" +*cas 92/92: "%% FoomaticRIPOptionSetting: cas=92" +*cas 93/93: "%% FoomaticRIPOptionSetting: cas=93" +*cas 94/94: "%% FoomaticRIPOptionSetting: cas=94" +*cas 95/95: "%% FoomaticRIPOptionSetting: cas=95" +*cas 96/96: "%% FoomaticRIPOptionSetting: cas=96" +*cas 97/97: "%% FoomaticRIPOptionSetting: cas=97" +*cas 98/98: "%% FoomaticRIPOptionSetting: cas=98" +*cas 99/99: "%% FoomaticRIPOptionSetting: cas=99" +*cas 100/100: "%% FoomaticRIPOptionSetting: cas=100" +*CloseUI: *cas + +*OpenUI *cacr/Color Adjust Cyan-Red: PickOne +*FoomaticRIPOption cacr: int CmdLine A +*FoomaticRIPOptionPrototype cacr: "-acr=%s " +*FoomaticRIPOptionRange cacr: 0 100 +*OrderDependency: 220 AnySetup *cacr +*Defaultcacr: 50 +*FoomaticRIPDefaultcacr: 50 +*cacr 0/0: "%% FoomaticRIPOptionSetting: cacr=0" +*cacr 1/1: "%% FoomaticRIPOptionSetting: cacr=1" +*cacr 2/2: "%% FoomaticRIPOptionSetting: cacr=2" +*cacr 3/3: "%% FoomaticRIPOptionSetting: cacr=3" +*cacr 4/4: "%% FoomaticRIPOptionSetting: cacr=4" +*cacr 5/5: "%% FoomaticRIPOptionSetting: cacr=5" +*cacr 6/6: "%% FoomaticRIPOptionSetting: cacr=6" +*cacr 7/7: "%% FoomaticRIPOptionSetting: cacr=7" +*cacr 8/8: "%% FoomaticRIPOptionSetting: cacr=8" +*cacr 9/9: "%% FoomaticRIPOptionSetting: cacr=9" +*cacr 10/10: "%% FoomaticRIPOptionSetting: cacr=10" +*cacr 11/11: "%% FoomaticRIPOptionSetting: cacr=11" +*cacr 12/12: "%% FoomaticRIPOptionSetting: cacr=12" +*cacr 13/13: "%% FoomaticRIPOptionSetting: cacr=13" +*cacr 14/14: "%% FoomaticRIPOptionSetting: cacr=14" +*cacr 15/15: "%% FoomaticRIPOptionSetting: cacr=15" +*cacr 16/16: "%% FoomaticRIPOptionSetting: cacr=16" +*cacr 17/17: "%% FoomaticRIPOptionSetting: cacr=17" +*cacr 18/18: "%% FoomaticRIPOptionSetting: cacr=18" +*cacr 19/19: "%% FoomaticRIPOptionSetting: cacr=19" +*cacr 20/20: "%% FoomaticRIPOptionSetting: cacr=20" +*cacr 21/21: "%% FoomaticRIPOptionSetting: cacr=21" +*cacr 22/22: "%% FoomaticRIPOptionSetting: cacr=22" +*cacr 23/23: "%% FoomaticRIPOptionSetting: cacr=23" +*cacr 24/24: "%% FoomaticRIPOptionSetting: cacr=24" +*cacr 25/25: "%% FoomaticRIPOptionSetting: cacr=25" +*cacr 26/26: "%% FoomaticRIPOptionSetting: cacr=26" +*cacr 27/27: "%% FoomaticRIPOptionSetting: cacr=27" +*cacr 28/28: "%% FoomaticRIPOptionSetting: cacr=28" +*cacr 29/29: "%% FoomaticRIPOptionSetting: cacr=29" +*cacr 30/30: "%% FoomaticRIPOptionSetting: cacr=30" +*cacr 31/31: "%% FoomaticRIPOptionSetting: cacr=31" +*cacr 32/32: "%% FoomaticRIPOptionSetting: cacr=32" +*cacr 33/33: "%% FoomaticRIPOptionSetting: cacr=33" +*cacr 34/34: "%% FoomaticRIPOptionSetting: cacr=34" +*cacr 35/35: "%% FoomaticRIPOptionSetting: cacr=35" +*cacr 36/36: "%% FoomaticRIPOptionSetting: cacr=36" +*cacr 37/37: "%% FoomaticRIPOptionSetting: cacr=37" +*cacr 38/38: "%% FoomaticRIPOptionSetting: cacr=38" +*cacr 39/39: "%% FoomaticRIPOptionSetting: cacr=39" +*cacr 40/40: "%% FoomaticRIPOptionSetting: cacr=40" +*cacr 41/41: "%% FoomaticRIPOptionSetting: cacr=41" +*cacr 42/42: "%% FoomaticRIPOptionSetting: cacr=42" +*cacr 43/43: "%% FoomaticRIPOptionSetting: cacr=43" +*cacr 44/44: "%% FoomaticRIPOptionSetting: cacr=44" +*cacr 45/45: "%% FoomaticRIPOptionSetting: cacr=45" +*cacr 46/46: "%% FoomaticRIPOptionSetting: cacr=46" +*cacr 47/47: "%% FoomaticRIPOptionSetting: cacr=47" +*cacr 48/48: "%% FoomaticRIPOptionSetting: cacr=48" +*cacr 49/49: "%% FoomaticRIPOptionSetting: cacr=49" +*cacr 50/50: "%% FoomaticRIPOptionSetting: cacr=50" +*cacr 51/51: "%% FoomaticRIPOptionSetting: cacr=51" +*cacr 52/52: "%% FoomaticRIPOptionSetting: cacr=52" +*cacr 53/53: "%% FoomaticRIPOptionSetting: cacr=53" +*cacr 54/54: "%% FoomaticRIPOptionSetting: cacr=54" +*cacr 55/55: "%% FoomaticRIPOptionSetting: cacr=55" +*cacr 56/56: "%% FoomaticRIPOptionSetting: cacr=56" +*cacr 57/57: "%% FoomaticRIPOptionSetting: cacr=57" +*cacr 58/58: "%% FoomaticRIPOptionSetting: cacr=58" +*cacr 59/59: "%% FoomaticRIPOptionSetting: cacr=59" +*cacr 60/60: "%% FoomaticRIPOptionSetting: cacr=60" +*cacr 61/61: "%% FoomaticRIPOptionSetting: cacr=61" +*cacr 62/62: "%% FoomaticRIPOptionSetting: cacr=62" +*cacr 63/63: "%% FoomaticRIPOptionSetting: cacr=63" +*cacr 64/64: "%% FoomaticRIPOptionSetting: cacr=64" +*cacr 65/65: "%% FoomaticRIPOptionSetting: cacr=65" +*cacr 66/66: "%% FoomaticRIPOptionSetting: cacr=66" +*cacr 67/67: "%% FoomaticRIPOptionSetting: cacr=67" +*cacr 68/68: "%% FoomaticRIPOptionSetting: cacr=68" +*cacr 69/69: "%% FoomaticRIPOptionSetting: cacr=69" +*cacr 70/70: "%% FoomaticRIPOptionSetting: cacr=70" +*cacr 71/71: "%% FoomaticRIPOptionSetting: cacr=71" +*cacr 72/72: "%% FoomaticRIPOptionSetting: cacr=72" +*cacr 73/73: "%% FoomaticRIPOptionSetting: cacr=73" +*cacr 74/74: "%% FoomaticRIPOptionSetting: cacr=74" +*cacr 75/75: "%% FoomaticRIPOptionSetting: cacr=75" +*cacr 76/76: "%% FoomaticRIPOptionSetting: cacr=76" +*cacr 77/77: "%% FoomaticRIPOptionSetting: cacr=77" +*cacr 78/78: "%% FoomaticRIPOptionSetting: cacr=78" +*cacr 79/79: "%% FoomaticRIPOptionSetting: cacr=79" +*cacr 80/80: "%% FoomaticRIPOptionSetting: cacr=80" +*cacr 81/81: "%% FoomaticRIPOptionSetting: cacr=81" +*cacr 82/82: "%% FoomaticRIPOptionSetting: cacr=82" +*cacr 83/83: "%% FoomaticRIPOptionSetting: cacr=83" +*cacr 84/84: "%% FoomaticRIPOptionSetting: cacr=84" +*cacr 85/85: "%% FoomaticRIPOptionSetting: cacr=85" +*cacr 86/86: "%% FoomaticRIPOptionSetting: cacr=86" +*cacr 87/87: "%% FoomaticRIPOptionSetting: cacr=87" +*cacr 88/88: "%% FoomaticRIPOptionSetting: cacr=88" +*cacr 89/89: "%% FoomaticRIPOptionSetting: cacr=89" +*cacr 90/90: "%% FoomaticRIPOptionSetting: cacr=90" +*cacr 91/91: "%% FoomaticRIPOptionSetting: cacr=91" +*cacr 92/92: "%% FoomaticRIPOptionSetting: cacr=92" +*cacr 93/93: "%% FoomaticRIPOptionSetting: cacr=93" +*cacr 94/94: "%% FoomaticRIPOptionSetting: cacr=94" +*cacr 95/95: "%% FoomaticRIPOptionSetting: cacr=95" +*cacr 96/96: "%% FoomaticRIPOptionSetting: cacr=96" +*cacr 97/97: "%% FoomaticRIPOptionSetting: cacr=97" +*cacr 98/98: "%% FoomaticRIPOptionSetting: cacr=98" +*cacr 99/99: "%% FoomaticRIPOptionSetting: cacr=99" +*cacr 100/100: "%% FoomaticRIPOptionSetting: cacr=100" +*CloseUI: *cacr + +*OpenUI *camg/Color Adjust Magenta-Green: PickOne +*FoomaticRIPOption camg: int CmdLine A +*FoomaticRIPOptionPrototype camg: "-amg=%s " +*FoomaticRIPOptionRange camg: 0 100 +*OrderDependency: 220 AnySetup *camg +*Defaultcamg: 50 +*FoomaticRIPDefaultcamg: 50 +*camg 0/0: "%% FoomaticRIPOptionSetting: camg=0" +*camg 1/1: "%% FoomaticRIPOptionSetting: camg=1" +*camg 2/2: "%% FoomaticRIPOptionSetting: camg=2" +*camg 3/3: "%% FoomaticRIPOptionSetting: camg=3" +*camg 4/4: "%% FoomaticRIPOptionSetting: camg=4" +*camg 5/5: "%% FoomaticRIPOptionSetting: camg=5" +*camg 6/6: "%% FoomaticRIPOptionSetting: camg=6" +*camg 7/7: "%% FoomaticRIPOptionSetting: camg=7" +*camg 8/8: "%% FoomaticRIPOptionSetting: camg=8" +*camg 9/9: "%% FoomaticRIPOptionSetting: camg=9" +*camg 10/10: "%% FoomaticRIPOptionSetting: camg=10" +*camg 11/11: "%% FoomaticRIPOptionSetting: camg=11" +*camg 12/12: "%% FoomaticRIPOptionSetting: camg=12" +*camg 13/13: "%% FoomaticRIPOptionSetting: camg=13" +*camg 14/14: "%% FoomaticRIPOptionSetting: camg=14" +*camg 15/15: "%% FoomaticRIPOptionSetting: camg=15" +*camg 16/16: "%% FoomaticRIPOptionSetting: camg=16" +*camg 17/17: "%% FoomaticRIPOptionSetting: camg=17" +*camg 18/18: "%% FoomaticRIPOptionSetting: camg=18" +*camg 19/19: "%% FoomaticRIPOptionSetting: camg=19" +*camg 20/20: "%% FoomaticRIPOptionSetting: camg=20" +*camg 21/21: "%% FoomaticRIPOptionSetting: camg=21" +*camg 22/22: "%% FoomaticRIPOptionSetting: camg=22" +*camg 23/23: "%% FoomaticRIPOptionSetting: camg=23" +*camg 24/24: "%% FoomaticRIPOptionSetting: camg=24" +*camg 25/25: "%% FoomaticRIPOptionSetting: camg=25" +*camg 26/26: "%% FoomaticRIPOptionSetting: camg=26" +*camg 27/27: "%% FoomaticRIPOptionSetting: camg=27" +*camg 28/28: "%% FoomaticRIPOptionSetting: camg=28" +*camg 29/29: "%% FoomaticRIPOptionSetting: camg=29" +*camg 30/30: "%% FoomaticRIPOptionSetting: camg=30" +*camg 31/31: "%% FoomaticRIPOptionSetting: camg=31" +*camg 32/32: "%% FoomaticRIPOptionSetting: camg=32" +*camg 33/33: "%% FoomaticRIPOptionSetting: camg=33" +*camg 34/34: "%% FoomaticRIPOptionSetting: camg=34" +*camg 35/35: "%% FoomaticRIPOptionSetting: camg=35" +*camg 36/36: "%% FoomaticRIPOptionSetting: camg=36" +*camg 37/37: "%% FoomaticRIPOptionSetting: camg=37" +*camg 38/38: "%% FoomaticRIPOptionSetting: camg=38" +*camg 39/39: "%% FoomaticRIPOptionSetting: camg=39" +*camg 40/40: "%% FoomaticRIPOptionSetting: camg=40" +*camg 41/41: "%% FoomaticRIPOptionSetting: camg=41" +*camg 42/42: "%% FoomaticRIPOptionSetting: camg=42" +*camg 43/43: "%% FoomaticRIPOptionSetting: camg=43" +*camg 44/44: "%% FoomaticRIPOptionSetting: camg=44" +*camg 45/45: "%% FoomaticRIPOptionSetting: camg=45" +*camg 46/46: "%% FoomaticRIPOptionSetting: camg=46" +*camg 47/47: "%% FoomaticRIPOptionSetting: camg=47" +*camg 48/48: "%% FoomaticRIPOptionSetting: camg=48" +*camg 49/49: "%% FoomaticRIPOptionSetting: camg=49" +*camg 50/50: "%% FoomaticRIPOptionSetting: camg=50" +*camg 51/51: "%% FoomaticRIPOptionSetting: camg=51" +*camg 52/52: "%% FoomaticRIPOptionSetting: camg=52" +*camg 53/53: "%% FoomaticRIPOptionSetting: camg=53" +*camg 54/54: "%% FoomaticRIPOptionSetting: camg=54" +*camg 55/55: "%% FoomaticRIPOptionSetting: camg=55" +*camg 56/56: "%% FoomaticRIPOptionSetting: camg=56" +*camg 57/57: "%% FoomaticRIPOptionSetting: camg=57" +*camg 58/58: "%% FoomaticRIPOptionSetting: camg=58" +*camg 59/59: "%% FoomaticRIPOptionSetting: camg=59" +*camg 60/60: "%% FoomaticRIPOptionSetting: camg=60" +*camg 61/61: "%% FoomaticRIPOptionSetting: camg=61" +*camg 62/62: "%% FoomaticRIPOptionSetting: camg=62" +*camg 63/63: "%% FoomaticRIPOptionSetting: camg=63" +*camg 64/64: "%% FoomaticRIPOptionSetting: camg=64" +*camg 65/65: "%% FoomaticRIPOptionSetting: camg=65" +*camg 66/66: "%% FoomaticRIPOptionSetting: camg=66" +*camg 67/67: "%% FoomaticRIPOptionSetting: camg=67" +*camg 68/68: "%% FoomaticRIPOptionSetting: camg=68" +*camg 69/69: "%% FoomaticRIPOptionSetting: camg=69" +*camg 70/70: "%% FoomaticRIPOptionSetting: camg=70" +*camg 71/71: "%% FoomaticRIPOptionSetting: camg=71" +*camg 72/72: "%% FoomaticRIPOptionSetting: camg=72" +*camg 73/73: "%% FoomaticRIPOptionSetting: camg=73" +*camg 74/74: "%% FoomaticRIPOptionSetting: camg=74" +*camg 75/75: "%% FoomaticRIPOptionSetting: camg=75" +*camg 76/76: "%% FoomaticRIPOptionSetting: camg=76" +*camg 77/77: "%% FoomaticRIPOptionSetting: camg=77" +*camg 78/78: "%% FoomaticRIPOptionSetting: camg=78" +*camg 79/79: "%% FoomaticRIPOptionSetting: camg=79" +*camg 80/80: "%% FoomaticRIPOptionSetting: camg=80" +*camg 81/81: "%% FoomaticRIPOptionSetting: camg=81" +*camg 82/82: "%% FoomaticRIPOptionSetting: camg=82" +*camg 83/83: "%% FoomaticRIPOptionSetting: camg=83" +*camg 84/84: "%% FoomaticRIPOptionSetting: camg=84" +*camg 85/85: "%% FoomaticRIPOptionSetting: camg=85" +*camg 86/86: "%% FoomaticRIPOptionSetting: camg=86" +*camg 87/87: "%% FoomaticRIPOptionSetting: camg=87" +*camg 88/88: "%% FoomaticRIPOptionSetting: camg=88" +*camg 89/89: "%% FoomaticRIPOptionSetting: camg=89" +*camg 90/90: "%% FoomaticRIPOptionSetting: camg=90" +*camg 91/91: "%% FoomaticRIPOptionSetting: camg=91" +*camg 92/92: "%% FoomaticRIPOptionSetting: camg=92" +*camg 93/93: "%% FoomaticRIPOptionSetting: camg=93" +*camg 94/94: "%% FoomaticRIPOptionSetting: camg=94" +*camg 95/95: "%% FoomaticRIPOptionSetting: camg=95" +*camg 96/96: "%% FoomaticRIPOptionSetting: camg=96" +*camg 97/97: "%% FoomaticRIPOptionSetting: camg=97" +*camg 98/98: "%% FoomaticRIPOptionSetting: camg=98" +*camg 99/99: "%% FoomaticRIPOptionSetting: camg=99" +*camg 100/100: "%% FoomaticRIPOptionSetting: camg=100" +*CloseUI: *camg + +*OpenUI *cayb/Color Adjust Yellow-Blue: PickOne +*FoomaticRIPOption cayb: int CmdLine A +*FoomaticRIPOptionPrototype cayb: "-ayb=%s " +*FoomaticRIPOptionRange cayb: 0 100 +*OrderDependency: 220 AnySetup *cayb +*Defaultcayb: 50 +*FoomaticRIPDefaultcayb: 50 +*cayb 0/0: "%% FoomaticRIPOptionSetting: cayb=0" +*cayb 1/1: "%% FoomaticRIPOptionSetting: cayb=1" +*cayb 2/2: "%% FoomaticRIPOptionSetting: cayb=2" +*cayb 3/3: "%% FoomaticRIPOptionSetting: cayb=3" +*cayb 4/4: "%% FoomaticRIPOptionSetting: cayb=4" +*cayb 5/5: "%% FoomaticRIPOptionSetting: cayb=5" +*cayb 6/6: "%% FoomaticRIPOptionSetting: cayb=6" +*cayb 7/7: "%% FoomaticRIPOptionSetting: cayb=7" +*cayb 8/8: "%% FoomaticRIPOptionSetting: cayb=8" +*cayb 9/9: "%% FoomaticRIPOptionSetting: cayb=9" +*cayb 10/10: "%% FoomaticRIPOptionSetting: cayb=10" +*cayb 11/11: "%% FoomaticRIPOptionSetting: cayb=11" +*cayb 12/12: "%% FoomaticRIPOptionSetting: cayb=12" +*cayb 13/13: "%% FoomaticRIPOptionSetting: cayb=13" +*cayb 14/14: "%% FoomaticRIPOptionSetting: cayb=14" +*cayb 15/15: "%% FoomaticRIPOptionSetting: cayb=15" +*cayb 16/16: "%% FoomaticRIPOptionSetting: cayb=16" +*cayb 17/17: "%% FoomaticRIPOptionSetting: cayb=17" +*cayb 18/18: "%% FoomaticRIPOptionSetting: cayb=18" +*cayb 19/19: "%% FoomaticRIPOptionSetting: cayb=19" +*cayb 20/20: "%% FoomaticRIPOptionSetting: cayb=20" +*cayb 21/21: "%% FoomaticRIPOptionSetting: cayb=21" +*cayb 22/22: "%% FoomaticRIPOptionSetting: cayb=22" +*cayb 23/23: "%% FoomaticRIPOptionSetting: cayb=23" +*cayb 24/24: "%% FoomaticRIPOptionSetting: cayb=24" +*cayb 25/25: "%% FoomaticRIPOptionSetting: cayb=25" +*cayb 26/26: "%% FoomaticRIPOptionSetting: cayb=26" +*cayb 27/27: "%% FoomaticRIPOptionSetting: cayb=27" +*cayb 28/28: "%% FoomaticRIPOptionSetting: cayb=28" +*cayb 29/29: "%% FoomaticRIPOptionSetting: cayb=29" +*cayb 30/30: "%% FoomaticRIPOptionSetting: cayb=30" +*cayb 31/31: "%% FoomaticRIPOptionSetting: cayb=31" +*cayb 32/32: "%% FoomaticRIPOptionSetting: cayb=32" +*cayb 33/33: "%% FoomaticRIPOptionSetting: cayb=33" +*cayb 34/34: "%% FoomaticRIPOptionSetting: cayb=34" +*cayb 35/35: "%% FoomaticRIPOptionSetting: cayb=35" +*cayb 36/36: "%% FoomaticRIPOptionSetting: cayb=36" +*cayb 37/37: "%% FoomaticRIPOptionSetting: cayb=37" +*cayb 38/38: "%% FoomaticRIPOptionSetting: cayb=38" +*cayb 39/39: "%% FoomaticRIPOptionSetting: cayb=39" +*cayb 40/40: "%% FoomaticRIPOptionSetting: cayb=40" +*cayb 41/41: "%% FoomaticRIPOptionSetting: cayb=41" +*cayb 42/42: "%% FoomaticRIPOptionSetting: cayb=42" +*cayb 43/43: "%% FoomaticRIPOptionSetting: cayb=43" +*cayb 44/44: "%% FoomaticRIPOptionSetting: cayb=44" +*cayb 45/45: "%% FoomaticRIPOptionSetting: cayb=45" +*cayb 46/46: "%% FoomaticRIPOptionSetting: cayb=46" +*cayb 47/47: "%% FoomaticRIPOptionSetting: cayb=47" +*cayb 48/48: "%% FoomaticRIPOptionSetting: cayb=48" +*cayb 49/49: "%% FoomaticRIPOptionSetting: cayb=49" +*cayb 50/50: "%% FoomaticRIPOptionSetting: cayb=50" +*cayb 51/51: "%% FoomaticRIPOptionSetting: cayb=51" +*cayb 52/52: "%% FoomaticRIPOptionSetting: cayb=52" +*cayb 53/53: "%% FoomaticRIPOptionSetting: cayb=53" +*cayb 54/54: "%% FoomaticRIPOptionSetting: cayb=54" +*cayb 55/55: "%% FoomaticRIPOptionSetting: cayb=55" +*cayb 56/56: "%% FoomaticRIPOptionSetting: cayb=56" +*cayb 57/57: "%% FoomaticRIPOptionSetting: cayb=57" +*cayb 58/58: "%% FoomaticRIPOptionSetting: cayb=58" +*cayb 59/59: "%% FoomaticRIPOptionSetting: cayb=59" +*cayb 60/60: "%% FoomaticRIPOptionSetting: cayb=60" +*cayb 61/61: "%% FoomaticRIPOptionSetting: cayb=61" +*cayb 62/62: "%% FoomaticRIPOptionSetting: cayb=62" +*cayb 63/63: "%% FoomaticRIPOptionSetting: cayb=63" +*cayb 64/64: "%% FoomaticRIPOptionSetting: cayb=64" +*cayb 65/65: "%% FoomaticRIPOptionSetting: cayb=65" +*cayb 66/66: "%% FoomaticRIPOptionSetting: cayb=66" +*cayb 67/67: "%% FoomaticRIPOptionSetting: cayb=67" +*cayb 68/68: "%% FoomaticRIPOptionSetting: cayb=68" +*cayb 69/69: "%% FoomaticRIPOptionSetting: cayb=69" +*cayb 70/70: "%% FoomaticRIPOptionSetting: cayb=70" +*cayb 71/71: "%% FoomaticRIPOptionSetting: cayb=71" +*cayb 72/72: "%% FoomaticRIPOptionSetting: cayb=72" +*cayb 73/73: "%% FoomaticRIPOptionSetting: cayb=73" +*cayb 74/74: "%% FoomaticRIPOptionSetting: cayb=74" +*cayb 75/75: "%% FoomaticRIPOptionSetting: cayb=75" +*cayb 76/76: "%% FoomaticRIPOptionSetting: cayb=76" +*cayb 77/77: "%% FoomaticRIPOptionSetting: cayb=77" +*cayb 78/78: "%% FoomaticRIPOptionSetting: cayb=78" +*cayb 79/79: "%% FoomaticRIPOptionSetting: cayb=79" +*cayb 80/80: "%% FoomaticRIPOptionSetting: cayb=80" +*cayb 81/81: "%% FoomaticRIPOptionSetting: cayb=81" +*cayb 82/82: "%% FoomaticRIPOptionSetting: cayb=82" +*cayb 83/83: "%% FoomaticRIPOptionSetting: cayb=83" +*cayb 84/84: "%% FoomaticRIPOptionSetting: cayb=84" +*cayb 85/85: "%% FoomaticRIPOptionSetting: cayb=85" +*cayb 86/86: "%% FoomaticRIPOptionSetting: cayb=86" +*cayb 87/87: "%% FoomaticRIPOptionSetting: cayb=87" +*cayb 88/88: "%% FoomaticRIPOptionSetting: cayb=88" +*cayb 89/89: "%% FoomaticRIPOptionSetting: cayb=89" +*cayb 90/90: "%% FoomaticRIPOptionSetting: cayb=90" +*cayb 91/91: "%% FoomaticRIPOptionSetting: cayb=91" +*cayb 92/92: "%% FoomaticRIPOptionSetting: cayb=92" +*cayb 93/93: "%% FoomaticRIPOptionSetting: cayb=93" +*cayb 94/94: "%% FoomaticRIPOptionSetting: cayb=94" +*cayb 95/95: "%% FoomaticRIPOptionSetting: cayb=95" +*cayb 96/96: "%% FoomaticRIPOptionSetting: cayb=96" +*cayb 97/97: "%% FoomaticRIPOptionSetting: cayb=97" +*cayb 98/98: "%% FoomaticRIPOptionSetting: cayb=98" +*cayb 99/99: "%% FoomaticRIPOptionSetting: cayb=99" +*cayb 100/100: "%% FoomaticRIPOptionSetting: cayb=100" +*CloseUI: *cayb + +*CloseGroup: Color Adjust + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp365 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-600.ppd b/PPD/Samsung-CLP-600.ppd new file mode 100644 index 0000000..5d627f7 --- /dev/null +++ b/PPD/Samsung-CLP-600.ppd @@ -0,0 +1,521 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-600-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-600)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-600" +*ShortNickName: "Samsung CLP-600 foo2qpdl" +*NickName: "Samsung CLP-600 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-600 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z1: "-z1 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp600 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-610.ppd b/PPD/Samsung-CLP-610.ppd new file mode 100644 index 0000000..ea604d6 --- /dev/null +++ b/PPD/Samsung-CLP-610.ppd @@ -0,0 +1,521 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-610-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-610)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-610" +*ShortNickName: "Samsung CLP-610 foo2qpdl" +*NickName: "Samsung CLP-610 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-610 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp610 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLP-620.ppd b/PPD/Samsung-CLP-620.ppd new file mode 100644 index 0000000..78a9c0f --- /dev/null +++ b/PPD/Samsung-CLP-620.ppd @@ -0,0 +1,1185 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLP-620-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLP-620)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLP-620" +*ShortNickName: "Samsung CLP-620 foo2qpdl" +*NickName: "Samsung CLP-620 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLP-620 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z3: "-z3 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Color Adjust/Color Adjust + +*OpenUI *cab/Mono or Color Adjust Brightness: PickOne +*FoomaticRIPOption cab: int CmdLine A +*FoomaticRIPOptionPrototype cab: "-ab=%s " +*FoomaticRIPOptionRange cab: 0 100 +*OrderDependency: 211 AnySetup *cab +*Defaultcab: 50 +*FoomaticRIPDefaultcab: 50 +*cab 0/0: "%% FoomaticRIPOptionSetting: cab=0" +*cab 1/1: "%% FoomaticRIPOptionSetting: cab=1" +*cab 2/2: "%% FoomaticRIPOptionSetting: cab=2" +*cab 3/3: "%% FoomaticRIPOptionSetting: cab=3" +*cab 4/4: "%% FoomaticRIPOptionSetting: cab=4" +*cab 5/5: "%% FoomaticRIPOptionSetting: cab=5" +*cab 6/6: "%% FoomaticRIPOptionSetting: cab=6" +*cab 7/7: "%% FoomaticRIPOptionSetting: cab=7" +*cab 8/8: "%% FoomaticRIPOptionSetting: cab=8" +*cab 9/9: "%% FoomaticRIPOptionSetting: cab=9" +*cab 10/10: "%% FoomaticRIPOptionSetting: cab=10" +*cab 11/11: "%% FoomaticRIPOptionSetting: cab=11" +*cab 12/12: "%% FoomaticRIPOptionSetting: cab=12" +*cab 13/13: "%% FoomaticRIPOptionSetting: cab=13" +*cab 14/14: "%% FoomaticRIPOptionSetting: cab=14" +*cab 15/15: "%% FoomaticRIPOptionSetting: cab=15" +*cab 16/16: "%% FoomaticRIPOptionSetting: cab=16" +*cab 17/17: "%% FoomaticRIPOptionSetting: cab=17" +*cab 18/18: "%% FoomaticRIPOptionSetting: cab=18" +*cab 19/19: "%% FoomaticRIPOptionSetting: cab=19" +*cab 20/20: "%% FoomaticRIPOptionSetting: cab=20" +*cab 21/21: "%% FoomaticRIPOptionSetting: cab=21" +*cab 22/22: "%% FoomaticRIPOptionSetting: cab=22" +*cab 23/23: "%% FoomaticRIPOptionSetting: cab=23" +*cab 24/24: "%% FoomaticRIPOptionSetting: cab=24" +*cab 25/25: "%% FoomaticRIPOptionSetting: cab=25" +*cab 26/26: "%% FoomaticRIPOptionSetting: cab=26" +*cab 27/27: "%% FoomaticRIPOptionSetting: cab=27" +*cab 28/28: "%% FoomaticRIPOptionSetting: cab=28" +*cab 29/29: "%% FoomaticRIPOptionSetting: cab=29" +*cab 30/30: "%% FoomaticRIPOptionSetting: cab=30" +*cab 31/31: "%% FoomaticRIPOptionSetting: cab=31" +*cab 32/32: "%% FoomaticRIPOptionSetting: cab=32" +*cab 33/33: "%% FoomaticRIPOptionSetting: cab=33" +*cab 34/34: "%% FoomaticRIPOptionSetting: cab=34" +*cab 35/35: "%% FoomaticRIPOptionSetting: cab=35" +*cab 36/36: "%% FoomaticRIPOptionSetting: cab=36" +*cab 37/37: "%% FoomaticRIPOptionSetting: cab=37" +*cab 38/38: "%% FoomaticRIPOptionSetting: cab=38" +*cab 39/39: "%% FoomaticRIPOptionSetting: cab=39" +*cab 40/40: "%% FoomaticRIPOptionSetting: cab=40" +*cab 41/41: "%% FoomaticRIPOptionSetting: cab=41" +*cab 42/42: "%% FoomaticRIPOptionSetting: cab=42" +*cab 43/43: "%% FoomaticRIPOptionSetting: cab=43" +*cab 44/44: "%% FoomaticRIPOptionSetting: cab=44" +*cab 45/45: "%% FoomaticRIPOptionSetting: cab=45" +*cab 46/46: "%% FoomaticRIPOptionSetting: cab=46" +*cab 47/47: "%% FoomaticRIPOptionSetting: cab=47" +*cab 48/48: "%% FoomaticRIPOptionSetting: cab=48" +*cab 49/49: "%% FoomaticRIPOptionSetting: cab=49" +*cab 50/50: "%% FoomaticRIPOptionSetting: cab=50" +*cab 51/51: "%% FoomaticRIPOptionSetting: cab=51" +*cab 52/52: "%% FoomaticRIPOptionSetting: cab=52" +*cab 53/53: "%% FoomaticRIPOptionSetting: cab=53" +*cab 54/54: "%% FoomaticRIPOptionSetting: cab=54" +*cab 55/55: "%% FoomaticRIPOptionSetting: cab=55" +*cab 56/56: "%% FoomaticRIPOptionSetting: cab=56" +*cab 57/57: "%% FoomaticRIPOptionSetting: cab=57" +*cab 58/58: "%% FoomaticRIPOptionSetting: cab=58" +*cab 59/59: "%% FoomaticRIPOptionSetting: cab=59" +*cab 60/60: "%% FoomaticRIPOptionSetting: cab=60" +*cab 61/61: "%% FoomaticRIPOptionSetting: cab=61" +*cab 62/62: "%% FoomaticRIPOptionSetting: cab=62" +*cab 63/63: "%% FoomaticRIPOptionSetting: cab=63" +*cab 64/64: "%% FoomaticRIPOptionSetting: cab=64" +*cab 65/65: "%% FoomaticRIPOptionSetting: cab=65" +*cab 66/66: "%% FoomaticRIPOptionSetting: cab=66" +*cab 67/67: "%% FoomaticRIPOptionSetting: cab=67" +*cab 68/68: "%% FoomaticRIPOptionSetting: cab=68" +*cab 69/69: "%% FoomaticRIPOptionSetting: cab=69" +*cab 70/70: "%% FoomaticRIPOptionSetting: cab=70" +*cab 71/71: "%% FoomaticRIPOptionSetting: cab=71" +*cab 72/72: "%% FoomaticRIPOptionSetting: cab=72" +*cab 73/73: "%% FoomaticRIPOptionSetting: cab=73" +*cab 74/74: "%% FoomaticRIPOptionSetting: cab=74" +*cab 75/75: "%% FoomaticRIPOptionSetting: cab=75" +*cab 76/76: "%% FoomaticRIPOptionSetting: cab=76" +*cab 77/77: "%% FoomaticRIPOptionSetting: cab=77" +*cab 78/78: "%% FoomaticRIPOptionSetting: cab=78" +*cab 79/79: "%% FoomaticRIPOptionSetting: cab=79" +*cab 80/80: "%% FoomaticRIPOptionSetting: cab=80" +*cab 81/81: "%% FoomaticRIPOptionSetting: cab=81" +*cab 82/82: "%% FoomaticRIPOptionSetting: cab=82" +*cab 83/83: "%% FoomaticRIPOptionSetting: cab=83" +*cab 84/84: "%% FoomaticRIPOptionSetting: cab=84" +*cab 85/85: "%% FoomaticRIPOptionSetting: cab=85" +*cab 86/86: "%% FoomaticRIPOptionSetting: cab=86" +*cab 87/87: "%% FoomaticRIPOptionSetting: cab=87" +*cab 88/88: "%% FoomaticRIPOptionSetting: cab=88" +*cab 89/89: "%% FoomaticRIPOptionSetting: cab=89" +*cab 90/90: "%% FoomaticRIPOptionSetting: cab=90" +*cab 91/91: "%% FoomaticRIPOptionSetting: cab=91" +*cab 92/92: "%% FoomaticRIPOptionSetting: cab=92" +*cab 93/93: "%% FoomaticRIPOptionSetting: cab=93" +*cab 94/94: "%% FoomaticRIPOptionSetting: cab=94" +*cab 95/95: "%% FoomaticRIPOptionSetting: cab=95" +*cab 96/96: "%% FoomaticRIPOptionSetting: cab=96" +*cab 97/97: "%% FoomaticRIPOptionSetting: cab=97" +*cab 98/98: "%% FoomaticRIPOptionSetting: cab=98" +*cab 99/99: "%% FoomaticRIPOptionSetting: cab=99" +*cab 100/100: "%% FoomaticRIPOptionSetting: cab=100" +*CloseUI: *cab + +*OpenUI *cac/Mono or Color Adjust Contrast: PickOne +*FoomaticRIPOption cac: int CmdLine A +*FoomaticRIPOptionPrototype cac: "-ac=%s " +*FoomaticRIPOptionRange cac: 0 100 +*OrderDependency: 212 AnySetup *cac +*Defaultcac: 50 +*FoomaticRIPDefaultcac: 50 +*cac 0/0: "%% FoomaticRIPOptionSetting: cac=0" +*cac 1/1: "%% FoomaticRIPOptionSetting: cac=1" +*cac 2/2: "%% FoomaticRIPOptionSetting: cac=2" +*cac 3/3: "%% FoomaticRIPOptionSetting: cac=3" +*cac 4/4: "%% FoomaticRIPOptionSetting: cac=4" +*cac 5/5: "%% FoomaticRIPOptionSetting: cac=5" +*cac 6/6: "%% FoomaticRIPOptionSetting: cac=6" +*cac 7/7: "%% FoomaticRIPOptionSetting: cac=7" +*cac 8/8: "%% FoomaticRIPOptionSetting: cac=8" +*cac 9/9: "%% FoomaticRIPOptionSetting: cac=9" +*cac 10/10: "%% FoomaticRIPOptionSetting: cac=10" +*cac 11/11: "%% FoomaticRIPOptionSetting: cac=11" +*cac 12/12: "%% FoomaticRIPOptionSetting: cac=12" +*cac 13/13: "%% FoomaticRIPOptionSetting: cac=13" +*cac 14/14: "%% FoomaticRIPOptionSetting: cac=14" +*cac 15/15: "%% FoomaticRIPOptionSetting: cac=15" +*cac 16/16: "%% FoomaticRIPOptionSetting: cac=16" +*cac 17/17: "%% FoomaticRIPOptionSetting: cac=17" +*cac 18/18: "%% FoomaticRIPOptionSetting: cac=18" +*cac 19/19: "%% FoomaticRIPOptionSetting: cac=19" +*cac 20/20: "%% FoomaticRIPOptionSetting: cac=20" +*cac 21/21: "%% FoomaticRIPOptionSetting: cac=21" +*cac 22/22: "%% FoomaticRIPOptionSetting: cac=22" +*cac 23/23: "%% FoomaticRIPOptionSetting: cac=23" +*cac 24/24: "%% FoomaticRIPOptionSetting: cac=24" +*cac 25/25: "%% FoomaticRIPOptionSetting: cac=25" +*cac 26/26: "%% FoomaticRIPOptionSetting: cac=26" +*cac 27/27: "%% FoomaticRIPOptionSetting: cac=27" +*cac 28/28: "%% FoomaticRIPOptionSetting: cac=28" +*cac 29/29: "%% FoomaticRIPOptionSetting: cac=29" +*cac 30/30: "%% FoomaticRIPOptionSetting: cac=30" +*cac 31/31: "%% FoomaticRIPOptionSetting: cac=31" +*cac 32/32: "%% FoomaticRIPOptionSetting: cac=32" +*cac 33/33: "%% FoomaticRIPOptionSetting: cac=33" +*cac 34/34: "%% FoomaticRIPOptionSetting: cac=34" +*cac 35/35: "%% FoomaticRIPOptionSetting: cac=35" +*cac 36/36: "%% FoomaticRIPOptionSetting: cac=36" +*cac 37/37: "%% FoomaticRIPOptionSetting: cac=37" +*cac 38/38: "%% FoomaticRIPOptionSetting: cac=38" +*cac 39/39: "%% FoomaticRIPOptionSetting: cac=39" +*cac 40/40: "%% FoomaticRIPOptionSetting: cac=40" +*cac 41/41: "%% FoomaticRIPOptionSetting: cac=41" +*cac 42/42: "%% FoomaticRIPOptionSetting: cac=42" +*cac 43/43: "%% FoomaticRIPOptionSetting: cac=43" +*cac 44/44: "%% FoomaticRIPOptionSetting: cac=44" +*cac 45/45: "%% FoomaticRIPOptionSetting: cac=45" +*cac 46/46: "%% FoomaticRIPOptionSetting: cac=46" +*cac 47/47: "%% FoomaticRIPOptionSetting: cac=47" +*cac 48/48: "%% FoomaticRIPOptionSetting: cac=48" +*cac 49/49: "%% FoomaticRIPOptionSetting: cac=49" +*cac 50/50: "%% FoomaticRIPOptionSetting: cac=50" +*cac 51/51: "%% FoomaticRIPOptionSetting: cac=51" +*cac 52/52: "%% FoomaticRIPOptionSetting: cac=52" +*cac 53/53: "%% FoomaticRIPOptionSetting: cac=53" +*cac 54/54: "%% FoomaticRIPOptionSetting: cac=54" +*cac 55/55: "%% FoomaticRIPOptionSetting: cac=55" +*cac 56/56: "%% FoomaticRIPOptionSetting: cac=56" +*cac 57/57: "%% FoomaticRIPOptionSetting: cac=57" +*cac 58/58: "%% FoomaticRIPOptionSetting: cac=58" +*cac 59/59: "%% FoomaticRIPOptionSetting: cac=59" +*cac 60/60: "%% FoomaticRIPOptionSetting: cac=60" +*cac 61/61: "%% FoomaticRIPOptionSetting: cac=61" +*cac 62/62: "%% FoomaticRIPOptionSetting: cac=62" +*cac 63/63: "%% FoomaticRIPOptionSetting: cac=63" +*cac 64/64: "%% FoomaticRIPOptionSetting: cac=64" +*cac 65/65: "%% FoomaticRIPOptionSetting: cac=65" +*cac 66/66: "%% FoomaticRIPOptionSetting: cac=66" +*cac 67/67: "%% FoomaticRIPOptionSetting: cac=67" +*cac 68/68: "%% FoomaticRIPOptionSetting: cac=68" +*cac 69/69: "%% FoomaticRIPOptionSetting: cac=69" +*cac 70/70: "%% FoomaticRIPOptionSetting: cac=70" +*cac 71/71: "%% FoomaticRIPOptionSetting: cac=71" +*cac 72/72: "%% FoomaticRIPOptionSetting: cac=72" +*cac 73/73: "%% FoomaticRIPOptionSetting: cac=73" +*cac 74/74: "%% FoomaticRIPOptionSetting: cac=74" +*cac 75/75: "%% FoomaticRIPOptionSetting: cac=75" +*cac 76/76: "%% FoomaticRIPOptionSetting: cac=76" +*cac 77/77: "%% FoomaticRIPOptionSetting: cac=77" +*cac 78/78: "%% FoomaticRIPOptionSetting: cac=78" +*cac 79/79: "%% FoomaticRIPOptionSetting: cac=79" +*cac 80/80: "%% FoomaticRIPOptionSetting: cac=80" +*cac 81/81: "%% FoomaticRIPOptionSetting: cac=81" +*cac 82/82: "%% FoomaticRIPOptionSetting: cac=82" +*cac 83/83: "%% FoomaticRIPOptionSetting: cac=83" +*cac 84/84: "%% FoomaticRIPOptionSetting: cac=84" +*cac 85/85: "%% FoomaticRIPOptionSetting: cac=85" +*cac 86/86: "%% FoomaticRIPOptionSetting: cac=86" +*cac 87/87: "%% FoomaticRIPOptionSetting: cac=87" +*cac 88/88: "%% FoomaticRIPOptionSetting: cac=88" +*cac 89/89: "%% FoomaticRIPOptionSetting: cac=89" +*cac 90/90: "%% FoomaticRIPOptionSetting: cac=90" +*cac 91/91: "%% FoomaticRIPOptionSetting: cac=91" +*cac 92/92: "%% FoomaticRIPOptionSetting: cac=92" +*cac 93/93: "%% FoomaticRIPOptionSetting: cac=93" +*cac 94/94: "%% FoomaticRIPOptionSetting: cac=94" +*cac 95/95: "%% FoomaticRIPOptionSetting: cac=95" +*cac 96/96: "%% FoomaticRIPOptionSetting: cac=96" +*cac 97/97: "%% FoomaticRIPOptionSetting: cac=97" +*cac 98/98: "%% FoomaticRIPOptionSetting: cac=98" +*cac 99/99: "%% FoomaticRIPOptionSetting: cac=99" +*cac 100/100: "%% FoomaticRIPOptionSetting: cac=100" +*CloseUI: *cac + +*OpenUI *cas/Color Adjust Saturation: PickOne +*FoomaticRIPOption cas: int CmdLine A +*FoomaticRIPOptionPrototype cas: "-as=%s " +*FoomaticRIPOptionRange cas: 0 100 +*OrderDependency: 213 AnySetup *cas +*Defaultcas: 50 +*FoomaticRIPDefaultcas: 50 +*cas 0/0: "%% FoomaticRIPOptionSetting: cas=0" +*cas 1/1: "%% FoomaticRIPOptionSetting: cas=1" +*cas 2/2: "%% FoomaticRIPOptionSetting: cas=2" +*cas 3/3: "%% FoomaticRIPOptionSetting: cas=3" +*cas 4/4: "%% FoomaticRIPOptionSetting: cas=4" +*cas 5/5: "%% FoomaticRIPOptionSetting: cas=5" +*cas 6/6: "%% FoomaticRIPOptionSetting: cas=6" +*cas 7/7: "%% FoomaticRIPOptionSetting: cas=7" +*cas 8/8: "%% FoomaticRIPOptionSetting: cas=8" +*cas 9/9: "%% FoomaticRIPOptionSetting: cas=9" +*cas 10/10: "%% FoomaticRIPOptionSetting: cas=10" +*cas 11/11: "%% FoomaticRIPOptionSetting: cas=11" +*cas 12/12: "%% FoomaticRIPOptionSetting: cas=12" +*cas 13/13: "%% FoomaticRIPOptionSetting: cas=13" +*cas 14/14: "%% FoomaticRIPOptionSetting: cas=14" +*cas 15/15: "%% FoomaticRIPOptionSetting: cas=15" +*cas 16/16: "%% FoomaticRIPOptionSetting: cas=16" +*cas 17/17: "%% FoomaticRIPOptionSetting: cas=17" +*cas 18/18: "%% FoomaticRIPOptionSetting: cas=18" +*cas 19/19: "%% FoomaticRIPOptionSetting: cas=19" +*cas 20/20: "%% FoomaticRIPOptionSetting: cas=20" +*cas 21/21: "%% FoomaticRIPOptionSetting: cas=21" +*cas 22/22: "%% FoomaticRIPOptionSetting: cas=22" +*cas 23/23: "%% FoomaticRIPOptionSetting: cas=23" +*cas 24/24: "%% FoomaticRIPOptionSetting: cas=24" +*cas 25/25: "%% FoomaticRIPOptionSetting: cas=25" +*cas 26/26: "%% FoomaticRIPOptionSetting: cas=26" +*cas 27/27: "%% FoomaticRIPOptionSetting: cas=27" +*cas 28/28: "%% FoomaticRIPOptionSetting: cas=28" +*cas 29/29: "%% FoomaticRIPOptionSetting: cas=29" +*cas 30/30: "%% FoomaticRIPOptionSetting: cas=30" +*cas 31/31: "%% FoomaticRIPOptionSetting: cas=31" +*cas 32/32: "%% FoomaticRIPOptionSetting: cas=32" +*cas 33/33: "%% FoomaticRIPOptionSetting: cas=33" +*cas 34/34: "%% FoomaticRIPOptionSetting: cas=34" +*cas 35/35: "%% FoomaticRIPOptionSetting: cas=35" +*cas 36/36: "%% FoomaticRIPOptionSetting: cas=36" +*cas 37/37: "%% FoomaticRIPOptionSetting: cas=37" +*cas 38/38: "%% FoomaticRIPOptionSetting: cas=38" +*cas 39/39: "%% FoomaticRIPOptionSetting: cas=39" +*cas 40/40: "%% FoomaticRIPOptionSetting: cas=40" +*cas 41/41: "%% FoomaticRIPOptionSetting: cas=41" +*cas 42/42: "%% FoomaticRIPOptionSetting: cas=42" +*cas 43/43: "%% FoomaticRIPOptionSetting: cas=43" +*cas 44/44: "%% FoomaticRIPOptionSetting: cas=44" +*cas 45/45: "%% FoomaticRIPOptionSetting: cas=45" +*cas 46/46: "%% FoomaticRIPOptionSetting: cas=46" +*cas 47/47: "%% FoomaticRIPOptionSetting: cas=47" +*cas 48/48: "%% FoomaticRIPOptionSetting: cas=48" +*cas 49/49: "%% FoomaticRIPOptionSetting: cas=49" +*cas 50/50: "%% FoomaticRIPOptionSetting: cas=50" +*cas 51/51: "%% FoomaticRIPOptionSetting: cas=51" +*cas 52/52: "%% FoomaticRIPOptionSetting: cas=52" +*cas 53/53: "%% FoomaticRIPOptionSetting: cas=53" +*cas 54/54: "%% FoomaticRIPOptionSetting: cas=54" +*cas 55/55: "%% FoomaticRIPOptionSetting: cas=55" +*cas 56/56: "%% FoomaticRIPOptionSetting: cas=56" +*cas 57/57: "%% FoomaticRIPOptionSetting: cas=57" +*cas 58/58: "%% FoomaticRIPOptionSetting: cas=58" +*cas 59/59: "%% FoomaticRIPOptionSetting: cas=59" +*cas 60/60: "%% FoomaticRIPOptionSetting: cas=60" +*cas 61/61: "%% FoomaticRIPOptionSetting: cas=61" +*cas 62/62: "%% FoomaticRIPOptionSetting: cas=62" +*cas 63/63: "%% FoomaticRIPOptionSetting: cas=63" +*cas 64/64: "%% FoomaticRIPOptionSetting: cas=64" +*cas 65/65: "%% FoomaticRIPOptionSetting: cas=65" +*cas 66/66: "%% FoomaticRIPOptionSetting: cas=66" +*cas 67/67: "%% FoomaticRIPOptionSetting: cas=67" +*cas 68/68: "%% FoomaticRIPOptionSetting: cas=68" +*cas 69/69: "%% FoomaticRIPOptionSetting: cas=69" +*cas 70/70: "%% FoomaticRIPOptionSetting: cas=70" +*cas 71/71: "%% FoomaticRIPOptionSetting: cas=71" +*cas 72/72: "%% FoomaticRIPOptionSetting: cas=72" +*cas 73/73: "%% FoomaticRIPOptionSetting: cas=73" +*cas 74/74: "%% FoomaticRIPOptionSetting: cas=74" +*cas 75/75: "%% FoomaticRIPOptionSetting: cas=75" +*cas 76/76: "%% FoomaticRIPOptionSetting: cas=76" +*cas 77/77: "%% FoomaticRIPOptionSetting: cas=77" +*cas 78/78: "%% FoomaticRIPOptionSetting: cas=78" +*cas 79/79: "%% FoomaticRIPOptionSetting: cas=79" +*cas 80/80: "%% FoomaticRIPOptionSetting: cas=80" +*cas 81/81: "%% FoomaticRIPOptionSetting: cas=81" +*cas 82/82: "%% FoomaticRIPOptionSetting: cas=82" +*cas 83/83: "%% FoomaticRIPOptionSetting: cas=83" +*cas 84/84: "%% FoomaticRIPOptionSetting: cas=84" +*cas 85/85: "%% FoomaticRIPOptionSetting: cas=85" +*cas 86/86: "%% FoomaticRIPOptionSetting: cas=86" +*cas 87/87: "%% FoomaticRIPOptionSetting: cas=87" +*cas 88/88: "%% FoomaticRIPOptionSetting: cas=88" +*cas 89/89: "%% FoomaticRIPOptionSetting: cas=89" +*cas 90/90: "%% FoomaticRIPOptionSetting: cas=90" +*cas 91/91: "%% FoomaticRIPOptionSetting: cas=91" +*cas 92/92: "%% FoomaticRIPOptionSetting: cas=92" +*cas 93/93: "%% FoomaticRIPOptionSetting: cas=93" +*cas 94/94: "%% FoomaticRIPOptionSetting: cas=94" +*cas 95/95: "%% FoomaticRIPOptionSetting: cas=95" +*cas 96/96: "%% FoomaticRIPOptionSetting: cas=96" +*cas 97/97: "%% FoomaticRIPOptionSetting: cas=97" +*cas 98/98: "%% FoomaticRIPOptionSetting: cas=98" +*cas 99/99: "%% FoomaticRIPOptionSetting: cas=99" +*cas 100/100: "%% FoomaticRIPOptionSetting: cas=100" +*CloseUI: *cas + +*OpenUI *cacr/Color Adjust Cyan-Red: PickOne +*FoomaticRIPOption cacr: int CmdLine A +*FoomaticRIPOptionPrototype cacr: "-acr=%s " +*FoomaticRIPOptionRange cacr: 0 100 +*OrderDependency: 220 AnySetup *cacr +*Defaultcacr: 50 +*FoomaticRIPDefaultcacr: 50 +*cacr 0/0: "%% FoomaticRIPOptionSetting: cacr=0" +*cacr 1/1: "%% FoomaticRIPOptionSetting: cacr=1" +*cacr 2/2: "%% FoomaticRIPOptionSetting: cacr=2" +*cacr 3/3: "%% FoomaticRIPOptionSetting: cacr=3" +*cacr 4/4: "%% FoomaticRIPOptionSetting: cacr=4" +*cacr 5/5: "%% FoomaticRIPOptionSetting: cacr=5" +*cacr 6/6: "%% FoomaticRIPOptionSetting: cacr=6" +*cacr 7/7: "%% FoomaticRIPOptionSetting: cacr=7" +*cacr 8/8: "%% FoomaticRIPOptionSetting: cacr=8" +*cacr 9/9: "%% FoomaticRIPOptionSetting: cacr=9" +*cacr 10/10: "%% FoomaticRIPOptionSetting: cacr=10" +*cacr 11/11: "%% FoomaticRIPOptionSetting: cacr=11" +*cacr 12/12: "%% FoomaticRIPOptionSetting: cacr=12" +*cacr 13/13: "%% FoomaticRIPOptionSetting: cacr=13" +*cacr 14/14: "%% FoomaticRIPOptionSetting: cacr=14" +*cacr 15/15: "%% FoomaticRIPOptionSetting: cacr=15" +*cacr 16/16: "%% FoomaticRIPOptionSetting: cacr=16" +*cacr 17/17: "%% FoomaticRIPOptionSetting: cacr=17" +*cacr 18/18: "%% FoomaticRIPOptionSetting: cacr=18" +*cacr 19/19: "%% FoomaticRIPOptionSetting: cacr=19" +*cacr 20/20: "%% FoomaticRIPOptionSetting: cacr=20" +*cacr 21/21: "%% FoomaticRIPOptionSetting: cacr=21" +*cacr 22/22: "%% FoomaticRIPOptionSetting: cacr=22" +*cacr 23/23: "%% FoomaticRIPOptionSetting: cacr=23" +*cacr 24/24: "%% FoomaticRIPOptionSetting: cacr=24" +*cacr 25/25: "%% FoomaticRIPOptionSetting: cacr=25" +*cacr 26/26: "%% FoomaticRIPOptionSetting: cacr=26" +*cacr 27/27: "%% FoomaticRIPOptionSetting: cacr=27" +*cacr 28/28: "%% FoomaticRIPOptionSetting: cacr=28" +*cacr 29/29: "%% FoomaticRIPOptionSetting: cacr=29" +*cacr 30/30: "%% FoomaticRIPOptionSetting: cacr=30" +*cacr 31/31: "%% FoomaticRIPOptionSetting: cacr=31" +*cacr 32/32: "%% FoomaticRIPOptionSetting: cacr=32" +*cacr 33/33: "%% FoomaticRIPOptionSetting: cacr=33" +*cacr 34/34: "%% FoomaticRIPOptionSetting: cacr=34" +*cacr 35/35: "%% FoomaticRIPOptionSetting: cacr=35" +*cacr 36/36: "%% FoomaticRIPOptionSetting: cacr=36" +*cacr 37/37: "%% FoomaticRIPOptionSetting: cacr=37" +*cacr 38/38: "%% FoomaticRIPOptionSetting: cacr=38" +*cacr 39/39: "%% FoomaticRIPOptionSetting: cacr=39" +*cacr 40/40: "%% FoomaticRIPOptionSetting: cacr=40" +*cacr 41/41: "%% FoomaticRIPOptionSetting: cacr=41" +*cacr 42/42: "%% FoomaticRIPOptionSetting: cacr=42" +*cacr 43/43: "%% FoomaticRIPOptionSetting: cacr=43" +*cacr 44/44: "%% FoomaticRIPOptionSetting: cacr=44" +*cacr 45/45: "%% FoomaticRIPOptionSetting: cacr=45" +*cacr 46/46: "%% FoomaticRIPOptionSetting: cacr=46" +*cacr 47/47: "%% FoomaticRIPOptionSetting: cacr=47" +*cacr 48/48: "%% FoomaticRIPOptionSetting: cacr=48" +*cacr 49/49: "%% FoomaticRIPOptionSetting: cacr=49" +*cacr 50/50: "%% FoomaticRIPOptionSetting: cacr=50" +*cacr 51/51: "%% FoomaticRIPOptionSetting: cacr=51" +*cacr 52/52: "%% FoomaticRIPOptionSetting: cacr=52" +*cacr 53/53: "%% FoomaticRIPOptionSetting: cacr=53" +*cacr 54/54: "%% FoomaticRIPOptionSetting: cacr=54" +*cacr 55/55: "%% FoomaticRIPOptionSetting: cacr=55" +*cacr 56/56: "%% FoomaticRIPOptionSetting: cacr=56" +*cacr 57/57: "%% FoomaticRIPOptionSetting: cacr=57" +*cacr 58/58: "%% FoomaticRIPOptionSetting: cacr=58" +*cacr 59/59: "%% FoomaticRIPOptionSetting: cacr=59" +*cacr 60/60: "%% FoomaticRIPOptionSetting: cacr=60" +*cacr 61/61: "%% FoomaticRIPOptionSetting: cacr=61" +*cacr 62/62: "%% FoomaticRIPOptionSetting: cacr=62" +*cacr 63/63: "%% FoomaticRIPOptionSetting: cacr=63" +*cacr 64/64: "%% FoomaticRIPOptionSetting: cacr=64" +*cacr 65/65: "%% FoomaticRIPOptionSetting: cacr=65" +*cacr 66/66: "%% FoomaticRIPOptionSetting: cacr=66" +*cacr 67/67: "%% FoomaticRIPOptionSetting: cacr=67" +*cacr 68/68: "%% FoomaticRIPOptionSetting: cacr=68" +*cacr 69/69: "%% FoomaticRIPOptionSetting: cacr=69" +*cacr 70/70: "%% FoomaticRIPOptionSetting: cacr=70" +*cacr 71/71: "%% FoomaticRIPOptionSetting: cacr=71" +*cacr 72/72: "%% FoomaticRIPOptionSetting: cacr=72" +*cacr 73/73: "%% FoomaticRIPOptionSetting: cacr=73" +*cacr 74/74: "%% FoomaticRIPOptionSetting: cacr=74" +*cacr 75/75: "%% FoomaticRIPOptionSetting: cacr=75" +*cacr 76/76: "%% FoomaticRIPOptionSetting: cacr=76" +*cacr 77/77: "%% FoomaticRIPOptionSetting: cacr=77" +*cacr 78/78: "%% FoomaticRIPOptionSetting: cacr=78" +*cacr 79/79: "%% FoomaticRIPOptionSetting: cacr=79" +*cacr 80/80: "%% FoomaticRIPOptionSetting: cacr=80" +*cacr 81/81: "%% FoomaticRIPOptionSetting: cacr=81" +*cacr 82/82: "%% FoomaticRIPOptionSetting: cacr=82" +*cacr 83/83: "%% FoomaticRIPOptionSetting: cacr=83" +*cacr 84/84: "%% FoomaticRIPOptionSetting: cacr=84" +*cacr 85/85: "%% FoomaticRIPOptionSetting: cacr=85" +*cacr 86/86: "%% FoomaticRIPOptionSetting: cacr=86" +*cacr 87/87: "%% FoomaticRIPOptionSetting: cacr=87" +*cacr 88/88: "%% FoomaticRIPOptionSetting: cacr=88" +*cacr 89/89: "%% FoomaticRIPOptionSetting: cacr=89" +*cacr 90/90: "%% FoomaticRIPOptionSetting: cacr=90" +*cacr 91/91: "%% FoomaticRIPOptionSetting: cacr=91" +*cacr 92/92: "%% FoomaticRIPOptionSetting: cacr=92" +*cacr 93/93: "%% FoomaticRIPOptionSetting: cacr=93" +*cacr 94/94: "%% FoomaticRIPOptionSetting: cacr=94" +*cacr 95/95: "%% FoomaticRIPOptionSetting: cacr=95" +*cacr 96/96: "%% FoomaticRIPOptionSetting: cacr=96" +*cacr 97/97: "%% FoomaticRIPOptionSetting: cacr=97" +*cacr 98/98: "%% FoomaticRIPOptionSetting: cacr=98" +*cacr 99/99: "%% FoomaticRIPOptionSetting: cacr=99" +*cacr 100/100: "%% FoomaticRIPOptionSetting: cacr=100" +*CloseUI: *cacr + +*OpenUI *camg/Color Adjust Magenta-Green: PickOne +*FoomaticRIPOption camg: int CmdLine A +*FoomaticRIPOptionPrototype camg: "-amg=%s " +*FoomaticRIPOptionRange camg: 0 100 +*OrderDependency: 220 AnySetup *camg +*Defaultcamg: 50 +*FoomaticRIPDefaultcamg: 50 +*camg 0/0: "%% FoomaticRIPOptionSetting: camg=0" +*camg 1/1: "%% FoomaticRIPOptionSetting: camg=1" +*camg 2/2: "%% FoomaticRIPOptionSetting: camg=2" +*camg 3/3: "%% FoomaticRIPOptionSetting: camg=3" +*camg 4/4: "%% FoomaticRIPOptionSetting: camg=4" +*camg 5/5: "%% FoomaticRIPOptionSetting: camg=5" +*camg 6/6: "%% FoomaticRIPOptionSetting: camg=6" +*camg 7/7: "%% FoomaticRIPOptionSetting: camg=7" +*camg 8/8: "%% FoomaticRIPOptionSetting: camg=8" +*camg 9/9: "%% FoomaticRIPOptionSetting: camg=9" +*camg 10/10: "%% FoomaticRIPOptionSetting: camg=10" +*camg 11/11: "%% FoomaticRIPOptionSetting: camg=11" +*camg 12/12: "%% FoomaticRIPOptionSetting: camg=12" +*camg 13/13: "%% FoomaticRIPOptionSetting: camg=13" +*camg 14/14: "%% FoomaticRIPOptionSetting: camg=14" +*camg 15/15: "%% FoomaticRIPOptionSetting: camg=15" +*camg 16/16: "%% FoomaticRIPOptionSetting: camg=16" +*camg 17/17: "%% FoomaticRIPOptionSetting: camg=17" +*camg 18/18: "%% FoomaticRIPOptionSetting: camg=18" +*camg 19/19: "%% FoomaticRIPOptionSetting: camg=19" +*camg 20/20: "%% FoomaticRIPOptionSetting: camg=20" +*camg 21/21: "%% FoomaticRIPOptionSetting: camg=21" +*camg 22/22: "%% FoomaticRIPOptionSetting: camg=22" +*camg 23/23: "%% FoomaticRIPOptionSetting: camg=23" +*camg 24/24: "%% FoomaticRIPOptionSetting: camg=24" +*camg 25/25: "%% FoomaticRIPOptionSetting: camg=25" +*camg 26/26: "%% FoomaticRIPOptionSetting: camg=26" +*camg 27/27: "%% FoomaticRIPOptionSetting: camg=27" +*camg 28/28: "%% FoomaticRIPOptionSetting: camg=28" +*camg 29/29: "%% FoomaticRIPOptionSetting: camg=29" +*camg 30/30: "%% FoomaticRIPOptionSetting: camg=30" +*camg 31/31: "%% FoomaticRIPOptionSetting: camg=31" +*camg 32/32: "%% FoomaticRIPOptionSetting: camg=32" +*camg 33/33: "%% FoomaticRIPOptionSetting: camg=33" +*camg 34/34: "%% FoomaticRIPOptionSetting: camg=34" +*camg 35/35: "%% FoomaticRIPOptionSetting: camg=35" +*camg 36/36: "%% FoomaticRIPOptionSetting: camg=36" +*camg 37/37: "%% FoomaticRIPOptionSetting: camg=37" +*camg 38/38: "%% FoomaticRIPOptionSetting: camg=38" +*camg 39/39: "%% FoomaticRIPOptionSetting: camg=39" +*camg 40/40: "%% FoomaticRIPOptionSetting: camg=40" +*camg 41/41: "%% FoomaticRIPOptionSetting: camg=41" +*camg 42/42: "%% FoomaticRIPOptionSetting: camg=42" +*camg 43/43: "%% FoomaticRIPOptionSetting: camg=43" +*camg 44/44: "%% FoomaticRIPOptionSetting: camg=44" +*camg 45/45: "%% FoomaticRIPOptionSetting: camg=45" +*camg 46/46: "%% FoomaticRIPOptionSetting: camg=46" +*camg 47/47: "%% FoomaticRIPOptionSetting: camg=47" +*camg 48/48: "%% FoomaticRIPOptionSetting: camg=48" +*camg 49/49: "%% FoomaticRIPOptionSetting: camg=49" +*camg 50/50: "%% FoomaticRIPOptionSetting: camg=50" +*camg 51/51: "%% FoomaticRIPOptionSetting: camg=51" +*camg 52/52: "%% FoomaticRIPOptionSetting: camg=52" +*camg 53/53: "%% FoomaticRIPOptionSetting: camg=53" +*camg 54/54: "%% FoomaticRIPOptionSetting: camg=54" +*camg 55/55: "%% FoomaticRIPOptionSetting: camg=55" +*camg 56/56: "%% FoomaticRIPOptionSetting: camg=56" +*camg 57/57: "%% FoomaticRIPOptionSetting: camg=57" +*camg 58/58: "%% FoomaticRIPOptionSetting: camg=58" +*camg 59/59: "%% FoomaticRIPOptionSetting: camg=59" +*camg 60/60: "%% FoomaticRIPOptionSetting: camg=60" +*camg 61/61: "%% FoomaticRIPOptionSetting: camg=61" +*camg 62/62: "%% FoomaticRIPOptionSetting: camg=62" +*camg 63/63: "%% FoomaticRIPOptionSetting: camg=63" +*camg 64/64: "%% FoomaticRIPOptionSetting: camg=64" +*camg 65/65: "%% FoomaticRIPOptionSetting: camg=65" +*camg 66/66: "%% FoomaticRIPOptionSetting: camg=66" +*camg 67/67: "%% FoomaticRIPOptionSetting: camg=67" +*camg 68/68: "%% FoomaticRIPOptionSetting: camg=68" +*camg 69/69: "%% FoomaticRIPOptionSetting: camg=69" +*camg 70/70: "%% FoomaticRIPOptionSetting: camg=70" +*camg 71/71: "%% FoomaticRIPOptionSetting: camg=71" +*camg 72/72: "%% FoomaticRIPOptionSetting: camg=72" +*camg 73/73: "%% FoomaticRIPOptionSetting: camg=73" +*camg 74/74: "%% FoomaticRIPOptionSetting: camg=74" +*camg 75/75: "%% FoomaticRIPOptionSetting: camg=75" +*camg 76/76: "%% FoomaticRIPOptionSetting: camg=76" +*camg 77/77: "%% FoomaticRIPOptionSetting: camg=77" +*camg 78/78: "%% FoomaticRIPOptionSetting: camg=78" +*camg 79/79: "%% FoomaticRIPOptionSetting: camg=79" +*camg 80/80: "%% FoomaticRIPOptionSetting: camg=80" +*camg 81/81: "%% FoomaticRIPOptionSetting: camg=81" +*camg 82/82: "%% FoomaticRIPOptionSetting: camg=82" +*camg 83/83: "%% FoomaticRIPOptionSetting: camg=83" +*camg 84/84: "%% FoomaticRIPOptionSetting: camg=84" +*camg 85/85: "%% FoomaticRIPOptionSetting: camg=85" +*camg 86/86: "%% FoomaticRIPOptionSetting: camg=86" +*camg 87/87: "%% FoomaticRIPOptionSetting: camg=87" +*camg 88/88: "%% FoomaticRIPOptionSetting: camg=88" +*camg 89/89: "%% FoomaticRIPOptionSetting: camg=89" +*camg 90/90: "%% FoomaticRIPOptionSetting: camg=90" +*camg 91/91: "%% FoomaticRIPOptionSetting: camg=91" +*camg 92/92: "%% FoomaticRIPOptionSetting: camg=92" +*camg 93/93: "%% FoomaticRIPOptionSetting: camg=93" +*camg 94/94: "%% FoomaticRIPOptionSetting: camg=94" +*camg 95/95: "%% FoomaticRIPOptionSetting: camg=95" +*camg 96/96: "%% FoomaticRIPOptionSetting: camg=96" +*camg 97/97: "%% FoomaticRIPOptionSetting: camg=97" +*camg 98/98: "%% FoomaticRIPOptionSetting: camg=98" +*camg 99/99: "%% FoomaticRIPOptionSetting: camg=99" +*camg 100/100: "%% FoomaticRIPOptionSetting: camg=100" +*CloseUI: *camg + +*OpenUI *cayb/Color Adjust Yellow-Blue: PickOne +*FoomaticRIPOption cayb: int CmdLine A +*FoomaticRIPOptionPrototype cayb: "-ayb=%s " +*FoomaticRIPOptionRange cayb: 0 100 +*OrderDependency: 220 AnySetup *cayb +*Defaultcayb: 50 +*FoomaticRIPDefaultcayb: 50 +*cayb 0/0: "%% FoomaticRIPOptionSetting: cayb=0" +*cayb 1/1: "%% FoomaticRIPOptionSetting: cayb=1" +*cayb 2/2: "%% FoomaticRIPOptionSetting: cayb=2" +*cayb 3/3: "%% FoomaticRIPOptionSetting: cayb=3" +*cayb 4/4: "%% FoomaticRIPOptionSetting: cayb=4" +*cayb 5/5: "%% FoomaticRIPOptionSetting: cayb=5" +*cayb 6/6: "%% FoomaticRIPOptionSetting: cayb=6" +*cayb 7/7: "%% FoomaticRIPOptionSetting: cayb=7" +*cayb 8/8: "%% FoomaticRIPOptionSetting: cayb=8" +*cayb 9/9: "%% FoomaticRIPOptionSetting: cayb=9" +*cayb 10/10: "%% FoomaticRIPOptionSetting: cayb=10" +*cayb 11/11: "%% FoomaticRIPOptionSetting: cayb=11" +*cayb 12/12: "%% FoomaticRIPOptionSetting: cayb=12" +*cayb 13/13: "%% FoomaticRIPOptionSetting: cayb=13" +*cayb 14/14: "%% FoomaticRIPOptionSetting: cayb=14" +*cayb 15/15: "%% FoomaticRIPOptionSetting: cayb=15" +*cayb 16/16: "%% FoomaticRIPOptionSetting: cayb=16" +*cayb 17/17: "%% FoomaticRIPOptionSetting: cayb=17" +*cayb 18/18: "%% FoomaticRIPOptionSetting: cayb=18" +*cayb 19/19: "%% FoomaticRIPOptionSetting: cayb=19" +*cayb 20/20: "%% FoomaticRIPOptionSetting: cayb=20" +*cayb 21/21: "%% FoomaticRIPOptionSetting: cayb=21" +*cayb 22/22: "%% FoomaticRIPOptionSetting: cayb=22" +*cayb 23/23: "%% FoomaticRIPOptionSetting: cayb=23" +*cayb 24/24: "%% FoomaticRIPOptionSetting: cayb=24" +*cayb 25/25: "%% FoomaticRIPOptionSetting: cayb=25" +*cayb 26/26: "%% FoomaticRIPOptionSetting: cayb=26" +*cayb 27/27: "%% FoomaticRIPOptionSetting: cayb=27" +*cayb 28/28: "%% FoomaticRIPOptionSetting: cayb=28" +*cayb 29/29: "%% FoomaticRIPOptionSetting: cayb=29" +*cayb 30/30: "%% FoomaticRIPOptionSetting: cayb=30" +*cayb 31/31: "%% FoomaticRIPOptionSetting: cayb=31" +*cayb 32/32: "%% FoomaticRIPOptionSetting: cayb=32" +*cayb 33/33: "%% FoomaticRIPOptionSetting: cayb=33" +*cayb 34/34: "%% FoomaticRIPOptionSetting: cayb=34" +*cayb 35/35: "%% FoomaticRIPOptionSetting: cayb=35" +*cayb 36/36: "%% FoomaticRIPOptionSetting: cayb=36" +*cayb 37/37: "%% FoomaticRIPOptionSetting: cayb=37" +*cayb 38/38: "%% FoomaticRIPOptionSetting: cayb=38" +*cayb 39/39: "%% FoomaticRIPOptionSetting: cayb=39" +*cayb 40/40: "%% FoomaticRIPOptionSetting: cayb=40" +*cayb 41/41: "%% FoomaticRIPOptionSetting: cayb=41" +*cayb 42/42: "%% FoomaticRIPOptionSetting: cayb=42" +*cayb 43/43: "%% FoomaticRIPOptionSetting: cayb=43" +*cayb 44/44: "%% FoomaticRIPOptionSetting: cayb=44" +*cayb 45/45: "%% FoomaticRIPOptionSetting: cayb=45" +*cayb 46/46: "%% FoomaticRIPOptionSetting: cayb=46" +*cayb 47/47: "%% FoomaticRIPOptionSetting: cayb=47" +*cayb 48/48: "%% FoomaticRIPOptionSetting: cayb=48" +*cayb 49/49: "%% FoomaticRIPOptionSetting: cayb=49" +*cayb 50/50: "%% FoomaticRIPOptionSetting: cayb=50" +*cayb 51/51: "%% FoomaticRIPOptionSetting: cayb=51" +*cayb 52/52: "%% FoomaticRIPOptionSetting: cayb=52" +*cayb 53/53: "%% FoomaticRIPOptionSetting: cayb=53" +*cayb 54/54: "%% FoomaticRIPOptionSetting: cayb=54" +*cayb 55/55: "%% FoomaticRIPOptionSetting: cayb=55" +*cayb 56/56: "%% FoomaticRIPOptionSetting: cayb=56" +*cayb 57/57: "%% FoomaticRIPOptionSetting: cayb=57" +*cayb 58/58: "%% FoomaticRIPOptionSetting: cayb=58" +*cayb 59/59: "%% FoomaticRIPOptionSetting: cayb=59" +*cayb 60/60: "%% FoomaticRIPOptionSetting: cayb=60" +*cayb 61/61: "%% FoomaticRIPOptionSetting: cayb=61" +*cayb 62/62: "%% FoomaticRIPOptionSetting: cayb=62" +*cayb 63/63: "%% FoomaticRIPOptionSetting: cayb=63" +*cayb 64/64: "%% FoomaticRIPOptionSetting: cayb=64" +*cayb 65/65: "%% FoomaticRIPOptionSetting: cayb=65" +*cayb 66/66: "%% FoomaticRIPOptionSetting: cayb=66" +*cayb 67/67: "%% FoomaticRIPOptionSetting: cayb=67" +*cayb 68/68: "%% FoomaticRIPOptionSetting: cayb=68" +*cayb 69/69: "%% FoomaticRIPOptionSetting: cayb=69" +*cayb 70/70: "%% FoomaticRIPOptionSetting: cayb=70" +*cayb 71/71: "%% FoomaticRIPOptionSetting: cayb=71" +*cayb 72/72: "%% FoomaticRIPOptionSetting: cayb=72" +*cayb 73/73: "%% FoomaticRIPOptionSetting: cayb=73" +*cayb 74/74: "%% FoomaticRIPOptionSetting: cayb=74" +*cayb 75/75: "%% FoomaticRIPOptionSetting: cayb=75" +*cayb 76/76: "%% FoomaticRIPOptionSetting: cayb=76" +*cayb 77/77: "%% FoomaticRIPOptionSetting: cayb=77" +*cayb 78/78: "%% FoomaticRIPOptionSetting: cayb=78" +*cayb 79/79: "%% FoomaticRIPOptionSetting: cayb=79" +*cayb 80/80: "%% FoomaticRIPOptionSetting: cayb=80" +*cayb 81/81: "%% FoomaticRIPOptionSetting: cayb=81" +*cayb 82/82: "%% FoomaticRIPOptionSetting: cayb=82" +*cayb 83/83: "%% FoomaticRIPOptionSetting: cayb=83" +*cayb 84/84: "%% FoomaticRIPOptionSetting: cayb=84" +*cayb 85/85: "%% FoomaticRIPOptionSetting: cayb=85" +*cayb 86/86: "%% FoomaticRIPOptionSetting: cayb=86" +*cayb 87/87: "%% FoomaticRIPOptionSetting: cayb=87" +*cayb 88/88: "%% FoomaticRIPOptionSetting: cayb=88" +*cayb 89/89: "%% FoomaticRIPOptionSetting: cayb=89" +*cayb 90/90: "%% FoomaticRIPOptionSetting: cayb=90" +*cayb 91/91: "%% FoomaticRIPOptionSetting: cayb=91" +*cayb 92/92: "%% FoomaticRIPOptionSetting: cayb=92" +*cayb 93/93: "%% FoomaticRIPOptionSetting: cayb=93" +*cayb 94/94: "%% FoomaticRIPOptionSetting: cayb=94" +*cayb 95/95: "%% FoomaticRIPOptionSetting: cayb=95" +*cayb 96/96: "%% FoomaticRIPOptionSetting: cayb=96" +*cayb 97/97: "%% FoomaticRIPOptionSetting: cayb=97" +*cayb 98/98: "%% FoomaticRIPOptionSetting: cayb=98" +*cayb 99/99: "%% FoomaticRIPOptionSetting: cayb=99" +*cayb 100/100: "%% FoomaticRIPOptionSetting: cayb=100" +*CloseUI: *cayb + +*CloseGroup: Color Adjust + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clp620 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLX-2160.ppd b/PPD/Samsung-CLX-2160.ppd new file mode 100644 index 0000000..9ca5906 --- /dev/null +++ b/PPD/Samsung-CLX-2160.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLX-2160-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLX-2160)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLX-2160" +*ShortNickName: "Samsung CLX-2160 foo2qpdl" +*NickName: "Samsung CLX-2160 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLX-2160 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clx2160 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLX-3160.ppd b/PPD/Samsung-CLX-3160.ppd new file mode 100644 index 0000000..7848993 --- /dev/null +++ b/PPD/Samsung-CLX-3160.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLX-3160-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLX-3160)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLX-3160" +*ShortNickName: "Samsung CLX-3160 foo2qpdl" +*NickName: "Samsung CLX-3160 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLX-3160 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clx3160 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLX-3175.ppd b/PPD/Samsung-CLX-3175.ppd new file mode 100644 index 0000000..8f7619d --- /dev/null +++ b/PPD/Samsung-CLX-3175.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLX-3175-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLX-3175)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLX-3175" +*ShortNickName: "Samsung CLX-3175 foo2qpdl" +*NickName: "Samsung CLX-3175 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLX-3175 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clx3175 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Samsung-CLX-3185.ppd b/PPD/Samsung-CLX-3185.ppd new file mode 100644 index 0000000..6493433 --- /dev/null +++ b/PPD/Samsung-CLX-3185.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Samsung-CLX-3185-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Samsung" +*Product: "(CLX-3185)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Samsung CLX-3185" +*ShortNickName: "Samsung CLX-3185 foo2qpdl" +*NickName: "Samsung CLX-3185 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Samsung-CLX-3185 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: clx3185 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Xerox-Phaser_3010.ppd b/PPD/Xerox-Phaser_3010.ppd new file mode 100644 index 0000000..0ef26ba --- /dev/null +++ b/PPD/Xerox-Phaser_3010.ppd @@ -0,0 +1,427 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Xerox-Phaser_3010-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Xerox" +*Product: "(Phaser 3010)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Xerox Phaser 3010" +*ShortNickName: "Xerox Phaser 3010 foo2hbpl2" +*NickName: "Xerox Phaser 3010 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Xerox-Phaser_3010 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Xerox-Phaser_3040.ppd b/PPD/Xerox-Phaser_3040.ppd new file mode 100644 index 0000000..7ded364 --- /dev/null +++ b/PPD/Xerox-Phaser_3040.ppd @@ -0,0 +1,427 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Xerox-Phaser_3040-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Xerox" +*Product: "(Phaser 3040)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Xerox Phaser 3040" +*ShortNickName: "Xerox Phaser 3040 foo2hbpl2" +*NickName: "Xerox Phaser 3040 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Xerox-Phaser_3040 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Xerox-Phaser_6110.ppd b/PPD/Xerox-Phaser_6110.ppd new file mode 100644 index 0000000..d6996cc --- /dev/null +++ b/PPD/Xerox-Phaser_6110.ppd @@ -0,0 +1,509 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Xerox-Phaser_6110-foo2qpdl.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2QPDL.PPD" +*Manufacturer: "Xerox" +*Product: "(Phaser 6110)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Xerox Phaser 6110" +*ShortNickName: "Xerox Phaser 6110 foo2qpdl" +*NickName: "Xerox Phaser 6110 Foomatic/foo2qpdl (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "MFG:Xerox;MDL:Phaser 6110;CMD:SPLC;DRV:Dfoo2qpdl,R1,M0,TF;" + +*driverName foo2qpdl/foo2qpdl: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2qpdl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Xerox-Phaser_6110 foo2qpdl +*FoomaticRIPCommandLine: "foo2qpdl-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p0 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p2 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p16 " +*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*FoomaticRIPOptionSetting PageSize=A6: "-p17 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p12 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p11 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p6 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p8 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p23 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p9 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p7 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p3 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p24 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p1 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea A6/A6: "9 12.00 288 408.00" +*ImageableArea B5iso/B5 (ISO): "9 12.00 489 696.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvC6/Env C6: "9 12.00 314 447.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension A6/A6: "297 420" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Upper / Tray 1: "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s4 " +*InputSlot Tray2/Lower / Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s5 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s1 " +*InputSlot Manual/Manual Select: "%% FoomaticRIPOptionSetting: InputSlot=Manual" +*FoomaticRIPOptionSetting InputSlot=Manual: "-s2 " +*InputSlot Multi/Multipurpose: "%% FoomaticRIPOptionSetting: InputSlot=Multi" +*FoomaticRIPOptionSetting InputSlot=Multi: "-s3 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType archive/Archive Paper: "%% FoomaticRIPOptionSetting: MediaType=archive" +*FoomaticRIPOptionSetting MediaType=archive: "-m12 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m3 " +*MediaType card/Card Stock: "%% FoomaticRIPOptionSetting: MediaType=card" +*FoomaticRIPOptionSetting MediaType=card: "-m5 " +*MediaType color/Color Paper: "%% FoomaticRIPOptionSetting: MediaType=color" +*FoomaticRIPOptionSetting MediaType=color: "-m4 " +*MediaType cotton/Cotton: "%% FoomaticRIPOptionSetting: MediaType=cotton" +*FoomaticRIPOptionSetting MediaType=cotton: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m7 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m6 " +*MediaType preprinted/Preprinted: "%% FoomaticRIPOptionSetting: MediaType=preprinted" +*FoomaticRIPOptionSetting MediaType=preprinted: "-m8 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m10 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m1 " +*MediaType thin/Thin Stock: "%% FoomaticRIPOptionSetting: MediaType=thin" +*FoomaticRIPOptionSetting MediaType=thin: "-m2 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m11 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: ph6110 +*ICM clp300/CLP-300: "%% FoomaticRIPOptionSetting: ICM=clp300" +*FoomaticRIPOptionSetting ICM=clp300: "-C10 -Gsamclp300-0.icm " +*ICM clp315/CLP-310/315: "%% FoomaticRIPOptionSetting: ICM=clp315" +*FoomaticRIPOptionSetting ICM=clp315: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp325/CLP-320/325: "%% FoomaticRIPOptionSetting: ICM=clp325" +*FoomaticRIPOptionSetting ICM=clp325: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp365/CLP-360/365: "%% FoomaticRIPOptionSetting: ICM=clp365" +*FoomaticRIPOptionSetting ICM=clp365: "-C10 -Gsamclp315-argyll-0.icm " +*ICM clp600/CLP-600: "%% FoomaticRIPOptionSetting: ICM=clp600" +*FoomaticRIPOptionSetting ICM=clp600: "-z1 " +*ICM clp610/CLP-610: "%% FoomaticRIPOptionSetting: ICM=clp610" +*FoomaticRIPOptionSetting ICM=clp610: "-z2 " +*ICM clp620/CLP-620: "%% FoomaticRIPOptionSetting: ICM=clp620" +*FoomaticRIPOptionSetting ICM=clp620: "-z3 " +*ICM clx2160/CLX-2160: "%% FoomaticRIPOptionSetting: ICM=clx2160" +*FoomaticRIPOptionSetting ICM=clx2160: "-C10 -Gsamclp300-0.icm " +*ICM clx3160/CLX-3160: "%% FoomaticRIPOptionSetting: ICM=clx3160" +*FoomaticRIPOptionSetting ICM=clx3160: "-C10 -Gsamclp300-0.icm " +*ICM clx3175/CLX-3175: "%% FoomaticRIPOptionSetting: ICM=clx3175" +*FoomaticRIPOptionSetting ICM=clx3175: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM clx3185/CLX-3185: "%% FoomaticRIPOptionSetting: ICM=clx3185" +*FoomaticRIPOptionSetting ICM=clx3185: "-C10 -Gsamclp315-argyll-0.icm && +" +*End +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM ph6110/Phaser 6110: "%% FoomaticRIPOptionSetting: ICM=ph6110" +*FoomaticRIPOptionSetting ICM=ph6110: "-C10 -Gsamclp300-0.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Xerox-Phaser_6115MFP.ppd b/PPD/Xerox-Phaser_6115MFP.ppd new file mode 100644 index 0000000..b643788 --- /dev/null +++ b/PPD/Xerox-Phaser_6115MFP.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Xerox-Phaser_6115MFP-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "Xerox" +*Product: "(Phaser 6115MFP)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Xerox Phaser 6115MFP" +*ShortNickName: "Xerox Phaser 6115MFP foo2lava" +*NickName: "Xerox Phaser 6115MFP Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Xerox-Phaser_6115MFP foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z0: "-z0 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: km2530-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Xerox-Phaser_6121MFP.ppd b/PPD/Xerox-Phaser_6121MFP.ppd new file mode 100644 index 0000000..b89a930 --- /dev/null +++ b/PPD/Xerox-Phaser_6121MFP.ppd @@ -0,0 +1,511 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Xerox-Phaser_6121MFP-foo2lava.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2LAVA.PPD" +*Manufacturer: "Xerox" +*Product: "(Phaser 6121MFP)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Xerox Phaser 6121MFP" +*ShortNickName: "Xerox Phaser 6121MFP foo2lava" +*NickName: "Xerox Phaser 6121MFP Foomatic/foo2lava (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2lava,R1,M0,TF;" + +*driverName foo2lava/foo2lava: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2lava.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 11.34 11.34 11.34 11.34 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Xerox-Phaser_6121MFP foo2lava +*FoomaticRIPCommandLine: "foo2lava-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption PrinterType: enum CmdLine A 110 +*FoomaticRIPOptionSetting PrinterType=lavaflow_z2: "-z2 " + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode ICM/Color - use ICM color profile: "%% FoomaticRIPOptionSetting: ColorMode=ICM" +*FoomaticRIPOptionSetting ColorMode=ICM: "-c -C10 " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 1200x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x600dpi/1200x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x600dpi" +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " +*Resolution 2400x600dpi/2400x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=2400x600dpi" +*FoomaticRIPOptionSetting Resolution=2400x600dpi: "-r2400x600 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p2 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p26 " +*PageSize Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*FoomaticRIPOptionSetting PageSize=Photo4x6: "-p835 " +*PageSize Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*FoomaticRIPOptionSetting PageSize=Photo10x15: "-p837 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p25 " +*PageSize B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*FoomaticRIPOptionSetting PageSize=B5iso: "-p65 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p45 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p81 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p91 " +*PageSize EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*FoomaticRIPOptionSetting PageSize=EnvC6: "-p92 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p90 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p80 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p1 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p3 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion Photo4x6/Photo Size 4x6 in: "%% FoomaticRIPOptionSetting: PageSize=Photo4x6" +*PageRegion Photo10x15/Photo Size 10x15 cm: "%% FoomaticRIPOptionSetting: PageSize=Photo10x15" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5iso/B5 (ISO): "%% FoomaticRIPOptionSetting: PageSize=B5iso" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvC6/Env C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "11.34 11.34 600.66 780.66" +*ImageableArea A4/A4: "11.34 11.34 583.66 830.66" +*ImageableArea Photo4x6/Photo Size 4x6 in: "11.34 11.34 276.66 420.66" +*ImageableArea Photo10x15/Photo Size 10x15 cm: "11.34 11.34 276.66 420.66" +*ImageableArea A5/A5: "11.34 11.34 408.66 583.66" +*ImageableArea B5iso/B5 (ISO): "11.34 11.34 486.66 696.66" +*ImageableArea B5jis/B5 (JIS): "11.34 11.34 506.66 715.66" +*ImageableArea Env10/Env #10: "11.34 11.34 285.66 672.66" +*ImageableArea EnvC5/Env C5: "11.34 11.34 447.66 637.66" +*ImageableArea EnvC6/Env C6: "11.34 11.34 311.66 447.66" +*ImageableArea EnvDL/Env DL: "11.34 11.34 299.66 611.66" +*ImageableArea EnvMonarch/Env Monarch: "11.34 11.34 267.66 528.66" +*ImageableArea Executive/Executive: "11.34 11.34 510.66 744.66" +*ImageableArea Legal/Legal: "11.34 11.34 600.66 996.66" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension Photo4x6/Photo Size 4x6 in: "288 432" +*PaperDimension Photo10x15/Photo Size 10x15 cm: "288 432" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5iso/B5 (ISO): "498 708" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvC6/Env C6: "323 459" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *InputSlot/Media Source: PickOne +*FoomaticRIPOption InputSlot: enum CmdLine A +*OrderDependency: 150 AnySetup *InputSlot +*DefaultInputSlot: Auto +*InputSlot Tray1/Tray 1 (Multipurpose): "%% FoomaticRIPOptionSetting: InputSlot=Tray1" +*FoomaticRIPOptionSetting InputSlot=Tray1: "-s1 " +*InputSlot Tray2/Tray 2: "%% FoomaticRIPOptionSetting: InputSlot=Tray2" +*FoomaticRIPOptionSetting InputSlot=Tray2: "-s4 " +*InputSlot Auto/Auto Select: "%% FoomaticRIPOptionSetting: InputSlot=Auto" +*FoomaticRIPOptionSetting InputSlot=Auto: "-s255 " +*CloseUI: *InputSlot + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m0 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m22 " +*MediaType glossy/Glossy: "%% FoomaticRIPOptionSetting: MediaType=glossy" +*FoomaticRIPOptionSetting MediaType=glossy: "-m28 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m26 " +*MediaType letterhead/Letterhead: "%% FoomaticRIPOptionSetting: MediaType=letterhead" +*FoomaticRIPOptionSetting MediaType=letterhead: "-m23 " +*MediaType postcard/Postcard: "%% FoomaticRIPOptionSetting: MediaType=postcard" +*FoomaticRIPOptionSetting MediaType=postcard: "-m25 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m27 " +*MediaType thick/Thick Stock: "%% FoomaticRIPOptionSetting: MediaType=thick" +*FoomaticRIPOptionSetting MediaType=thick: "-m20 " +*MediaType transparency/Transparency: "%% FoomaticRIPOptionSetting: MediaType=transparency" +*FoomaticRIPOptionSetting MediaType=transparency: "-m4 " +*CloseUI: *MediaType + +*OpenUI *Duplex/Duplex Printing: PickOne +*FoomaticRIPOption Duplex: enum CmdLine A +*OrderDependency: 210 AnySetup *Duplex +*DefaultDuplex: None +*Duplex DuplexNoTumble/Long Edge (Standard): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble" +*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: "-d2 " +*Duplex DuplexTumble/Short Edge (Flip): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble" +*FoomaticRIPOptionSetting Duplex=DuplexTumble: "-d3 " +*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None" +*FoomaticRIPOptionSetting Duplex=None: "-d1 " +*CloseUI: *Duplex + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: xerox-6121-default +*ICM km1600/km-1600-rgb-392-bpp1.icm: "%% FoomaticRIPOptionSetting: ICM=km1600" +*FoomaticRIPOptionSetting ICM=km1600: "-Gkm-1600-rgb-392-bpp1.icm " +*ICM km1600-default/km-16* (default): "%% FoomaticRIPOptionSetting: ICM=km1600-default" +*FoomaticRIPOptionSetting ICM=km1600-default: "-Gkm-1600-rgb-392-bpp1.&& +icm " +*End +*ICM km2530-default/km2530 (default): "%% FoomaticRIPOptionSetting: ICM=km2530-default" +*FoomaticRIPOptionSetting ICM=km2530-default: "-Gkm2530-jconner-d50.ic&& +m " +*End +*ICM km2530-jc/km2530-jconner-d50.icm: "%% FoomaticRIPOptionSetting: ICM=km2530-jc" +*FoomaticRIPOptionSetting ICM=km2530-jc: "-Gkm2530-jconner-d50.icm " +*ICM km2530_0/km2530_0.icm - Resolution 600: "%% FoomaticRIPOptionSetting: ICM=km2530_0" +*FoomaticRIPOptionSetting ICM=km2530_0: "-Gkm2530_0.icm " +*ICM km2530_1/km2530_1.icm - Resolution 1200: "%% FoomaticRIPOptionSetting: ICM=km2530_1" +*FoomaticRIPOptionSetting ICM=km2530_1: "-Gkm2530_1.icm " +*ICM km2530_2/km2530_2.icm - Resolution 2400: "%% FoomaticRIPOptionSetting: ICM=km2530_2" +*FoomaticRIPOptionSetting ICM=km2530_2: "-Gkm2530_2.icm " +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-Gnone.icm " +*ICM oki-c110-default/Oki C110 (default): "%% FoomaticRIPOptionSetting: ICM=oki-c110-default" +*FoomaticRIPOptionSetting ICM=oki-c110-default: "-Gkm-1600-rgb-392-bpp&& +1.icm " +*End +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-Gtesting.icm " +*ICM user1/File user1.icm: "%% FoomaticRIPOptionSetting: ICM=user1" +*FoomaticRIPOptionSetting ICM=user1: "-Guser1.icm " +*ICM user2/File user2.icm: "%% FoomaticRIPOptionSetting: ICM=user2" +*FoomaticRIPOptionSetting ICM=user2: "-Guser2.icm " +*ICM user3/File user3.icm: "%% FoomaticRIPOptionSetting: ICM=user3" +*FoomaticRIPOptionSetting ICM=user3: "-Guser3.icm " +*ICM user4/File user4.icm: "%% FoomaticRIPOptionSetting: ICM=user4" +*FoomaticRIPOptionSetting ICM=user4: "-Guser4.icm " +*ICM xerox-6121-default/Xerox Phaser 6121 (default): "%% FoomaticRIPOptionSetting: ICM=xerox-6121-default" +*FoomaticRIPOptionSetting ICM=xerox-6121-default: "-Gkm-1600-rgb-392-b&& +pp1.icm " +*End +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Xerox-WorkCentre_3045.ppd b/PPD/Xerox-WorkCentre_3045.ppd new file mode 100644 index 0000000..50aa203 --- /dev/null +++ b/PPD/Xerox-WorkCentre_3045.ppd @@ -0,0 +1,427 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Xerox-WorkCentre_3045-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Xerox" +*Product: "(WorkCentre 3045)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Xerox WorkCentre 3045" +*ShortNickName: "Xerox WorkCentre 3045 foo2hbpl2" +*NickName: "Xerox WorkCentre 3045 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Xerox-WorkCentre_3045 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*FoomaticRIPOption ColorMode: enum CmdLine A 120 +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " + +*OpenUI *Resolution/Resolution: PickOne +*FoomaticRIPOption Resolution: enum CmdLine A +*OrderDependency: 130 AnySetup *Resolution +*DefaultResolution: 600x600dpi +*Resolution 600x600dpi/600x600 dpi: "%% FoomaticRIPOptionSetting: Resolution=600x600dpi" +*FoomaticRIPOptionSetting Resolution=600x600dpi: "-r600x600 " +*Resolution 1200x1200dpi/1200x1200 dpi: "%% FoomaticRIPOptionSetting: Resolution=1200x1200dpi" +*FoomaticRIPOptionSetting Resolution=1200x1200dpi: "-r1200x1200 " +*CloseUI: *Resolution + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/PPD/Xerox-WorkCentre_6015.ppd b/PPD/Xerox-WorkCentre_6015.ppd new file mode 100644 index 0000000..ab94841 --- /dev/null +++ b/PPD/Xerox-WorkCentre_6015.ppd @@ -0,0 +1,441 @@ +*PPD-Adobe: "4.3" +*% +*% For information on using this, and to obtain the required backend +*% script, consult http://www.openprinting.org/ +*% +*% This file is published under the GNU General Public License +*% +*% PPD-O-MATIC (3.0.0 or newer) generated this PPD file. It is for use with +*% all programs and environments which use PPD files for dealing with +*% printer capability information. The printer must be configured with the +*% "foomatic-rip" backend filter script of Foomatic 3.0.0 or newer. This +*% file and "foomatic-rip" work together to support PPD-controlled printer +*% driver option access with arbitrary free software printer drivers and +*% printing spoolers. +*% +*% To save this file on your disk, wait until the download has completed +*% (the animation of the browser logo must stop) and then use the +*% "Save as..." command in the "File" menu of your browser or in the +*% pop-up manu when you click on this document with the right mouse button. +*% DO NOT cut and paste this file into an editor with your mouse. This can +*% introduce additional line breaks which lead to unexpected results. +*% +*% You may save this file as 'Xerox-WorkCentre_6015-foo2hbpl2.ppd' +*% +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "FOO2HBPL.PPD" +*Manufacturer: "Xerox" +*Product: "(WorkCentre 6015)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" +*%pprRIP: foomatic-rip other +*ModelName: "Xerox WorkCentre 6015" +*ShortNickName: "Xerox WorkCentre 6015 foo2hbpl2" +*NickName: "Xerox WorkCentre 6015 Foomatic/foo2hbpl2 (recommended)" +*PSVersion: "(3010.000) 550" +*PSVersion: "(3010.000) 651" +*PSVersion: "(3010.000) 652" +*PSVersion: "(3010.000) 653" +*PSVersion: "(3010.000) 704" +*PSVersion: "(3010.000) 705" +*PSVersion: "(3010.000) 800" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 +*1284DeviceID: "DRV:Dfoo2hbpl2,R1,M0,TF;" + +*driverName foo2hbpl2/foo2hbpl2: "" +*driverType F/Filter: "" +*driverUrl: "http://foo2hbpl.rkkda.com/" +*driverObsolete: False + + + + +*HWMargins: 9 12.00 9 12 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 135 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop pop pop +%% FoomaticRIPOptionSetting: PageSize=Custom" +*End +*FoomaticRIPOptionSetting PageSize=Custom: "-pCustom.%0x%1 " +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 0 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*FoomaticIDs: Xerox-WorkCentre_6015 foo2hbpl2 +*FoomaticRIPCommandLine: "foo2hbpl2-wrapper %A" + +*OpenGroup: General/General + +*OpenUI *Quality/Printing Quality: PickOne +*FoomaticRIPOption Quality: enum CmdLine A +*OrderDependency: 110 AnySetup *Quality +*DefaultQuality: normal +*Quality draft/Draft: "%% FoomaticRIPOptionSetting: Quality=draft" +*FoomaticRIPOptionSetting Quality=draft: " -t " +*Quality normal/Normal: "%% FoomaticRIPOptionSetting: Quality=normal" +*FoomaticRIPOptionSetting Quality=normal: " " +*CloseUI: *Quality + +*OpenUI *ColorMode/Color Mode: PickOne +*FoomaticRIPOption ColorMode: enum CmdLine A +*OrderDependency: 120 AnySetup *ColorMode +*DefaultColorMode: Monochrome +*ColorMode Color/Color: "%% FoomaticRIPOptionSetting: ColorMode=Color" +*FoomaticRIPOptionSetting ColorMode=Color: "-c " +*ColorMode Monochrome/Monochrome: "%% FoomaticRIPOptionSetting: ColorMode=Monochrome" +*FoomaticRIPOptionSetting ColorMode=Monochrome: " " +*CloseUI: *ColorMode + +*FoomaticRIPOption Resolution: enum CmdLine A 130 +*FoomaticRIPOptionSetting Resolution=1200x600dpi: "-r1200x600 " + +*OpenUI *PageSize/Page Size: PickOne +*FoomaticRIPOption PageSize: enum CmdLine A +*OrderDependency: 135 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*FoomaticRIPOptionSetting PageSize=Letter: "-p4 " +*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*FoomaticRIPOptionSetting PageSize=A4: "-p1 " +*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*FoomaticRIPOptionSetting PageSize=A5: "-p3 " +*PageSize B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*FoomaticRIPOptionSetting PageSize=B5jis: "-p2 " +*PageSize Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*FoomaticRIPOptionSetting PageSize=Env10: "-p9 " +*PageSize EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*FoomaticRIPOptionSetting PageSize=EnvC5: "-p11 " +*PageSize EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*FoomaticRIPOptionSetting PageSize=EnvDL: "-p12 " +*PageSize EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*FoomaticRIPOptionSetting PageSize=EnvMonarch: "-p10 " +*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*FoomaticRIPOptionSetting PageSize=Executive: "-p5 " +*PageSize FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*FoomaticRIPOptionSetting PageSize=FanfoldGermanLegal: "-p6 " +*PageSize Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*FoomaticRIPOptionSetting PageSize=Folio: "-p6 " +*PageSize Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*FoomaticRIPOptionSetting PageSize=Legal: "-p7 " +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 135 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter" +*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4" +*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5" +*PageRegion B5jis/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5jis" +*PageRegion Env10/Env #10: "%% FoomaticRIPOptionSetting: PageSize=Env10" +*PageRegion EnvC5/Env C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5" +*PageRegion EnvDL/Env DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL" +*PageRegion EnvMonarch/Env Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch" +*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive" +*PageRegion FanfoldGermanLegal/Fanfold German Legal: "%% FoomaticRIPOptionSetting: PageSize=FanfoldGermanLegal" +*PageRegion Folio/Folio: "%% FoomaticRIPOptionSetting: PageSize=Folio" +*PageRegion Legal/Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea Letter/Letter: "9 12.00 603 780.00" +*ImageableArea A4/A4: "9 12.00 586 830.00" +*ImageableArea A5/A5: "9 12.00 411 583.00" +*ImageableArea B5jis/B5 (JIS): "9 12.00 509 715.00" +*ImageableArea Env10/Env #10: "9 12.00 288 672.00" +*ImageableArea EnvC5/Env C5: "9 12.00 450 637.00" +*ImageableArea EnvDL/Env DL: "9 12.00 302 611.00" +*ImageableArea EnvMonarch/Env Monarch: "9 12.00 270 528.00" +*ImageableArea Executive/Executive: "9 12.00 513 744.00" +*ImageableArea FanfoldGermanLegal/Fanfold German Legal: "9 12.00 603 996.00" +*ImageableArea Folio/Folio: "9 12.00 603 924.00" +*ImageableArea Legal/Legal: "9 12.00 603 996.00" + +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "420 595" +*PaperDimension B5jis/B5 (JIS): "518 727" +*PaperDimension Env10/Env #10: "297 684" +*PaperDimension EnvC5/Env C5: "459 649" +*PaperDimension EnvDL/Env DL: "311 623" +*PaperDimension EnvMonarch/Env Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension FanfoldGermanLegal/Fanfold German Legal: "612 1008" +*PaperDimension Folio/Folio: "612 936" +*PaperDimension Legal/Legal: "612 1008" + +*OpenUI *MediaType/Media Type: PickOne +*FoomaticRIPOption MediaType: enum CmdLine A +*OrderDependency: 150 AnySetup *MediaType +*DefaultMediaType: plain +*MediaType plain/Plain Paper: "%% FoomaticRIPOptionSetting: MediaType=plain" +*FoomaticRIPOptionSetting MediaType=plain: "-m1 " +*MediaType plain2/Plain Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=plain2" +*FoomaticRIPOptionSetting MediaType=plain2: "-m8 " +*MediaType bond/Bond: "%% FoomaticRIPOptionSetting: MediaType=bond" +*FoomaticRIPOptionSetting MediaType=bond: "-m2 " +*MediaType bond2/Bond Side 2: "%% FoomaticRIPOptionSetting: MediaType=bond2" +*FoomaticRIPOptionSetting MediaType=bond2: "-m9 " +*MediaType envelope/Envelope: "%% FoomaticRIPOptionSetting: MediaType=envelope" +*FoomaticRIPOptionSetting MediaType=envelope: "-m6 " +*MediaType labels/Labels: "%% FoomaticRIPOptionSetting: MediaType=labels" +*FoomaticRIPOptionSetting MediaType=labels: "-m5 " +*MediaType lwcard/Light Weight Card: "%% FoomaticRIPOptionSetting: MediaType=lwcard" +*FoomaticRIPOptionSetting MediaType=lwcard: "-m3 " +*MediaType lwcard2/Light Weight Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwcard2" +*FoomaticRIPOptionSetting MediaType=lwcard2: "-m10 " +*MediaType lwgcard/Light Weight Glossy Card: "%% FoomaticRIPOptionSetting: MediaType=lwgcard" +*FoomaticRIPOptionSetting MediaType=lwgcard: "-m4 " +*MediaType lwgcard2/Light Weight Glossy Card Side 2: "%% FoomaticRIPOptionSetting: MediaType=lwgcard2" +*FoomaticRIPOptionSetting MediaType=lwgcard2: "-m11 " +*MediaType recycled/Recycled Paper: "%% FoomaticRIPOptionSetting: MediaType=recycled" +*FoomaticRIPOptionSetting MediaType=recycled: "-m7 " +*MediaType recycled2/Recycled Paper Side 2: "%% FoomaticRIPOptionSetting: MediaType=recycled2" +*FoomaticRIPOptionSetting MediaType=recycled2: "-m12 " +*CloseUI: *MediaType + +*OpenUI *Copies/Copies: PickOne +*FoomaticRIPOption Copies: int CmdLine A +*FoomaticRIPOptionPrototype Copies: "-n%s " +*FoomaticRIPOptionRange Copies: 1 100 +*OrderDependency: 220 AnySetup *Copies +*DefaultCopies: 1 +*FoomaticRIPDefaultCopies: 1 +*Copies 1/1: "%% FoomaticRIPOptionSetting: Copies=1" +*Copies 2/2: "%% FoomaticRIPOptionSetting: Copies=2" +*Copies 3/3: "%% FoomaticRIPOptionSetting: Copies=3" +*Copies 4/4: "%% FoomaticRIPOptionSetting: Copies=4" +*Copies 5/5: "%% FoomaticRIPOptionSetting: Copies=5" +*Copies 6/6: "%% FoomaticRIPOptionSetting: Copies=6" +*Copies 7/7: "%% FoomaticRIPOptionSetting: Copies=7" +*Copies 8/8: "%% FoomaticRIPOptionSetting: Copies=8" +*Copies 9/9: "%% FoomaticRIPOptionSetting: Copies=9" +*Copies 10/10: "%% FoomaticRIPOptionSetting: Copies=10" +*Copies 11/11: "%% FoomaticRIPOptionSetting: Copies=11" +*Copies 12/12: "%% FoomaticRIPOptionSetting: Copies=12" +*Copies 13/13: "%% FoomaticRIPOptionSetting: Copies=13" +*Copies 14/14: "%% FoomaticRIPOptionSetting: Copies=14" +*Copies 15/15: "%% FoomaticRIPOptionSetting: Copies=15" +*Copies 16/16: "%% FoomaticRIPOptionSetting: Copies=16" +*Copies 17/17: "%% FoomaticRIPOptionSetting: Copies=17" +*Copies 18/18: "%% FoomaticRIPOptionSetting: Copies=18" +*Copies 19/19: "%% FoomaticRIPOptionSetting: Copies=19" +*Copies 20/20: "%% FoomaticRIPOptionSetting: Copies=20" +*Copies 21/21: "%% FoomaticRIPOptionSetting: Copies=21" +*Copies 22/22: "%% FoomaticRIPOptionSetting: Copies=22" +*Copies 23/23: "%% FoomaticRIPOptionSetting: Copies=23" +*Copies 24/24: "%% FoomaticRIPOptionSetting: Copies=24" +*Copies 25/25: "%% FoomaticRIPOptionSetting: Copies=25" +*Copies 26/26: "%% FoomaticRIPOptionSetting: Copies=26" +*Copies 27/27: "%% FoomaticRIPOptionSetting: Copies=27" +*Copies 28/28: "%% FoomaticRIPOptionSetting: Copies=28" +*Copies 29/29: "%% FoomaticRIPOptionSetting: Copies=29" +*Copies 30/30: "%% FoomaticRIPOptionSetting: Copies=30" +*Copies 31/31: "%% FoomaticRIPOptionSetting: Copies=31" +*Copies 32/32: "%% FoomaticRIPOptionSetting: Copies=32" +*Copies 33/33: "%% FoomaticRIPOptionSetting: Copies=33" +*Copies 34/34: "%% FoomaticRIPOptionSetting: Copies=34" +*Copies 35/35: "%% FoomaticRIPOptionSetting: Copies=35" +*Copies 36/36: "%% FoomaticRIPOptionSetting: Copies=36" +*Copies 37/37: "%% FoomaticRIPOptionSetting: Copies=37" +*Copies 38/38: "%% FoomaticRIPOptionSetting: Copies=38" +*Copies 39/39: "%% FoomaticRIPOptionSetting: Copies=39" +*Copies 40/40: "%% FoomaticRIPOptionSetting: Copies=40" +*Copies 41/41: "%% FoomaticRIPOptionSetting: Copies=41" +*Copies 42/42: "%% FoomaticRIPOptionSetting: Copies=42" +*Copies 43/43: "%% FoomaticRIPOptionSetting: Copies=43" +*Copies 44/44: "%% FoomaticRIPOptionSetting: Copies=44" +*Copies 45/45: "%% FoomaticRIPOptionSetting: Copies=45" +*Copies 46/46: "%% FoomaticRIPOptionSetting: Copies=46" +*Copies 47/47: "%% FoomaticRIPOptionSetting: Copies=47" +*Copies 48/48: "%% FoomaticRIPOptionSetting: Copies=48" +*Copies 49/49: "%% FoomaticRIPOptionSetting: Copies=49" +*Copies 50/50: "%% FoomaticRIPOptionSetting: Copies=50" +*Copies 51/51: "%% FoomaticRIPOptionSetting: Copies=51" +*Copies 52/52: "%% FoomaticRIPOptionSetting: Copies=52" +*Copies 53/53: "%% FoomaticRIPOptionSetting: Copies=53" +*Copies 54/54: "%% FoomaticRIPOptionSetting: Copies=54" +*Copies 55/55: "%% FoomaticRIPOptionSetting: Copies=55" +*Copies 56/56: "%% FoomaticRIPOptionSetting: Copies=56" +*Copies 57/57: "%% FoomaticRIPOptionSetting: Copies=57" +*Copies 58/58: "%% FoomaticRIPOptionSetting: Copies=58" +*Copies 59/59: "%% FoomaticRIPOptionSetting: Copies=59" +*Copies 60/60: "%% FoomaticRIPOptionSetting: Copies=60" +*Copies 61/61: "%% FoomaticRIPOptionSetting: Copies=61" +*Copies 62/62: "%% FoomaticRIPOptionSetting: Copies=62" +*Copies 63/63: "%% FoomaticRIPOptionSetting: Copies=63" +*Copies 64/64: "%% FoomaticRIPOptionSetting: Copies=64" +*Copies 65/65: "%% FoomaticRIPOptionSetting: Copies=65" +*Copies 66/66: "%% FoomaticRIPOptionSetting: Copies=66" +*Copies 67/67: "%% FoomaticRIPOptionSetting: Copies=67" +*Copies 68/68: "%% FoomaticRIPOptionSetting: Copies=68" +*Copies 69/69: "%% FoomaticRIPOptionSetting: Copies=69" +*Copies 70/70: "%% FoomaticRIPOptionSetting: Copies=70" +*Copies 71/71: "%% FoomaticRIPOptionSetting: Copies=71" +*Copies 72/72: "%% FoomaticRIPOptionSetting: Copies=72" +*Copies 73/73: "%% FoomaticRIPOptionSetting: Copies=73" +*Copies 74/74: "%% FoomaticRIPOptionSetting: Copies=74" +*Copies 75/75: "%% FoomaticRIPOptionSetting: Copies=75" +*Copies 76/76: "%% FoomaticRIPOptionSetting: Copies=76" +*Copies 77/77: "%% FoomaticRIPOptionSetting: Copies=77" +*Copies 78/78: "%% FoomaticRIPOptionSetting: Copies=78" +*Copies 79/79: "%% FoomaticRIPOptionSetting: Copies=79" +*Copies 80/80: "%% FoomaticRIPOptionSetting: Copies=80" +*Copies 81/81: "%% FoomaticRIPOptionSetting: Copies=81" +*Copies 82/82: "%% FoomaticRIPOptionSetting: Copies=82" +*Copies 83/83: "%% FoomaticRIPOptionSetting: Copies=83" +*Copies 84/84: "%% FoomaticRIPOptionSetting: Copies=84" +*Copies 85/85: "%% FoomaticRIPOptionSetting: Copies=85" +*Copies 86/86: "%% FoomaticRIPOptionSetting: Copies=86" +*Copies 87/87: "%% FoomaticRIPOptionSetting: Copies=87" +*Copies 88/88: "%% FoomaticRIPOptionSetting: Copies=88" +*Copies 89/89: "%% FoomaticRIPOptionSetting: Copies=89" +*Copies 90/90: "%% FoomaticRIPOptionSetting: Copies=90" +*Copies 91/91: "%% FoomaticRIPOptionSetting: Copies=91" +*Copies 92/92: "%% FoomaticRIPOptionSetting: Copies=92" +*Copies 93/93: "%% FoomaticRIPOptionSetting: Copies=93" +*Copies 94/94: "%% FoomaticRIPOptionSetting: Copies=94" +*Copies 95/95: "%% FoomaticRIPOptionSetting: Copies=95" +*Copies 96/96: "%% FoomaticRIPOptionSetting: Copies=96" +*Copies 97/97: "%% FoomaticRIPOptionSetting: Copies=97" +*Copies 98/98: "%% FoomaticRIPOptionSetting: Copies=98" +*Copies 99/99: "%% FoomaticRIPOptionSetting: Copies=99" +*Copies 100/100: "%% FoomaticRIPOptionSetting: Copies=100" +*CloseUI: *Copies + +*CloseGroup: General + +*OpenGroup: Adjustment/Adjustment + +*OpenUI *halftone/Halftone Algorithm: PickOne +*FoomaticRIPOption halftone: enum CmdLine A +*OrderDependency: 110 AnySetup *halftone +*Defaulthalftone: default +*halftone default/Default: "%% FoomaticRIPOptionSetting: halftone=default" +*FoomaticRIPOptionSetting halftone=default: " " +*halftone as/Accurate Screens (better): "%% FoomaticRIPOptionSetting: halftone=as" +*FoomaticRIPOptionSetting halftone=as: " -qas " +*halftone standard/Standard: "%% FoomaticRIPOptionSetting: halftone=standard" +*FoomaticRIPOptionSetting halftone=standard: " -q1 " +*halftone wts/Well Tempered Screens (best): "%% FoomaticRIPOptionSetting: halftone=wts" +*FoomaticRIPOptionSetting halftone=wts: " -qwts " +*CloseUI: *halftone + +*OpenUI *ICM/ICM Color Profile: PickOne +*FoomaticRIPOption ICM: enum CmdLine A +*OrderDependency: 300 AnySetup *ICM +*DefaultICM: none +*ICM none/No ICM color correction: "%% FoomaticRIPOptionSetting: ICM=none" +*FoomaticRIPOptionSetting ICM=none: "-C10 -Gnone.icm " +*ICM testing/File testing.icm: "%% FoomaticRIPOptionSetting: ICM=testing" +*FoomaticRIPOptionSetting ICM=testing: "-C10 -Gtesting.icm " +*ICM testing2/File testing2.icm: "%% FoomaticRIPOptionSetting: ICM=testing2" +*FoomaticRIPOptionSetting ICM=testing2: "-C10 -Gtesting2.icm " +*ICM testing3/File testing3.icm: "%% FoomaticRIPOptionSetting: ICM=testing3" +*FoomaticRIPOptionSetting ICM=testing3: "-C10 -Gtesting3.icm " +*CloseUI: *ICM + +*CloseGroup: Adjustment + +*OpenGroup: Miscellaneous/Miscellaneous + +*OpenUI *NupOrient/N-up Orientation: PickOne +*FoomaticRIPOption NupOrient: enum CmdLine A +*OrderDependency: 200 AnySetup *NupOrient +*DefaultNupOrient: port +*NupOrient land/Landscape: "%% FoomaticRIPOptionSetting: NupOrient=land" +*FoomaticRIPOptionSetting NupOrient=land: "-ol " +*NupOrient port/Portrait: "%% FoomaticRIPOptionSetting: NupOrient=port" +*FoomaticRIPOptionSetting NupOrient=port: " " +*NupOrient sea/Seascape: "%% FoomaticRIPOptionSetting: NupOrient=sea" +*FoomaticRIPOptionSetting NupOrient=sea: "-os " +*CloseUI: *NupOrient + +*OpenUI *NupPages/N-up Printing: PickOne +*FoomaticRIPOption NupPages: enum CmdLine A +*OrderDependency: 200 AnySetup *NupPages +*DefaultNupPages: 1up +*NupPages 1up/1-up: "%% FoomaticRIPOptionSetting: NupPages=1up" +*FoomaticRIPOptionSetting NupPages=1up: " " +*NupPages 2up/2-up: "%% FoomaticRIPOptionSetting: NupPages=2up" +*FoomaticRIPOptionSetting NupPages=2up: "-2 " +*NupPages 3up/3-up: "%% FoomaticRIPOptionSetting: NupPages=3up" +*FoomaticRIPOptionSetting NupPages=3up: "-3 " +*NupPages 4up/4-up: "%% FoomaticRIPOptionSetting: NupPages=4up" +*FoomaticRIPOptionSetting NupPages=4up: "-4 " +*NupPages 6up/6-up: "%% FoomaticRIPOptionSetting: NupPages=6up" +*FoomaticRIPOptionSetting NupPages=6up: "-6 " +*NupPages 8up/8-up: "%% FoomaticRIPOptionSetting: NupPages=8up" +*FoomaticRIPOptionSetting NupPages=8up: "-8 " +*NupPages 10up/10-up: "%% FoomaticRIPOptionSetting: NupPages=10up" +*FoomaticRIPOptionSetting NupPages=10up: "-10 " +*NupPages 12up/12-up: "%% FoomaticRIPOptionSetting: NupPages=12up" +*FoomaticRIPOptionSetting NupPages=12up: "-12 " +*NupPages 14up/14-up: "%% FoomaticRIPOptionSetting: NupPages=14up" +*FoomaticRIPOptionSetting NupPages=14up: "-14 " +*NupPages 15up/15-up: "%% FoomaticRIPOptionSetting: NupPages=15up" +*FoomaticRIPOptionSetting NupPages=15up: "-15 " +*NupPages 16up/16-up: "%% FoomaticRIPOptionSetting: NupPages=16up" +*FoomaticRIPOptionSetting NupPages=16up: "-16 " +*NupPages 18up/18-up: "%% FoomaticRIPOptionSetting: NupPages=18up" +*FoomaticRIPOptionSetting NupPages=18up: "-18 " +*CloseUI: *NupPages + +*CloseGroup: Miscellaneous + + +*% Generic boilerplate PPD stuff as standard PostScript fonts and so on + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM + diff --git a/README b/README new file mode 100644 index 0000000..1b6d0ab --- /dev/null +++ b/README @@ -0,0 +1,232 @@ + --------------------------------------------------------------------- + Please read the "INSTALL" file to see how to install this software. + Please read the "INSTALL" file to see how to install this software. + Please read the "INSTALL" file to see how to install this software. + + Mac OS X users: also read the "INSTALL-osx.txt" file. + --------------------------------------------------------------------- + +GENERAL + FOO2ZJS + ------- + foo2zjs converts pbm (B/W) images and 1-bit-per-pixel cmyk images + (both produced by ghostscript) to Zenographics ZJ-stream format. There + is some information about the ZJS format at http://ddk.zeno.com. + + With foo2zjs, you can print to some HP and Minolta/QMS ZjStream + printers, such as these: + + - Konica Minolta magicolor 2430 DL B/W and color + - Minolta/QMS 2300 DL B/W and color + - Minolta/QMS 2200 DL B/W and color + - HP LaserJet P2035 B/W + - HP LaserJet M1319 MFP B/W + - HP LaserJet Pro P1606dn B/W + - HP LaserJet Pro P1566 B/W + - HP LaserJet Pro P1102 B/W + - HP LaserJet Pro CP1025nw B/W and color + - HP LaserJet 1022 B/W + - HP LaserJet 1020 B/W + - HP LaserJet 1018 B/W + - HP LaserJet 1005 B/W + - HP LaserJet 1000 B/W + + FOO2HP + ------ + foo2hp converts pbm (B/W) images and N-bit-per-pixel cmyk images + (both produced by ghostscript) to Zenographics ZJ-stream format. There + is some information about the ZJS format at http://ddk.zeno.com. + + With foo2hp, you can print to some HP ZjStream printers, such as these: + + - HP Color LaserJet CP1215 B/W and color + - HP Color LaserJet 1600 B/W and color + - HP Color LaserJet 2600n B/W and color + + FOO2LAVA + -------- + foo2lava converts Ghostscript pbmraw, bitcmyk, or pksmraw output for- + mats to monochrome or color LAVAFLOW or OPL streams, for driving the + Konica Minolta magicolor 2530 DL network color laser printer, the Kon- + ica Minolta magicolor 2480/2480 MF AIO printer, and other Zenographics- + based LAVAFLOW printers. + + - Konica Minolta magicolor 2530 DL B/W and color + - Konica Minolta magicolor 2490 MF B/W and color + - Xerox Phaser 6115MFP B/W and color + - Konica Minolta magicolor 2480 MF B/W and color + - Konica Minolta magicolor 1690MF B/W and color + - Konica Minolta magicolor 1680MF B/W and color + - Konica Minolta magicolor 1600W B/W and color + + FOO2OAK + ------- + foo2oak converts pbm (B/W) images and 1-bit-per-pixel cmyk images + (both produced by ghostscript) to Oak Technology (now Zoran) OAKT + format. + + With foo2oak, you can print to the HP LaserJet 1500 and possibly other + OAKT protocol printers, such as these: + + - HP LaserJet 1500 B/W and color, but only 1-bit per pixel + - Kyocera KM-2035 B/W + - Kyocera KM-1635 B/W + + FOO2QPDL + -------- + foo2qpdl converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats + to monochrome or color QPDL streams, for driving the Samsung CLP-300, + CLX-2160, CLP-600, CLX-3160, CLP-610 and the Xerox Phaser 6110 + QPDL printers. + + - Samsung CLP-300 B/W and color + - Samsung CLP-315 B/W and color + - Samsung CLP-325 B/W and color + - Samsung CLP-365 B/W and color + - Samsung CLP-600 B/W and color + - Samsung CLP-610 B/W and color + - Samsung CLP-2160 B/W and color + - Samsung CLP-3160 B/W and color + - Samsung CLP-3175 B/W and color + - Xerox Phaser 6110 B/W and color + - Xerox Phaser 6110MFP B/W and color + + FOO2SLX + ------- + foo2slx converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats + to monochrome or color SLX streams, for driving the Lexmark C500 net- + work color laser printer and other SLZ-based printers. The SLX stream + is a variant of ZjStream produced by Software Imaging K.K + + - Lexmark C500n B/W and color + + FOO2XQX + ------- + foo2xqx converts Ghostscript pbmraw to monochrome XQX streams, for + driving the HP LaserJet M1005 MFP and other XQX-based printers + + - HP LaserJet M1005 MFP + - HP LaserJet M1120 MFP + - HP LaserJet P1005 + - HP LaserJet P1006 + - HP LaserJet P1007 + - HP LaserJet P1008 + - HP LaserJet P1505/P1505n + - HP LaserJet P2014/P2014n + - HP LaserJet Pro M1212nf MFP + + FOO2HIPERC + ---------- + foo2hiperc converts Ghostscript pbmraw, bitcmyk, or pksmraw output for- + mats to monochrome or color HIPERC streams, for driving the Oki C3200, + C3300n, C3400n, C5100n, and the C5500n HIPERC printers. + + - Oki C301dn + - Oki C310dn + - Oki C511dn + - Oki C810dn + - Oki C3100n/C3200n + - Oki C3300n/C3400n + - Oki C3530n MFP + - Oki C5100n/C5150n/C5200n + - Oki C5500n/C5600n/C5800n + + FOO2HBPL2 + --------- + foo2hbpl2 converts Ghostscript pbmraw, bitcmyk, or pksmraw output for†+ mats to monochrome or color HBPL version 2 streams. + + - Dell 1355 Multifunction Color Printer + - Dell C1765 Multifunction Color Printer + - Epson AcuLaser CX17NF + - Epson AcuLaser M1400 + - Fuji Xerox DocuPrint CM205 Multifunction Color Printer + - Fuji Xerox DocuPrint CM215 Multifunction Color Printer + - Fuji Xerox DocuPrint M215 + - Fuji Xerox DocuPrint P205 + - Xerox Phaser 3010 + - Xerox Phaser 3040 + - Xerox WorkCentre 3045 Multifunction Monochrome Printer + - Xerox WorkCentre 6015 Multifunction Color Printer + +Please read the manual pages for more details on the program operation. + + $ acroread manual.pdf + +BUGS AND DEFICIENCIES + - Need to tune the manufacturer-supplied ICM color profiles to match the + characteristics of Ghostscript. + + - Need to figure out how to get near-invisible dithering out of Ghostscript + without affecting the colors. With GS 7.05, if you set -dDITHERING=150, + for example, the dithering becomes less visible but you get areas of + color blotches. No way to win. + + - Ghostscript 8.0 has worse color dithering compared to 7.05. The symptom + is slanted bands separated by 0.5 to 2mm, at a 30 degree angle. + + - Need to support a better input color file format which includes + explicit page boundary indications. The current use of the Ghostscript + "bitcmyk" format precludes having pages of different sizes within a + Postscript stream. + + - It is not entirely clear whether the JBIG-KIT compression library + produces compressed data compatible with all implementations of JBIG + in ZjStream printers. It is possible that bugs or subtle + implementation differences might result in incorrect printer behavior. + +AUTHORS + The foo2zjs engine program began life as Robert Szalai's 'pbmtozjs' + program. It also uses Markus Kuhn's JBIG-KIT compression library + (included, but available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/), + and Marti Maria's icc2ps program (included, but also available at + http://www.littlecms.com). + + The foo2zjs engine was overhauled by Rick Richardson to add color + support for the Minolta/QMS 2300DL, add command line options, limit + data chunk size to 65536 bytes, and other miscellaneous features. + Rick also contributed the zjsdecode program and the foomatic database + entries for the Minolta/QMS magicolor 2300 DL. + + The foo2* engine was written entirely from scratch by Rick Richardson. + + The latest version of foo2zjs can be found at: + + http://foo2zjs.rkkda.com + wget http://foo2zjs.rkkda.com/foo2zjs.tar.gz + +You can contact the current author at mailto://rick.richardson@comcast.net +I do not read or reply to HTML email or messages sent under an alias. + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +PATENTS +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licences for any patents. In those +countries where a patent licence is required for certain applications +of this software module, you will have to obtain such a licence +yourself. + +"So, as far as I understand currently (IANAPL), JBIG1 will be free of +known patents in the United States from 2012-04-04 onwards, at the +very latest, and outside the United States, JBIG1 will be patent free +already from 2011-02-25." - Markus Kuhn diff --git a/README.in b/README.in new file mode 100644 index 0000000..3ae0efb --- /dev/null +++ b/README.in @@ -0,0 +1,232 @@ + --------------------------------------------------------------------- + Please read the "INSTALL" file to see how to install this software. + Please read the "INSTALL" file to see how to install this software. + Please read the "INSTALL" file to see how to install this software. + + Mac OS X users: also read the "INSTALL-osx.txt" file. + --------------------------------------------------------------------- + +GENERAL + FOO2ZJS + ------- + foo2zjs converts pbm (B/W) images and 1-bit-per-pixel cmyk images + (both produced by ghostscript) to Zenographics ZJ-stream format. There + is some information about the ZJS format at http://ddk.zeno.com. + + With foo2zjs, you can print to some HP and Minolta/QMS ZjStream + printers, such as these: + + - Konica Minolta magicolor 2430 DL B/W and color + - Minolta/QMS 2300 DL B/W and color + - Minolta/QMS 2200 DL B/W and color + - HP LaserJet P2035 B/W + - HP LaserJet M1319 MFP B/W + - HP LaserJet Pro P1606dn B/W + - HP LaserJet Pro P1566 B/W + - HP LaserJet Pro P1102 B/W + - HP LaserJet Pro CP1025nw B/W and color + - HP LaserJet 1022 B/W + - HP LaserJet 1020 B/W + - HP LaserJet 1018 B/W + - HP LaserJet 1005 B/W + - HP LaserJet 1000 B/W + + FOO2HP + ------ + foo2hp converts pbm (B/W) images and N-bit-per-pixel cmyk images + (both produced by ghostscript) to Zenographics ZJ-stream format. There + is some information about the ZJS format at http://ddk.zeno.com. + + With foo2hp, you can print to some HP ZjStream printers, such as these: + + - HP Color LaserJet CP1215 B/W and color + - HP Color LaserJet 1600 B/W and color + - HP Color LaserJet 2600n B/W and color + + FOO2LAVA + -------- + foo2lava converts Ghostscript pbmraw, bitcmyk, or pksmraw output for- + mats to monochrome or color LAVAFLOW or OPL streams, for driving the + Konica Minolta magicolor 2530 DL network color laser printer, the Kon- + ica Minolta magicolor 2480/2480 MF AIO printer, and other Zenographics- + based LAVAFLOW printers. + + - Konica Minolta magicolor 2530 DL B/W and color + - Konica Minolta magicolor 2490 MF B/W and color + - Xerox Phaser 6115MFP B/W and color + - Konica Minolta magicolor 2480 MF B/W and color + - Konica Minolta magicolor 1690MF B/W and color + - Konica Minolta magicolor 1680MF B/W and color + - Konica Minolta magicolor 1600W B/W and color + + FOO2OAK + ------- + foo2oak converts pbm (B/W) images and 1-bit-per-pixel cmyk images + (both produced by ghostscript) to Oak Technology (now Zoran) OAKT + format. + + With foo2oak, you can print to the HP LaserJet 1500 and possibly other + OAKT protocol printers, such as these: + + - HP LaserJet 1500 B/W and color, but only 1-bit per pixel + - Kyocera KM-2035 B/W + - Kyocera KM-1635 B/W + + FOO2QPDL + -------- + foo2qpdl converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats + to monochrome or color QPDL streams, for driving the Samsung CLP-300, + CLX-2160, CLP-600, CLX-3160, CLP-610 and the Xerox Phaser 6110 + QPDL printers. + + - Samsung CLP-300 B/W and color + - Samsung CLP-315 B/W and color + - Samsung CLP-325 B/W and color + - Samsung CLP-365 B/W and color + - Samsung CLP-600 B/W and color + - Samsung CLP-610 B/W and color + - Samsung CLP-2160 B/W and color + - Samsung CLP-3160 B/W and color + - Samsung CLP-3175 B/W and color + - Xerox Phaser 6110 B/W and color + - Xerox Phaser 6110MFP B/W and color + + FOO2SLX + ------- + foo2slx converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats + to monochrome or color SLX streams, for driving the Lexmark C500 net- + work color laser printer and other SLZ-based printers. The SLX stream + is a variant of ZjStream produced by Software Imaging K.K + + - Lexmark C500n B/W and color + + FOO2XQX + ------- + foo2xqx converts Ghostscript pbmraw to monochrome XQX streams, for + driving the HP LaserJet M1005 MFP and other XQX-based printers + + - HP LaserJet M1005 MFP + - HP LaserJet M1120 MFP + - HP LaserJet P1005 + - HP LaserJet P1006 + - HP LaserJet P1007 + - HP LaserJet P1008 + - HP LaserJet P1505/P1505n + - HP LaserJet P2014/P2014n + - HP LaserJet Pro M1212nf MFP + + FOO2HIPERC + ---------- + foo2hiperc converts Ghostscript pbmraw, bitcmyk, or pksmraw output for- + mats to monochrome or color HIPERC streams, for driving the Oki C3200, + C3300n, C3400n, C5100n, and the C5500n HIPERC printers. + + - Oki C301dn + - Oki C310dn + - Oki C511dn + - Oki C810dn + - Oki C3100n/C3200n + - Oki C3300n/C3400n + - Oki C3530n MFP + - Oki C5100n/C5150n/C5200n + - Oki C5500n/C5600n/C5800n + + FOO2HBPL2 + --------- + foo2hbpl2 converts Ghostscript pbmraw, bitcmyk, or pksmraw output for†+ mats to monochrome or color HBPL version 2 streams. + + - Dell 1355 Multifunction Color Printer + - Dell C1765 Multifunction Color Printer + - Epson AcuLaser CX17NF + - Epson AcuLaser M1400 + - Fuji Xerox DocuPrint CM205 Multifunction Color Printer + - Fuji Xerox DocuPrint CM215 Multifunction Color Printer + - Fuji Xerox DocuPrint M215 + - Fuji Xerox DocuPrint P205 + - Xerox Phaser 3010 + - Xerox Phaser 3040 + - Xerox WorkCentre 3045 Multifunction Monochrome Printer + - Xerox WorkCentre 6015 Multifunction Color Printer + +Please read the manual pages for more details on the program operation. + + $ acroread manual.pdf + +BUGS AND DEFICIENCIES + - Need to tune the manufacturer-supplied ICM color profiles to match the + characteristics of Ghostscript. + + - Need to figure out how to get near-invisible dithering out of Ghostscript + without affecting the colors. With GS 7.05, if you set -dDITHERING=150, + for example, the dithering becomes less visible but you get areas of + color blotches. No way to win. + + - Ghostscript 8.0 has worse color dithering compared to 7.05. The symptom + is slanted bands separated by 0.5 to 2mm, at a 30 degree angle. + + - Need to support a better input color file format which includes + explicit page boundary indications. The current use of the Ghostscript + "bitcmyk" format precludes having pages of different sizes within a + Postscript stream. + + - It is not entirely clear whether the JBIG-KIT compression library + produces compressed data compatible with all implementations of JBIG + in ZjStream printers. It is possible that bugs or subtle + implementation differences might result in incorrect printer behavior. + +AUTHORS + The foo2zjs engine program began life as Robert Szalai's 'pbmtozjs' + program. It also uses Markus Kuhn's JBIG-KIT compression library + (included, but available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/), + and Marti Maria's icc2ps program (included, but also available at + http://www.littlecms.com). + + The foo2zjs engine was overhauled by Rick Richardson to add color + support for the Minolta/QMS 2300DL, add command line options, limit + data chunk size to 65536 bytes, and other miscellaneous features. + Rick also contributed the zjsdecode program and the foomatic database + entries for the Minolta/QMS magicolor 2300 DL. + + The foo2* engine was written entirely from scratch by Rick Richardson. + + The latest version of foo2zjs can be found at: + + ${URLZJS} + wget ${URLZJS}/foo2zjs.tar.gz + +You can contact the current author at mailto://rick.richardson@comcast.net +I do not read or reply to HTML email or messages sent under an alias. + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +PATENTS +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licences for any patents. In those +countries where a patent licence is required for certain applications +of this software module, you will have to obtain such a licence +yourself. + +"So, as far as I understand currently (IANAPL), JBIG1 will be free of +known patents in the United States from 2012-04-04 onwards, at the +very latest, and outside the United States, JBIG1 will be patent free +already from 2011-02-25." - Markus Kuhn diff --git a/align.ps b/align.ps new file mode 100644 index 0000000..2e0d816 --- /dev/null +++ b/align.ps @@ -0,0 +1,227 @@ +%!PS-Adobe-3.0 +%%Pages: 1 +%%Title: Alignment testpage for Ghostscript +%%Creator: Dieter Stueken () +%%BeginProlog +% Source: http://www.geocrawler.com/archives/3/378/1997/1/50/2064509/ + +/rectdraw % rectdraw - + { exch 4 -1 roll exch 2 array astore {0 moveto 0 PH rlineto stroke} forall + 2 array astore {0 exch moveto PW 0 rlineto stroke} forall + } bind def + +/arrow % arrow + { gsave translate rotate + 0 0 moveto 20 60 lineto -20 60 lineto closepath stroke + 0 0 moveto 0 80 lineto stroke + grestore + } bind def + +/triangle { % len ang x y + gsave translate dup rotate exch + 0 setlinewidth + 0 0 moveto + dup 0 lineto + dup 0.98 mul dup 10 div lineto + closepath + gsave 0.65 setgray fill grestore stroke + 100 10 moveto + 100 100 2 index { + gsave 0 -12 rmoveto 0 24 rlineto stroke grestore + gsave 0 24 rmoveto 10 div 2 index neg rotate + cvi =string cvs -6 -4 rmoveto show grestore + 100 10 rmoveto + } for + 0 0 moveto + 0 10 2 index { + pop + gsave 0 -6 rmoveto 0 12 rlineto stroke grestore + 10 1 rmoveto + } for + pop pop + grestore +} bind def + +/round {dup 3 1 roll mul cvi exch div} def + +/Show { % print value or unfold array + dup type /realtype eq {100 round} if + dup type /nulltype eq + { pop (-NULL-) show} + {dup type /arraytype eq + { ([ ) show {Show} forall ( ]) show} + {=string cvs show ( ) show} + ifelse } + ifelse +} bind def + +/Pval { % key val, move down 1 line + gsave exch + gsave Show (:) show grestore + 150 0 rmoveto Show + grestore + 0 -12 rmoveto +} bind def + +/showtext { + /S 80 string def + { currentfile S readline pop dup (%END) eq { pop exit } if + gsave show grestore 0 -12 rmoveto + } loop +} bind def + +/.knownget { 2 copy known { get true } { pop pop false } ifelse } bind def + +%%EndProlog +%%BeginSetup + +% you may try different settings here, but start with default settings first +%<< +% /.HWMargins [8.5 38.0 10.5 12.5] +% /Margins [-35 -51] +%>> setpagedevice +% + +%%EndSetup +%%Page: 1 + +% printout all values + +/Helvetica findfont +12 scalefont setfont +120 756 moveto + +showtext +Current settings: + +%END + +[/OutputDevice + /Margins + /.HWMargins + /.MarginsHWResolution + /HWResolution + /PageOffset + /PageSize +] { currentpagedevice 1 index + .knownget not {(-undefined-)} if Pval +} forall + +showtext + +Graphics alignment: + +Let the distance in inches from the left edge of the page to the +vertical line be H, and from the bottom edge to the horizontal line +be V. You may define the alignment of your page to the paper by + + << /Margins [x y] >> setpagedevice +with +%END + +gsave +/res currentpagedevice /.MarginsHWResolution .knownget not {600} if def +( x = (1 - H) * ) show res 0 get =string cvs show +(, y = (V - 1) * ) show res 1 get =string cvs show +grestore 0 -12 rmoveto + +showtext + +If set correctly the drawn arrows should extend into the +papers corners (not the clipping corners). After archieving +that, you may continue with the clipping edges. + +The clipping edges may be set by + + << /.HWMargins [ml mb mr mt] >> setpagedevice + +where [ml mb mr mt] are the distances of the clipped edges of +your graphics relative to the papers edges (left bottom right top) +measured in 1/72 inches. The wedge shaped rules may be used to +define these values very accurately as its intersections are in +1/72 inches. Take the value at the cutoff point from the scale to +the next clockwise edge. + +Start setting the margin values to all zero to see the natural hardware +clipping of your printer. You should then define the margins just as big +enough to keep the defined margins within your printers real hardware +clipping. This is archieved if you can see the thin line drawn all around +your defined margin. In addition the thin drawn arrows are just touching +the margin and should be totally visible. + +When you put this settings into your inititializing file "gs_init.ps" +you may want to apply this setting to a specific printer device only. +Here is an example of a printer specific setup: + +<< + /ljet4 << % make entries for some device + /.HWMargins [16.0 13.2 13.0 11.1] + /Margins [-132 -92] + >> + /ljet2p << % and for an other devices, too + /.HWMargins [14.4 6.8 14.5 17.5] + /Margins [-60 -23] + >> +>> currentpagedevice /OutputDevice get +.knownget {setpagedevice} if +%END + +% get page size +currentpagedevice /PageSize get aload pop +/PH exch def +/PW exch def + +1 setlinewidth +PW 0 0 0 triangle +PH 90 PW 0 triangle +PW 180 PW PH triangle +PH 270 0 PH triangle + +% get clipping values +clippath pathbbox newpath + +% show clipping box +gsave +1 setlinewidth % 0.65 setgray +4 copy rectdraw +grestore + +/CT exch def +/CR exch def +/CB exch def +/CL exch def + +% draw the alignment lines +0 setlinewidth +72 0 moveto 0 CT rlineto stroke +0 72 moveto CR 0 rlineto stroke + +2 setlinewidth +1 setlinejoin +1 setlinecap + +0 200 moveto 71 0 rlineto -24 -12 rlineto 0 24 rlineto 24 -12 rlineto stroke +34 206 moveto (H) show + +144 0 moveto 0 71 rlineto -12 -24 rlineto 24 0 rlineto -12 24 rlineto stroke +150 34 moveto (V) show + + +% draw arrows into to the papers corners +1 setlinewidth +45 +90 sub dup 0 0 arrow +90 sub dup 0 PH arrow +90 sub dup PW PH arrow +90 sub dup PW 0 arrow +pop %45 + +% draw arrows touching the clipping edges +0 setlinewidth + 0 PW 2 div CB arrow +180 PW 2 div CT arrow +-90 CL PH 2 div arrow + 90 CR PH 2 div arrow + +showpage +%%EOF \ No newline at end of file diff --git a/arm2hpdl.1in b/arm2hpdl.1in new file mode 100644 index 0000000..213d21b --- /dev/null +++ b/arm2hpdl.1in @@ -0,0 +1,44 @@ +.TH arm2hpdl 1 "${MODpage}" "arm2hpdl ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +arm2hpdl \- Add HP download header/trailer to an ARM ELF binary. +.SH SYNOPSIS +.B arm2hpdl +.RI [ options "] arm-binary.img > hpdl.dl" +.SH DESCRIPTION +.B arm2hpdl +adds an HP download header/trailer to an ARM ELF binary. +If the file already has an HP header, just copy it to stdout. +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Add an HPDL header to a HP LaserJet 1005. + +.nf +.ft CW +$ arm2hpdl sihp1005.img > sihp1005.dl +.ft P +.fi + +.SH FILES +.BR /usr/bin/arm2hpdl, +.BR /usr/share/foo2*/firmware/ +.SH SEE ALSO +.BR foo2zjs (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/arm2hpdl.c b/arm2hpdl.c new file mode 100644 index 0000000..956a860 --- /dev/null +++ b/arm2hpdl.c @@ -0,0 +1,251 @@ +#include +#include +#include +#include +#include +#include +#include + +/* + * Global option flags + */ +int Debug = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + if (fatal) + fprintf(stderr, "Error: "); + else + fprintf(stderr, "Warning: "); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal > 0) + exit(fatal); + else + return (fatal); +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" arm2hpdl [options] sihp1005.img > sihp1005.dl\n" +"\n" +" Add HP download header/trailer to an ARM ELF binary.\n" +" If the file already has an HP header, just copy it to stdout.\n" +"\n" +"Options:\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +/* + * Compute HP-style checksum + */ +long +docheck(long check, unsigned char *buf, int len) +{ + int i; + + if (len & 1) + error(1, "We should never see an odd number of bytes in this app.\n"); + + for (i = 0; i < len; i += 2) + check += (buf[i]<<0) | (buf[i+1]<<8); + return check; +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + int rc; + unsigned char buf[BUFSIZ]; + int len; + FILE *fp; + struct stat stats; + int size; + unsigned char elf[4]; + long check; + int iself; + int ispjl; + + while ( (c = getopt(argc, argv, "D:?h")) != EOF) + switch (c) + { + case 'D': + Debug = atoi(optarg); + break; + default: + usage(); + exit(1); + } + + argc -= optind; + argv += optind; + + if (argc != 1) + usage(); + + /* + * Open the file and figure out if its an ELF file + * by reading the first 4 bytes. + */ + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "Can't open '%s'\n", argv[0]); + + len = fread(elf, 1, sizeof(elf), fp); + if (len != 4) + error(1, "Premature EOF on '%s'\n", argv[0]); + + iself = 0; + ispjl = 0; + check = 0; + if (memcmp(elf, "\177ELF", 4) == 0) + { + /* + * Its an ELF executable file + */ + unsigned char filhdr[17] = + { + 0xbe, 0xef, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', + 0, 0, 0, 0, /* size goes here */ + 0, 0, 0, + }; + unsigned char sechdr[12] = + { + 0xc0, 0xde, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 0, 0 + }; + + iself = 1; + + /* + * Create and write the file header + */ + rc = stat(argv[0], &stats); + if (rc < 0) + error(1, "Can't stat '%s'\n", argv[0]); + + size = stats.st_size + 12 + 4; + + filhdr[10] = size>>24; + filhdr[11] = size>>16; + filhdr[12] = size>> 8; + filhdr[13] = size>> 0; + + rc = fwrite(filhdr, 1, sizeof(filhdr), stdout); + + /* + * Create and write the section header + */ + //memset(sechdr+2, 0, sizeof(sechdr)-2); + + check = docheck(check, sechdr, sizeof(sechdr)); + rc = fwrite(sechdr, 1, sizeof(sechdr), stdout); + } + else if (memcmp(elf, "\276\357AB", 4) == 0) + { + /* + * This file already has an HP download header. + * Don't change it. + */ + if (Debug) + error(0, "This file already has an HP header. " + "I will just copy it to stdout.\n"); + } + else if (memcmp(elf, "20", 2) == 0) + { + unsigned char hdr[8]; + + ispjl = 1; + printf("\033%%-12345X@PJL ENTER LANGUAGE=ACL\r\n"); + + rc = stat(argv[0], &stats); + if (rc < 0) + error(1, "Can't stat '%s'\n", argv[0]); + + size = stats.st_size - 8; + + hdr[0] = 0x00; + hdr[1] = 0xac; + hdr[2] = 0xc0; + hdr[3] = 0xde; + hdr[4] = size>>24; + hdr[5] = size>>16; + hdr[6] = size>> 8; + hdr[7] = size>> 0; + + rc = fwrite(hdr, 1, sizeof(hdr), stdout); + } + else + { + error(1, "I don't understand this file at all!\n"); + } + + /* + * Write out the 4 bytes we read earlier + */ + if (iself) + check = docheck(check, elf, sizeof(elf)); + rc = fwrite(elf, 1, sizeof(elf), stdout); + + /* + * Write out the remainder of the file + */ + while ( (len = fread(buf, 1, sizeof(buf), fp)) ) + { + if (iself) + check = docheck(check, buf, len); + rc = fwrite(buf, 1, len, stdout); + } + + fclose(fp); + + /* + * Add the file trailer + */ + if (iself) + { + /* + * Add in the checksum carries and complement it + */ + while (check >> 16) + check = (check&0xffff) + (check>>16); + check = ~check; + + putchar(0xff); + putchar(0xff); + putchar((check >> 0) & 0xff); + putchar((check >> 8) & 0xff); + debug(1, "checksum = %lx\n", check); + } + if (ispjl) + printf("\033%%-12345X"); + + exit(0); +} diff --git a/command2foo2lava-pjl.c b/command2foo2lava-pjl.c new file mode 100644 index 0000000..4bc4568 --- /dev/null +++ b/command2foo2lava-pjl.c @@ -0,0 +1,534 @@ +/* + * Konica-Minolta command filter for the Common UNIX Printing System. + * + * Copyright 2010 by Reinhold Kainhofer + * Based in part on commandtoepson: + * Copyright 1993-2000 by Easy Software Products. + * Based in part on commandtops: + * Copyright 2008 by Apple Inc. + * Based in part on snmp-supplies.c: + * Copyright 2008-2009 by Apple 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 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. + * + * Contents: + * + * main() - Main entry and command processing. + */ + +/* + * Include necessary headers... + */ + +#include +#include +#include +#include +#include +#include +#include + + +inline int +max(int a, int b) +{ + return a > b ? a : b; +} + + +/* + * Macros... + */ + +#define pwrite(s,n) fwrite((s), 1, (n), stdout) + +void report_levels(int negate); +void auto_configure(void); + +/* + * 'main()' - Main entry and processing of driver. + */ + +int /* O - Exit status */ +main(int argc, /* I - Number of command-line arguments */ + char *argv[]) /* I - Command-line arguments */ +{ + FILE *fp; /* Command file */ + char line[1024], /* Line from file */ + *lineptr; /* Pointer into line */ + ppd_file_t *ppd; + ppd_attr_t *attr; + int negate = 1; + + /* + * Check for valid arguments... + */ + if (argc < 6 || argc > 7) + { + /* + * We don't have the correct number of arguments; write an error message + * and return. + */ + fprintf(stderr, "ERROR: %s job-id user title copies options [file]\n", + argv[0]); + return (1); + } + + /* + * Get the negate parm from the PPD file + */ + ppd = ppdOpenFile(getenv("PPD")); + if (ppd) + { + attr = ppdFindAttr(ppd, "foo2zjsNegateMarkerLevels", NULL); + if (attr && strcmp(attr->value, "False") == 0) + negate = 0; + ppdClose(ppd); + } + fprintf(stderr, "DEBUG: foo2zjsNegateMarkerLevels=%d\n", negate); + + /* + * Open the command file as needed... + */ + if (argc == 7) + { + if ((fp = fopen(argv[6], "r")) == NULL) + { + perror("ERROR: Unable to open command file - "); + return (1); + } + } + else + fp = stdin; + + /* + * Read the commands from the file and send the appropriate commands... + */ + while (fgets(line, sizeof(line), fp) != NULL) + { + // Drop trailing newline... + lineptr = line + strlen(line) - 1; + if (*lineptr == '\n') + *lineptr = '\0'; + + // Skip leading whitespace... + for (lineptr = line; isspace(*lineptr); lineptr++); + + // Skip comments and blank lines... + if (*lineptr == '#' || !*lineptr) + continue; + + // Parse the command... + if (strncasecmp(lineptr, "AutoConfigure", 13) == 0) + { + // Retrieve the settings from the printer and change the PPD + // according + // to the installed options + // TODO: This is not fully implemented! + // auto_configure (); + } + else if (strncasecmp(lineptr, "ReportStatus", 12) == 0) + { + // Report Status... + // pwrite("\033%-12345X@PJL INFO STATUS\015\012", 27); + // pwrite("\033%-12345X", 9); + + // TODO: Read back-channel data + // TODO: Parse back-channel data + // TODO: Feed parsed data to the scheduller + + } + else if (strncasecmp(lineptr, "ReportLevels", 12) == 0) + { + // Report ink levels... + report_levels(negate); + } + else + fprintf(stderr, "ERROR: Invalid printer command \"%s\"!\n", + lineptr); + } + + /* + * Close the command file and return... + */ + if (fp != stdin) + fclose(fp); + + return (0); +} + + + +/**************************************************************************** + * Dealing with supplies * + ****************************************************************************/ + + +#define CUPS_MAX_SUPPLIES 32 /* Maximum number of supplies for a + * printer */ +#define CUPS_MAX_TEXTLEN 155 /* Maximum length of supply names */ + +typedef struct Supply /**** Printer supply data ****/ +{ + char id[CUPS_MAX_TEXTLEN], /* ID used in the response */ + name[CUPS_MAX_TEXTLEN], /* Name of supply */ + color[8], /* Color: "#RRGGBB" or "none" */ + type[CUPS_MAX_TEXTLEN]; /* Type of supply, e.g. toner */ + int capacity, /* Maximum capacity */ + level; /* Current level value */ +} Supply; + +static const char *const default_supplies[10][4] = +{ + { "B", "Blue", "#0000FF", "toner" }, + { "C", "Cyan", "#00FFFF", "toner" }, + { "G", "Green", "#00FF00", "toner" }, + { "K", "Black", "#000000", "toner" }, + { "M", "Magenta", "#FF00FF", "toner" }, + { "R", "Red", "#FF0000", "toner" }, + { "W", "White", "#FFFFFF", "toner" }, + { "Y", "Yellow", "#FFFF00", "toner" }, + { "TRSBELT", "Transfer unit", "#808080", "transferUnit" }, + { "FUSER", "Fuser", "#808080", "fuser" }, +}; + + +/* + * Find the supply information with given ID in the list of supplies. If not + * found, add a new entry with defaults as specified in default_supplies + */ +int +locate_supply_information(Supply * supplies, int num_supplies, int max_supplies, + const char *id) +{ + // Check whether we find it in the current list: + int pos = 0; + for (pos = 0; pos < num_supplies; ++pos) + { + if (!strcmp(supplies[pos].id, id)) + { + return pos; + } + } + // Not found, create new entry: + if (num_supplies >= max_supplies) + { + // No space left in supplies! + return -1; + } + pos = num_supplies; + strcpy(supplies[pos].id, id); + int deflen = + (int) (sizeof(default_supplies) / sizeof(default_supplies[0])); + int k; + for (k = 0; k < deflen; k++) + { + if (!strcmp(default_supplies[k][0], id)) + { // Found the defaults entry! + // Initialize to defaults from default_supplies: + strcpy(supplies[pos].name, default_supplies[k][1]); + strcpy(supplies[pos].color, default_supplies[k][2]); + strcpy(supplies[pos].type, default_supplies[k][3]); + supplies[pos].capacity = 0; + supplies[pos].level = 0; + break; + } + } + return pos; +}; + + +void +report_levels(int negate) +{ + // Buffer for the data + char buffer[8192]; + ssize_t bytes; + + // Check whether we can get a response from the printer at all: + int datalen = 1; + if (cupsSideChannelDoRequest(CUPS_SC_CMD_GET_BIDI, buffer, &datalen, + 30.0) != CUPS_SC_STATUS_OK || + buffer[0] != CUPS_SC_BIDI_SUPPORTED) + { + fputs("DEBUG: Unable to retrieve supply status from printer - no " + "bidirectional I/O available!\n", stderr); + return; + } + + // The actual PJL request + pwrite("\033%-12345X@PJL INFO DSTATUS\015\012", 28); + pwrite("\033%-12345X", 9); + fflush(stdout); + + // RER: 07/20/10 - Sleep for a bit! + sleep(5); + + // Ask the backend to send all data NOW: + datalen = 0; + cupsSideChannelDoRequest(CUPS_SC_CMD_DRAIN_OUTPUT, buffer, &datalen, 5.0); + + // Read back the data from the printer + bytes = cupsBackChannelRead(buffer, sizeof(buffer) - 1, 5.0); + buffer[bytes] = '\0'; + + if (strncmp(buffer, "@PJL INFO DSTATUS", 17)) + { + fprintf(stderr, + "DEBUG: Printer does not return a proper PJL DSTATUS response.\n"); + fprintf(stderr, "DEBUG: Got %d bytes: %s\n", (int) bytes, buffer); + return; + } + + // fprintf (stderr, "DEBUG: Got %d bytes: %s\n", bytes, buffer); + + int num_supplies = 0; /* Number of supplies found */ + Supply supplies[CUPS_MAX_SUPPLIES]; /* Supply information */ + + // Parse the returned data + // + // FORMAT is (with K,C,M,Y as color abbreviations): + // + // @PJL INFO DSTATUS + // CODE=600100 + // CONSUMETONERK=16 + // [...] + // CONSUMETRSBELT=2 + // CONSUMEFUSER=0 + // CONSUMETONERTYPEK=1000 + // [...] + // CONSUMETONERINSTALLY=YES + // \0x0c + const char *pos = buffer; + char supply[255]; + int sindex = 0; + while ((pos = strstr(pos, "CONSUME"))) + { + sindex = -1; + pos += 7; + if (!strncmp(pos, "TONERTYPE", 9)) + { + pos += 9; + supply[0] = pos[0]; + supply[1] = '\0'; + pos += 2; + sindex = + locate_supply_information(supplies, num_supplies, + CUPS_MAX_SUPPLIES, supply); + if (sindex >= 0) + { + num_supplies = max(sindex + 1, num_supplies); + supplies[sindex].capacity = atoi(pos); + } + + } + else if (!strncmp(pos, "IMGDRUM", 7)) + { + pos += 7; + // Don't do anything, this is just dummy information! + + } + else if (!strncmp(pos, "TONERCOUNTERFEIT", 16)) + { + pos += 16; + // Don't do anything, this is just dummy information! + + } + else if (!strncmp(pos, "TONERINSTALL", 12)) + { + pos += 12; + // Don't do anything, this is just dummy information! + + } + else if (!strncmp(pos, "TONER", 5)) + { + pos += 5; + supply[0] = pos[0]; + supply[1] = '\0'; + pos += 2; + sindex = + locate_supply_information(supplies, num_supplies, + CUPS_MAX_SUPPLIES, supply); + // fprintf (stderr, "DEBUG: sindex %d\n", sindex); + if (sindex >= 0) + { + num_supplies = max(sindex + 1, num_supplies); + supplies[sindex].level = negate ? 100 - atoi(pos) : atoi(pos); + } + + } + else if (!strncmp(pos, "FUSER", 5)) + { + pos += 6; + sindex = + locate_supply_information(supplies, num_supplies, + CUPS_MAX_SUPPLIES, "FUSER"); + if (sindex >= 0) + { + num_supplies = max(sindex + 1, num_supplies); + supplies[sindex].level = negate ? 100 - atoi(pos) : atoi(pos); + } + + } + else if (!strncmp(pos, "TRSBELT", 7)) + { + pos += 8; + sindex = + locate_supply_information(supplies, num_supplies, + CUPS_MAX_SUPPLIES, "TRSBELT"); + if (sindex >= 0) + { + num_supplies = max(sindex + 1, num_supplies); + supplies[sindex].level = negate ? 100 - atoi(pos) : atoi(pos); + } + + } + else + { + fprintf(stderr, "DEBUG: Supply return entry did not match any " + "known keyword: %s\n", pos); + } + } + + // Create the output: + if (num_supplies) + { + int k; + + // Marker types: + strcpy(buffer, supplies[0].type); + for (k = 1; k < num_supplies; ++k) + sprintf(buffer, "%s,%s", buffer, supplies[k].type); + fprintf(stderr, "ATTR: marker-types=%s\n", buffer); + + // Marker names + buffer[0] = '\0'; + for (k = 0; k < num_supplies; ++k) + { + if (k > 0) + strcat(buffer, ","); + if (supplies[k].capacity > 0) + sprintf(buffer, "%s\"%s (Max %d)\"", buffer, supplies[k].name, + supplies[k].capacity); + else + sprintf(buffer, "%s\"%s\"", buffer, supplies[k].name); + } + fprintf(stderr, "ATTR: marker-names=%s\n", buffer); + + // Marker colors + strcpy(buffer, supplies[0].color); + for (k = 1; k < num_supplies; ++k) + sprintf(buffer, "%s,%s", buffer, supplies[k].color); + fprintf(stderr, "ATTR: marker-colors=%s\n", buffer); + + // Marker levels + sprintf(buffer, "%d", supplies[0].level); + for (k = 1; k < num_supplies; ++k) + sprintf(buffer, "%s,%d", buffer, supplies[k].level); + fprintf(stderr, "ATTR: marker-levels=%s\n", buffer); + + } + else + fprintf(stderr, + "DEBUG: Unable to extract supply information from the " + "printer's response.\n"); + + // fprintf (stderr, "STATE: \n"); +} + + + + +/**************************************************************************** + * Auto-configuration of printer settings * + ****************************************************************************/ + + +void +auto_configure() +{ + // Buffer for the data + char buffer[8192]; + ssize_t bytes; + int datalen = 1; + + // Check whether we can get a response from the printer at all: + if (cupsSideChannelDoRequest(CUPS_SC_CMD_GET_BIDI, buffer, &datalen, + 30.0) != CUPS_SC_STATUS_OK || + buffer[0] != CUPS_SC_BIDI_SUPPORTED) + { + fputs("DEBUG: Unable to auto-configure printer - no " + "bidirectional I/O available!\n", stderr); + return; + } + + // The actual PJL request + pwrite("\033%-12345X@PJL INFO CONFIG\015\012", 28); + pwrite("\033%-12345X", 9); + fflush(stdout); + + // Ask the backend to send all data NOW: + datalen = 0; + cupsSideChannelDoRequest(CUPS_SC_CMD_DRAIN_OUTPUT, buffer, &datalen, 5.0); + + // Read back the data from the printer + bytes = cupsBackChannelRead(buffer, sizeof(buffer) - 1, 5.0); + buffer[bytes] = '\0'; + + if (strncmp(buffer, "@PJL INFO CONFIG", 17)) + { + fprintf(stderr, + "DEBUG: Printer does not return a proper PJL CONFIG response.\n"); + fprintf(stderr, "DEBUG: Got %d bytes: %s\n", (int) bytes, buffer); + return; + } + + // Parse the returned data + // + // FORMAT is: + // + // @PJL INFO CONFIG + // IN TRAYS [1 ENUMERATED] + // INTRAY1 MP + // LANGUAGES [1 ENUMERATED] + // LAVAFLOW + // USTATUS [6 ENUMERATED] + // DEVICE + // JOB + // PAGE + // TIMED + // DDEVICE + // DTIMED + // TRAY2=NOTINSTALLED [2 ENUMERATED] + // INSTALLED + // NOTINSTALLED + // TRAY3=NOTINSTALLED [2 ENUMERATED] + // INSTALLED + // NOTINSTALLED + // DUPLEX=INSTALLED [2 ENUMERATED] + // INSTALLED + // NOTINSTALLED + // TONER=TONEROK [3 ENUMERATED] + // TONEROK + // TONERDEAD + // TONERNOTGENUINE + // PRINTINGUNIT=PRINTINGUNITOK [2 ENUMERATED] + // PRINTINGUNITOK + // PRINTINGUNITNOTGENUINE + // MEMORY=134217728 + // \033 + + // TODO +} diff --git a/crd/qpdl/black-text.ps b/crd/qpdl/black-text.ps new file mode 100644 index 0000000..d3f3136 --- /dev/null +++ b/crd/qpdl/black-text.ps @@ -0,0 +1,117 @@ +%% +%% Here is some Postscript for setting the gamma values using table lookup +%% +%% These tables don't do anything currently. Its a straight 1-1 mapping. +%% +%% But maybe somebody will figure out some tables if I provide the template :-) +%% +%% This is for fooling around with color correction. None of the +%% values in this file are tuned for the 2300 DL yet. So far, I +%% have not come across a *process* for determining what should go +%% into this file. +%% +%% This defines a set of four PS procedures, one for each of C, M, Y, and K, +%% whose input is a value in the range 0.0..1.0, and whose output should be +%% a corrected value in the same range. +%% + +%% +%% Lookup table for Cyan +%% +/c_lut [ +%The first value is for the level 0 (darker) %levels... +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def + +%% +%% Lookup table for Magenta +%% +/m_lut [ +%The first value is for the level 0 (darker) %levels... +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def + +%% +%% Lookup table for Yellow +%% +/y_lut [ +%The first value is for the level 0 (darker) %levels... +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def + +%% +%% Lookup table for Black +%% +/k_lut [ +%The first value is for the level 0 (darker) %levels... +120 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def +{255 mul 0.5 add cvi c_lut exch get 255 div} +{255 mul 0.5 add cvi m_lut exch get 255 div} +{255 mul 0.5 add cvi y_lut exch get 255 div} +{255 mul 0.5 add cvi k_lut exch get 255 div} +setcolortransfer diff --git a/crd/zjs/2300w-1200@150-l250-kx,ucr100,0-per.crd b/crd/zjs/2300w-1200@150-l250-kx,ucr100,0-per.crd new file mode 100644 index 0000000..fe056d2 --- /dev/null +++ b/crd/zjs/2300w-1200@150-l250-kx,ucr100,0-per.crd @@ -0,0 +1,4684 @@ +<< +/ColorRenderingType 1 +/BlackPoint [0.000000 0.000000 0.000000] +/WhitePoint [0.964200 1.000000 0.824900] +% Bradford Cone Space +/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] +/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ] +% VonKries-like transform in Bradford Cone Space +/TransformPQR [ +{exch pop exch 3 get mul exch pop exch 3 get div} bind +{exch pop exch 4 get mul exch pop exch 4 get div} bind +{exch pop exch 5 get mul exch pop exch 5 get div} bind +] +/EncodeLMN [ +{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +] +/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] +/EncodeABC [ +{ 116 mul 16 sub 100 div } bind +{ 500 mul 128 add 255 div } bind +{ 200 mul 128 add 255 div } bind +] +/RenderTable [ 33 33 33 [ +<170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00 +D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A +00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D717 +0A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7170A00D7 +170A00D7170A00D7170A00D7170A00D7> + + + + + + + + + +<9D3700009D3700009D380000A13B0000A73F0000AE420000B6440000BE4500 +01C341000CC935001AC826002ABC140040AE010655AD001C51AF00314DB600 +4C4BB9006A48AC008747A000A3429D00D63B9803FF349502FF339502FF3395 +02FF339502FF339502FF339502FF339502FF339502FF339502FF339502FF33 +9502FF339502FF339D3700009D3800009E390000A13C0000A73F0000AF4200 +00B6450000BE460001C442000CCA37001ACA280029BD16003FAF020555AD00 +1A52AF00304DB6004A4CB9006949AC008648A000A2439C00D33C9803FF3595 +03FF339503FF339603FF339603FF339603FF339603FF339603FF339603FF33 +9603FF339603FF339603FF339603FF339D3800009D3800009E390000A13C00 +00A8400000AF430000B7450000BE470001C443000BCA390019CC2A0029BF18 +003EB1020456AE001953AF002E4EB600494CBA00674AAD008549A100A1449C +00D13D9904FF359603FF349603FF349603FF349603FF349603FF349603FF34 +9603FF349603FF349603FF349603FF349603FF349603FF349D3800009E3900 +009E3A0000A23D0000A8400000AF430000B7460000BE480001C444000BCB3A +0019CE2C0028C11A003DB2030256AE001754AF002D4FB500474DBA00664BAE +00844AA100A0469C00CE3E9A04FF369603FF359604FF359604FF359604FF35 +9604FF359604FF359604FF359604FF359604FF359604FF359604FF359604FF +359E3900009E3900009E3A0000A23D0000A8410000AF440000B7460000BE48 +0000C545000ACB3C0018CF2D0027C31C003CB4030157AF001655AF002B50B5 +00454EBB00644CAE00824BA2009F479C00CB3F9A05FF379704FF359704FF35 +9704FF359704FF359704FF359704FF359704FF359704FF359704FF359704FF +359704FF359704FF359E3900009E3A00009F3B0000A23E0000A8410000AF44 +0000B6470000BE490000C546000ACC3E0017D0300026C51E003AB6050056AF +001456B0002A52B500434FBC00624DAF00804CA2009E489B00C8419B06FF37 +9705FF369705FF369705FF369705FF369705FF369705FF369705FF369705FF +369705FF369705FF369705FF369705FF369E3A00009F3B00009F3C0000A23E +0000A8420000AF450000B6470000BE4A0000C5480009CD400017D2320025C7 +200039B9080054B0001258B0002853B5004051BD00604EB0007E4EA3009D4A +9B00C5429D07FF389705FF379705FF379705FF379705FF379705FF379705FF +379705FF379705FF379705FF379705FF379705FF379705FF379F3B00009F3C +00009F3D0000A33F0000A8420000AF450000B6480000BE4A0000C6490008CE +420016D4350024CA230037BC0C0051B100105AB0002555B4003D52BD005D50 +B1007B4FA4009C4C9A00C0449E08FF399907FF379907FF379907FF379907FF +379907FF379907FF379907FF379907FF379907FF379907FF379907FF379907 +FF379F3C00009F3D0000A03D0000A3400000A8430000AE460000B6490000BE +4B0000C74B0007CF450015D6380023CE260035C010004FB2000D5BB1002357 +B3003A54BD005A51B2007851A5009A4E9A00BD46A10AFF3A9A09FF389A09FF +389A09FF389A09FF389A09FF389A09FF389A09FF389A09FF389A09FF389A09 +FF389A09FF389A09FF389F3D0000A03D0000A03E0000A3400000A8440000AE +470000B54A0000BD4C0000C74D0006D0480013D83C0021D12B0033C315004B +B5020A5CB2002059B3003656BD005554B3007553A70097509B00BA49A30BFF +3B9C0BFF389C0BFF389C0BFF389C0BFF389C0BFF389C0BFF389C0BFF389C0B +FF389C0BFF389C0BFF389C0BFF389C0BFF38A03D0000A03E0000A03F0000A3 +410000A8440000AE480000B54B0000BD4D0000C74E0005D04B0012D9410020 +D62F0031C61A0048BA04075CB2001C5BB3003258BD005156B5007055A80093 +529C00B74BA20AFF3E9E0EFF399E0EFF399E0EFF399E0EFF399E0EFF399E0E +FF399E0EFF399E0EFF399E0EFF399E0EFF399E0EFF399E0EFF39A03E0000A0 +3F0000A03F0000A3420000A8450000AE480000B54C0000BD4E0000C6500004 +D14E0010DB45001EDB35002ECB200044C007045CB400185EB3002E5ABC004B +59B7006C57AA008F559D00B44FA108FF42A011FF3AA011FF3AA011FF3AA011 +FF3AA011FF3AA011FF3AA011FF3AA011FF3AA011FF3AA011FF3AA011FF3AA0 +11FF3AA03F0000A1400000A1400000A3430000A8460000AD490000B44D0000 +BC4F0000C6520003D151000FDD4A001BE03C002CD0260041C70B015CB60013 +61B200295DBA00455BBB006659AC008A589800AF558601E6518B10FF45860E +FF47810DFE49810DFE49810DFE49810DFE49810DFE49810DFE49810DFE4981 +0DFE49810DFE49810DFE49A1400000A1410000A1410000A3440000A7470000 +AD4A0000B34E0000BB510000C5540002D154000DDE500019E3430028D82F00 +3CCA130057BA000D64B3002460AC003B629B0057668C017868730096665E00 +C0645500E4625300E3635000E3645000E3645000E3645000E3645000E36450 +00E3645000E3645000E3645000E3645000E364A1410000A1420000A1420000 +A3450000A7480000AC4B0000B34F0000BA520000C4560001D057000BDE5500 +16E74B0025DF390038CC1E0050B203046A8B0014717600287762003C765500 +56784A0078763F00AA723900E16E3700E16F3500E0703500E0703500E07035 +00E0703500E0703500E0703500E0703500E0703500E0703500E070A1420000 +A1430000A1430000A3460000A6490000AB4C0000B14F0000B9530000C35700 +00CE5A0008DD5A0014EA530021E7430033B3310049891D0067570500803E00 +13873000268526003B871F0057861A007D831903B37D1705B27D1606B27D16 +06B27D1606B27D1606B27D1606B27D1606B27D1606B27D1606B27D1606B27D +1606B27DA1440000A1440000A1450000A3470000A64A0000AA4D0000B05100 +00B7550000C1590000CD5D0006DA5F0011DF5C001EBB56002F934500456D30 +005D431E00771509008F04071592010B2B8D000E458A1B2282704A49F74549 +4AF744494BF844494BF844494BF844494BF844494BF844494BF844494BF844 +494BF844494BF844494BF844A1450000A1450000A1460000A3480000A54B00 +00A94E0000AF520000B6560000BF5B0000CA600003C8650010B969001C9E64 +002C7F5800405E4700573A36006F0E2201810022128700282A86002F4D833C +5AB44E4A61FF39405DF63F3B5BF2423B5BF2423B5BF2423B5BF2423B5BF242 +3B5BF2423B5BF2423B5BF2423B5BF2423B5BF242A1460000A1460000A14700 +00A2490000A44C0000A84F0000AD530000B4570000BD5D0000B7640005AC6C +00119F70001C8A700029736D003A5560005132500066093B007B003E147E00 +482D7C004E53772769A4514F7DFF245280FF1F5683FF1C5683FF1C5683FF1C +5683FF1C5683FF1C5683FF1C5683FF1C5683FF1C5683FF1C5683FF1CA14700 +00A1470000A1480000A24A0000A44D0000A7500000AC540000B2590000AA61 +0000A169000A997200118D7800197D7D00236A800032517E004A2E6C005C08 +5A0074005E16730065326E006D596A117A92563991EE29358DFA2B318DFA2E +318DFA2E318DFA2E318DFA2E318DFA2E318DFA2E318DFA2E318DFA2E318DFA +2E318DFA2EA1480000A1480000A1490000A14B0000A34E0000A6510000AA55 +0000A05D000097650005906E000A8978000F7F810014718A001C618F00284B +8E003A2C86004D07790166007C186500853561008D585B008E83541EA6EC38 +1DA3FF371CA3FF371CA3FF371CA3FF371CA3FF371CA3FF371CA3FF371CA3FF +371CA3FF371CA3FF371CA3FF37A1490000A14A0000A14A0000A14C0000A24F +0000A4520000995900008F61000289690005847400077E7F0009758A000E6A +9500145A9D001E449F002D2C9F003E099701540096175600A7325200AE544B +00B782440EC9D23815CBFF3114CBFF3214CBFF3214CBFF3214CBFF3214CBFF +3214CBFF3214CBFF3214CBFF3214CBFF3214CBFF32A14A0000A14B0000A14B +0000A14D0000A1500000945600008A5D0001826400027D6E00027A79000373 +8500046A93000763A1000A55AC00153FB200232CBC002F11C2004100C31148 +00E52E4500E9503E10FF902F06FEAE3103FDC92F02FEC72F02FEC72F02FEC7 +2F02FEC72F02FEC72F02FEC72F02FEC72F02FEC72F02FEC72F02FEC72FA14C +0000A14C0000A14C0000A14E000092530000865A00017D6100007768000074 +7300006E7F0000678C0000629C00005FAF00005BC900033FCE00142CDC001F +1BF9002F04FF0D3A0CFF332D04FF492F13FF7E2209FF9F2502FFB12702FFB1 +2702FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FF +B12702FFB127A14D0000A14D0000A14D000092510000845700017A5D000073 +6400006D6D000069770000638400005C91000059A0000055B100004BC60006 +35D1001325E2002013FE002E01FF163415FF431E15FF631C10FF821E0AFFA0 +2000FFB22400FFB22300FFB22300FFB22300FFB22300FFB22300FFB22300FF +B22300FFB22300FFB22300FFB223A14E0000A24E0000935000008454000179 +590000705F00006A660000656F0000607B00005A8700005594000051A30000 +4CB300003FC500092CD400141EEA00200BFF032D00FF1E2D15FF4B1811FF67 +1A14FF86140AFFA01B00FFB12000FFB22000FFB22000FFB22000FFB22000FF +B22000FFB22000FFB22000FFB22000FFB22000FFB220A24E00009450000085 +5200007A5600006F5B000068610000626900005E730000587E0000538A0000 +4E9700004AA5000043B6000135C8000925D9001418F0001F02FF0B2A00FF24 +2712FF4F1411FF6B131CFF8B0206FF9F1800FFB11D00FFB41C00FFB41C00FF +B41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C95 +4F0000845200007A54000070570000675C0000606300005B6C000057760000 +528200004D8E0000489A000042A800003BBA00022CCD000A1FDF001411F500 +1F00FF14240AFF321813FF550D0CFF6C1218FF8A0004FF9D1500FFB11908FF +C71208FFC71208FFC71208FFC71208FFC71208FFC71208FFC71208FFC71208 +FFC71208FFC712845200007954000070560000675900005F5E00005A660000 +566F0000517A00004C86000046920000419E00003AAB000032C0000124D100 +0A18E5001408F7031F00FF1C1E0AFF37120DFF560D0CFF6E0B14FF880006FF +9A0E00FFAF1515FFE30415FFE30415FFE30415FFE30415FFE30415FFE30415 +FFE30415FFE30415FFE30415FFE304785400006F56000067570000605A0000 +5961000054690000507300004B7F0000458A00004095000039A1000032B100 +002AC500021DD5000B11E9001400F80A1E00FF211913FF45030DFF590706FF +6C0D0FFF860005FF980A00FFAE1112FFDD0212FFDD0212FFDD0212FFDD0212 +FFDD0212FFDD0212FFDD0212FFDD0212FFDD0212FFDD026E56000066570000 +60580000595C0000546400004F6D00004A780000458300003F8D0000389800 +0031A600002AB6000021C8000316DA000B09EC001500FA121700FF251410FF +470009FF5A0606FF6E080BFF840007FF970501FFA90B0BFFC6030BFFC6030B +FFC6030BFFC6030BFFC6030BFFC6030BFFC6030BFFC6030BFFC6030BFFC603 +655700005E590000595B0000545F00004F67000049710000447C00003E8700 +0037910000309C000029AA000022BB00001ACB00040FDD000C02EE051500FC +191200FF290F0BFF470009FF5D0008FF700007FF820004FF930403FFA30503 +FFB40403FFB40403FFB40403FFB40403FFB40403FFB40403FFB40403FFB404 +03FFB40403FFB4045D590000585B0000545D00004F630000496B0000447600 +003E800000378A00002F94000029A0000022AE00001BBE000012CE000508E1 +000C00F10B1000FD1E0E00FF2E0B08FF4A0005FF5E0004FF6F0004FF7F0002 +FF900302FF9F0302FFAD0202FFAD0202FFAD0202FFAD0202FFAD0202FFAD02 +02FFAD0202FFAD0202FFAD0202FFAD02> +<993000009A3100009A3100009B320000A0360000A7390000AE3B0000B53D00 +00B9380009BC2C0017BB1F0027AE0E003DA5000A4BA7001F48AB003343B100 +4D41B500693FAD00853DA4009F399E00C7339900FE2D9300FF2A9300FF2A93 +00FF2A9300FF2A9300FF2A9300FF2A9300FF2A9300FF2A9300FF2A9300FF2A +9300FF2A9300FF2A993000009A3100009A3200009B330000A1370000A73A00 +00AF3C0000B63D0000BA390008BD2E0017BC200027B00F003CA600084CA800 +1D49AB003244B1004C42B6006840AE00843EA4009E3A9E00C5339901FE2E93 +00FF2B9300FF2B9300FF2B9300FF2B9300FF2B9300FF2B9300FF2B9300FF2B +9300FF2B9300FF2B9300FF2B9300FF2B9A3100009A3200009A3200009B3300 +00A1370000A73A0000AF3D0000B63E0000BB3A0008BE2F0016BE220026B111 +003BA600074DA8001C4AAB003144B1004A42B6006741AE00833FA4009D3B9E +00C3349A01FE2F9300FF2C9300FF2C9300FF2C9300FF2C9300FF2C9300FF2C +9300FF2C9300FF2C9300FF2C9300FF2C9300FF2C9300FF2C9A3100009A3200 +009B3300009B340000A2380000A83B0000AF3E0000B73F0000BB3B0007BE30 +0016C0230025B312003AA700054EA8001B4BAB002F46B1004943B7006542AF +008140A4009C3C9D00C0359A01FE309400FF2C9400FF2C9400FF2D9400FF2D +9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF +2D9A3200009B3300009B3400009C350000A2390000A83C0000B03F0000B740 +0000BC3D0007BF320015C1250024B5140039A8000450A900194CAC002E47B1 +004744B7006443AF008041A4009A3D9D00BE379A01FD319400FF2D9400FF2D +9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF +2D9400FF2D9400FF2D9B3300009B3300009B3400009C350000A33A0000A93D +0000B03F0000B8410000BD3E0006C0340014C3270023B8170037A9000151A9 +00174EAC002C48B1004446B8006244B0007F42A400993F9D00BB389B01FD32 +9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF +2E9400FF2E9400FF2E9400FF2E9400FF2E9B3300009B3400009C3500009D36 +0000A33B0000A93E0000B0400000B8420000BE400006C1370014C5290022BB +190036AC030150AA00154FAC002A4AB1004247B9005F45B1007C44A5009740 +9C00B73A9B01FC339400FF309400FF309400FF309400FF309400FF309400FF +309400FF309400FF309400FF309400FF309400FF309400FF309B3400009C35 +00009C3600009D370000A33C0000A93E0000B1410000B8430000BF420005C3 +390013C72C0021BE1C0034AF06004EAB001251AD00284CB1003F49BA005D47 +B2007A45A60095439C00B43C9C01FC359401FF319401FF319401FF319401FF +319401FF319401FF319401FF319401FF319401FF319401FF319401FF319401 +FF319C3500009C3600009D3700009D380000A33C0000AA3F0000B1420000B8 +440000C0440004C43C0012C92F0020C21F0032B30A004CAB000F53AD00254E +B0003C4BBA005949B3007747A60094459C00B13E9E02FB369502FF329502FF +329502FF329502FF329502FF329502FF329502FF329502FF329502FF329502 +FF329502FF329502FF329D3700009D3700009D3800009E390000A43D0000AA +410000B1430000B9460000C1460003C63F0011CC33001FC6230030B80E0048 +AE010C55AE002250B000384DBA00554BB5007349A80091489C00AE419E02FA +389603FF339603FF339603FF349603FF349603FF349603FF349603FF349603 +FF349603FF349603FF349603FF349603FF349D3800009E3900009E3A00009F +3B0000A43E0000AA420000B2450000B9470000C1480003C742000FCE37001D +CB27002DBD140045B1020956AF001E53B000344FB900514EB600704CA9008E +4A9D00AC449F02F73B9604FF359604FF359604FF359604FF359604FF359604 +FF359604FF359604FF359604FF359604FF359604FF359604FF359E3900009E +3A00009F3B00009F3C0000A4400000AA430000B1460000B9480000C14A0002 +C846000DD03C001BD12D002BC3190041B6040557AF001A56B1002F52B9004B +50B8006B4EAB008A4D9E00A9479F01F43E9705FF379705FF37980AFF36990D +FF35990DFF35990DFF35990DFF35990DFF35990DFF35990DFF35990DFF3599 +0DFF359F3B00009F3C0000A03D0000A03D0000A4410000AA440000B1470000 +B84A0000C14C0001C949000CD2410019D6330029C91F003DBB060059B10015 +59B1002B55B8004553BB006651A70085539200A4508100C94D8611FF3D8412 +FF3E7C0EFF42790DFE44790DFE44790DFE44790DFE44790DFE44790DFE4479 +0DFE44790DFE44790DFE449F3D0000A03D0000A03E0000A03F0000A4420000 +AA450000B0480000B84B0000C04E0000CA4D000AD4470017D93A0026CF2700 +39C10E0054B4000F5DB2002558A200395D9400546285007264710090625E00 +B75F5A06F0565909F2555709F2555609F2565609F2565609F2565609F25656 +09F2565609F2565609F2565609F2565609F256A03E0000A03F0000A03F0000 +A1400000A5430000AA470000B04A0000B74D0000BF4F0000CA510008D44C00 +14DD410023D72F0035C618004DA00303678200146D710027725F003A725200 +5372490074713F009F6E3800F0693600FE6A3400FE6A3300FC6B3300FC6B33 +00FC6B3300FC6B3300FC6B3300FC6B3300FC6B3300FC6B3300FC6BA03F0000 +A1400000A1410000A1410000A5440000A9480000AF4B0000B64E0000BF5100 +00C9540006D5520011E04A001FD63B0030A92D00477F1B00625204007C3C00 +12812E002580250039811E0054801A00767D1B05C4751805D5751605D37615 +06D3761506D3761506D3761506D3761506D3761506D3761506D3761506D376 +1506D376A1410000A1410000A1420000A1430000A4460000A9490000AE4C00 +00B5500000BD530000C8570003D457000FCB55001CAE4E002C8B400041662C +005A3F1C00721308008A0406148C010A2A88000D428500116984111FC26F0B +1DD86F0A1ED96F091FD96F091FD96F091FD96F091FD96F091FD96F091FD96F +091FD96F091FD96F091FD96FA1420000A1430000A1430000A1440000A44700 +00A84A0000AD4E0000B3510000BC550000C6590002BB5E000FAC61001C955C +002A7951003C59410053363200690D20017C0020128100262880002C497D03 +3377772146D7510A37DB620A38DD610B39DD610B39DD610B39DD610B39DD61 +0B39DD610B39DD610B39DD610B39DD610B39DD61A1440000A1440000A14500 +00A1450000A3480000A74B0000AC4F0000B1520000B9570000AC5E0006A264 +00119568001B836700286D6400385058004D2E4A006107360075003B137800 +442B77004B4F73024F7B6A185BCC4D1055E64E1157E84C1158E94C1158E94C +1158E94C1158E94C1158E94C1158E94C1158E94C1158E94C1158E94CA14500 +00A1460000A1460000A1470000A3490000A64D0000AA500000AD540000A15C +00019863000A906A0011846F00197574002363750031496E00442963005806 +54016F0059166E0061316A00675567006A7D5F026AB1560F72F44A0F74F649 +0F75F7480F75F7480F75F7480F75F7480F75F7480F75F7480F75F7480F75F7 +480F75F748A1470000A1470000A1480000A1480000A24B0000A54E0000A452 +000098590000906000058968000A8170000E777800146A7F001D5A83002843 +800038267B004B0571026300751961007D345D0085555700867B50038DC449 +078FFF400690FF400690FF400690FF400690FF400690FF400690FF400690FF +400690FF400690FF400690FF40A1480000A1480000A1490000A1490000A24C +00009F50000092560000895D0002826400057C6D00077576000A6C81000E61 +8A0016528F00213E92002D2591003E058C0252008E18520099314E00A15147 +00A77C4100ADB93C00A8FF3901A9FF3801A9FF3801A9FF3801A9FF3801A9FF +3801A9FF3801A9FF3801A9FF3801A9FF3801A9FF38A1490000A14A0000A14A +0000A14A00009C4E00008E540000845A00017C60000176680002717300036B +7E0005638900085A94000E4B9D001A39A3002426AA003009AA014100AF1443 +00C22E4000C84E3A05F5883300EAA93115E1FF2415E1FF2315E2FF2315E2FF +2315E2FF2315E2FF2315E2FF2315E2FF2315E2FF2315E2FF2315E2FF23A14B +0000A14B0000A14B00009C4C00008C52000081570000775D0000706400006B +6D000067790000608500015A92000155A1000349AD000D37B9001627C60020 +17DC002E01EB0C370DFE332908FF4C2812FF7F1F0AFF9E2100FFB12400FFB6 +2400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FF +B62400FFB624A14C0000A14C00009D4D00008B5000007F550000755B00006D +61000067690000627400005D7F0000578C0000539A00004EA9000047BB0002 +36CB000D25DC001917F7002501FF112E0AFF322213FF5B1813FF7A150AFF97 +1A00FFAE1F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FF +B21F00FFB21F00FFB21F00FFB21FA14D00009F4E00008B5100007F53000174 +5800006A5D0000646400005F6D00005B77000055830000509000004C9D0000 +46AB00003DBD00042DD0000D1FE300190FFA012400FF1A2709FF381C0EFF5D +1615FF7D0B0AFF981400FFAD1C00FFB61C00FFB61B00FFB61B00FFB61B00FF +B61B00FFB61B00FFB61B00FFB61B00FFB61B00FFB61BA14E00008B5100007E +530000755500006A590000635F00005D66000059700000547B00004F870000 +4A93000044A000003EAE000034C3000425D5000E18E9001807FC052300FF20 +2113FF480D0BFF601313FF7E070BFF980E00FFAE180DFFD00E0EFFD10D0EFF +D10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D8B +5100007D530000735500006B560000625B00005C610000576A000052740000 +4D7F0000488B0000439600003DA3000036B400002BC800051ED9000E11EE00 +1800FC0F2000FF251C12FF4D070CFF630C12FF7F000CFF950700FFAC1414FF +E30414FFE30414FFE30414FFE30414FFE30414FFE30414FFE30414FFE30414 +FFE30414FFE3047D540000725500006A560000635800005B5D000056640000 +516E00004C78000047840000428F00003B9A000035A800002DBA000022CC00 +0617DE000E06F0011A00FE171A0CFF330B11FF500106FF630C0CFF7C020BFF +930300FFA70F12FFDC0113FFE70113FFE70113FFE70113FFE70113FFE70113 +FFE70113FFE70113FFE70113FFE7017255000068570000615800005C590000 +56600000516800004C720000467D0000408800003A920000339E00002CAD00 +0025BF00001BD0000710E3000F02F3081700FF1D1409FF36080DFF510008FF +66040AFF7C000AFF920002FFA30907FFBE0410FFE90010FFE90010FFE90010 +FFE90010FFE90010FFE90010FFE90010FFE90010FFE9006757000060580000 +5A5A0000565C0000516300004B6C00004677000040810000398B0000329600 +002BA2000024B100001EC2000013D3000708E6001000F50F1300FF221005FF +370709FF520007FF670006FF7A0003FF8C0302FF9E0503FFB20407FFD10107 +FFD10107FFD10107FFD10107FFD10107FFD10107FFD10107FFD10107FFD101 +5F590000595B0000545D0000515F00004B670000457100003F7B0000398500 +00328E00002A99000024A700001DB5000016C500020DD6000800E8021100F8 +150E00FF260B03FF390505FF560004FF680003FF780003FF8A0103FF9B0202 +FFAC0201FFB50201FFB50201FFB50201FFB50201FFB50201FFB50201FFB502 +01FFB50201FFB502575B0000535E00004F6000004B630000456B00003F7500 +00397F0000318800002A920000239D00001CAA000016B800000FC7000206D9 +000900EC090B00FA1B0900FF2A0701FF3D0202FF560001FF680000FF760001 +FF870002FF970001FFA60100FFAE0000FFAE0000FFAE0000FFAE0000FFAE00 +00FFAE0000FFAE0000FFAE0000FFAE00> +<96290000972A0000972B0000972B0000992C00009D2E0000A3300000A93100 +00AD2D0006B1240014AD170025A10700399F000E40A200213CA7003538AE00 +4D37B0006836AB008233A6009E30A400C52B9C00F827A51EFF08A51DFF08A5 +1DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09 +A51DFF09A51DFF09972A0000972A0000972B0000982C0000992D00009E2F00 +00A4310000AA320000AD2E0006B1250014AF180024A30800389F000D41A200 +203DA7003439AE004C38B1006737AC008134A6009D31A400C32C9C00F727A3 +1BFF0BA31BFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0C +A31AFF0CA31AFF0CA31AFF0CA31AFF0C972A0000972B0000972C0000982C00 +00992D00009E300000A4320000AA330000AE300005B2260013B01A0023A40A +00379F000C42A2001F3FA700333AAE004B39B1006537AC008035A6009B31A3 +00C12C9C00F628A118FF0FA117FF10A117FF10A117FF10A117FF10A117FF10 +A117FF10A117FF10A117FF10A117FF10A117FF10A117FF10972B0000972B00 +00982C0000982D00009A2E00009F300000A5330000AB340000AF310005B328 +0013B21B0022A60B0036A0000A43A2001E40A700313BAD00493AB2006438AD +007E36A6009A33A300BE2D9C00F5299F14FF149F14FF149E14FF149E13FF14 +9E13FF149E13FF149E13FF149E13FF149E13FF149E13FF149E13FF149E13FF +14972B0000982C0000982D0000982E00009A2F00009F310000A5340000AC35 +0000B0330004B42A0012B41D0021A90D0035A0000844A3001C41A7002F3DAD +00473BB200623AAE007D37A6009834A300BC2F9D00F42A9C10FF189C0FFF18 +9C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF +199C0FFF199C0FFF19982C0000982D0000982E0000992E00009A300000A032 +0000A6350000AD370000B2350004B52C0011B51F0020AB100033A0000646A3 +001A43A8002E3EAD00453CB300603BAF007B39A6009635A200B8309D00F12B +990BFF1D990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF +1E990AFF1E990AFF1E990AFF1E990AFF1E982D0000982E0000992F0000992F +00009B310000A0340000A7360000AE380000B3370003B62E0010B722001FAE +120032A2010447A4001845A8002C40AD00433EB4005E3CB0007A3AA7009437 +A200B4319D00EE2C9605FF239605FF239604FF249504FF249504FF249504FF +249504FF249504FF249504FF249504FF249504FF249504FF24982E0000992F +0000992F0000993000009B320000A1350000A8380000AF3A0000B5390002B8 +30000FBA24001EB2150030A5030346A5001547A8002942AD00403FB5005C3E +B100773CA8009239A100B0339D00EA2E9400FF299300FF289300FF289300FF +299300FF299300FF299300FF299300FF299300FF299300FF299300FF299300 +FF29992F0000993000009A3100009A3100009C330000A2370000A93A0000B0 +3C0000B63C0001BA34000EBD27001DB619002EA8060245A600124AA8002645 +AC003C41B5005940B300743EA9008F3BA000AC369E00E9309400FF2A9300FF +2A9300FF2A9300FF2A9300FF2A9300FF2A9300FF2A9300FF2A9300FF2A9300 +FF2A9300FF2A9300FF2A993000009A3100009A3200009B3300009D350000A3 +390000AA3B0000B23E0000B83E0001BC37000DBF2B001BBA1C002CAD0A0143 +A7000E4CA9002348AC003943B5005542B4007140A9008D3EA000A9389E00E3 +329500FF2D9300FF2C9300FF2C9300FF2C9300FF2C9300FF2C9300FF2C9300 +FF2C9300FF2C9300FF2C9300FF2C9300FF2C9A3100009B3200009B3300009B +3400009E360000A43B0000AB3D0000B3400000B9400001BD3B000BC22F001A +BF21002AB20E0040A9000A4FAA001F4BAD003546B4005045B6006E42AB008A +41A000A53B9D00DA359500FF2F9400FF2E9400FF2E9400FF2E9400FF2E9400 +FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9B3300009B +3400009C3500009C3600009F380000A53C0000AC3F0000B3410000BA430000 +BF3F000AC4330018C5250028B814003DAB000653AB001B4EAD003149B4004B +47B8006945AC008644A100A13F9C00D1389401FF328F02FF338D03FF348A04 +FF358A04FF358A04FF358A04FF358A04FF358A04FF358A04FF358A04FF358A +04FF359C3500009C3600009D3700009D3800009F3A0000A53E0000AC410000 +B4430000BB450000C1420008C6390016CA2A0025BF19003AAE010056AC0016 +52AE002C4DB300454AB8006449A1007F4E8D00984B7C00B2487D0AFC3F7D10 +FF397A10FF3B7810FF3C7710FF3C7710FF3C7710FF3C7710FF3C7710FF3C77 +10FF3C7710FF3C7710FF3C9D3700009D3800009E3900009E3A0000A03B0000 +A63F0000AC420000B4450000BC470000C3460006C93E0014CE310023C52000 +35B5090050AE001156A8002554980037598C00505D7E006B5F6D00875D5E00 +AB5B5400E0576616FF426518FF416419FF416419FF416419FF416419FF4164 +19FF416419FF416419FF416419FF416419FF419E3900009E3A00009F3B0000 +9F3C0000A13E0000A6410000AC440000B4470000BB490000C44A0005CB4400 +12D2390020CD280031BD13004A92040363790013696B00266D5B00386C4F00 +506D46006F6C3E00936A3800D966491AFF4D461AFE4E4217FD514217FD5142 +17FD514217FD514217FD514217FD514217FD514217FD514217FD519F3B0000 +9F3C0000A03D0000A03E0000A13F0000A6430000AC460000B3490000BB4C00 +00C44D0003CD4A000FD641001DC335002D9F2900447518005D4D0301783900 +127B2C00247A2300387B1D00517B1A0070781600A8751300E1721100E1720F +01E2720F01E2720F01E2720F01E2720F01E2720F01E2720F01E2720F01E272 +0F01E272A03D0000A03E0000A03F0000A03F0000A2410000A6440000AC4800 +00B24B0000BA4E0000C3500001CD4F000CBB4E001BA246002A843A003C5F29 +00563B1B006D1208008504061487000A2883000D40800010627F0015A57900 +16E36F0018E36E0019E36D0019E36D0019E36D0019E36D0019E36D0019E36D +0019E36D0019E36D0019E36DA03F0000A1400000A1410000A1410000A24300 +00A6460000AB490000B14C0000B9500000BD540001AE57000FA058001B8C53 +0028724A0039543D004F322F00640C1E0177001F127C002427790029447700 +2F6F740031A76B012FF45F0130F65E0131F85E0131F85E0131F85E0131F85E +0131F85E0131F85E0131F85E0131F85E0131F85EA1410000A1420000A14200 +00A1430000A2440000A5470000AA4B0000B04E0000AF530000A3590006985D +00118C60001A7C5E0026675A00354B5100482B44005D053200700038137200 +41297000474B6E004A7268004CAD5F0049F158004AF158004BF257004BF257 +004BF257004BF257004BF257004BF257004BF257004BF257004BF257A14300 +00A1440000A1440000A1450000A2460000A5490000A84C0000A45100009957 +0002905D000A886200117D6700186F6A00225D6C003043640040265B005404 +4E016A00541569005C2E66006252630065745C0064A052076BFC49076CFD47 +086EFE46086EFE46086EFE46086EFE46086EFE46086EFE46086EFE46086EFE +46086EFE46A1450000A1450000A1460000A1460000A2480000A44A00009C4F +000091560000895B0005816200097A68000E706F00146375001D547900283D +76003622710049026A0260006F195D00763259007E5254007F734C0081A447 +0186FF3D0187FF3C0187FF3C0187FF3C0187FF3C0187FF3C0187FF3C0187FF +3C0187FF3C0187FF3C0187FF3CA1470000A1470000A1470000A1480000A149 +0000984E00008C530000835900027B5F0004746700066E6F00096578000F5A +8000174C8500213886002C2086003D028203500087194D008F314900964D43 +009B723D00A0A839009EFA35009CFF33009DFF33009DFF33009DFF33009DFF +33009DFF33009DFF33009DFF33009DFF33009DFF33A1480000A1490000A149 +0000A1490000964C0000885100007E570000755C00006F6400016A6C000264 +7600055C810009538A00104491001C33960024209B0030039A024000A3163E +00AE2D3A00B34B3600CE7C3200CCA62E09C8FF2806BDFF2706BEFF2706BEFF +2706BEFF2706BEFF2706BEFF2706BEFF2706BEFF2706BEFF2706BEFF27A14A +0000A14A0000A14B0000954C0000865000007B550000725A00006A60000065 +690000617300005B7E0001558A00034E960008409F001231AA001823B50022 +0EC0002F00CB103300DD282F02E348290BFE7D2107FF9E2100F6B82300F2D1 +2200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3 +D12200F3D122A14B0000A14C0000954E0000855000007A5300007058000067 +5E0000626500005D6F0000587A0000538700004E94000049A2000042B20001 +35C6000825D7001218EE001D02FF0A2900FF252512FF521211FF701115FF91 +0800FFAA1B00FFB71B00FFB81B00FFB81B00FFB81B00FFB81B00FFB81B00FF +B81B00FFB81B00FFB81B00FFB81BA14D0000944F0000845200007954000070 +560000665B00005F6200005A6A000056750000518000004C8C000046980000 +41A600003AB700012CCB00081EDD001210F3001D00FF152309FF321710FF55 +0E0EFF710D14FF910201FFAA1711FFD80A12FFDA0912FFDA0912FFDA0912FF +DA0912FFDA0912FFDA0912FFDA0912FFDA0912FFDA09954F00008352000177 +5400006F560000675800005E5D000059640000546E00004F7900004A850000 +459000003F9C000039AA000031BD000124D0000918E3001207F5041D00FF1C +1C10FF3E0A0DFF580A0AFF700B12FF8F0000FFA51214FFDD0313FFE30413FF +E30413FFE30413FFE30413FFE30413FFE30413FFE30413FFE30413FFE30483 +520001765500006D560000665700005F59000058600000536800004E720000 +497E0000448800003E94000037A0000030AF000028C300011CD4000910E800 +1200F70A1B00FF211712FF45010BFF5A0707FF71090DFF8C0000FFA30E11FF +CF0013FFE80013FFE80013FFE80013FFE80013FFE80013FFE80013FFE80013 +FFE80013FFE800765500006C560000645700005D590000585C000053630000 +4D6C000048770000438200003D8C0000369700002FA4000028B400001FC600 +0214D8000A08EB001400FA131500FF26120DFF450009FF5C0209FF730009FF +890003FF9E0704FFB4050EFFE9000EFFE9000EFFE9000EFFE9000EFFE9000E +FFE9000EFFE9000EFFE9000EFFE9006A560000625800005C590000575B0000 +535F00004D67000048710000427C00003C860000359000002E9B000027A900 +0020B9000018C900030DDB000A00EC051300FC191000FF2A0D09FF470007FF +5E0005FF710004FF850202FF9A0503FFAD0308FFDB0008FFDB0008FFDB0008 +FFDB0008FFDB0008FFDB0008FFDB0008FFDB0008FFDB00615800005A5A0000 +555C0000525F00004D620000476B0000427600003B800000348900002D9300 +00269F00001FAD000019BC000011CC000406DF000B00F10C0E00FE1E0C00FF +2E0905FF4D0003FF600002FF700003FF830003FF970101FFA70202FFB60002 +FFB60002FFB60002FFB60002FFB60002FFB60002FFB60002FFB60002FFB600 +595B0000545D0000506000004C62000048660000417000003B7A0000348300 +002D8D0000259700001EA3000018B0000012BE00000ACE000501E2020B00F2 +130900FF230700FF320401FF4B0000FF5F0000FF700001FF810001FF940000 +FFA20100FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200535E00004E6100004A64000046670000416B00003B7400 +00347E00002D870000259000001E9B000017A6000011B200000BC0000103CF +000600E4090600F3190500FE280300FF350000FF4F0000FF640000FF720000 +FF820000FF920000FF9F0000FFAE0000FFB00000FFB00000FFB00000FFB000 +00FFB00000FFB00000FFB00000FFB000> +<9424000094240000942500009425000095260000972600009B2700009F2600 +00A3240004A71D0012A3110022980202339B0012349E002331A500362EAA00 +4D2EAB00652DA8007E2BA7009928A800C224A000ED20A71EFF00A51DFF00A5 +1DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00 +A51DFF00A51DFF009424000094250000942500009526000095260000972700 +009B2700009F270000A3250003A81E0011A4120021990201349B0011359E00 +2232A500352FAA004C2FAC00642EA9007D2CA7009829A800C025A000EC20A8 +1FFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00 +A51DFF00A51DFF00A51DFF00A51DFF00942400009425000095260000952600 +0095270000982700009B280000A0280000A4260003A81F0011A51300219A03 +00339B0010369E002133A5003430AA004A30AC00632FA9007C2CA700972AA8 +00BE26A000EB21A81FFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00 +A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF0094250000952600 +00952600009527000095270000982800009C290000A0290000A4270003A921 +0010A71500209C0500329B000E379E002034A4003231AA004931AD006230AA +007A2DA700962BA800BC27A000E922A920FF00A61FFF00A61FFF00A61FFF00 +A61FFF00A61FFF00A61FFF00A61FFF00A61FFF00A61FFF00A61FFF00A61FFF +009526000095260000952700009528000096280000982900009C290000A12A +0000A5280003AA22000FA917001F9E0700319B000C399E001E36A4003133AA +004732AD006031AB00792FA700942CA700B928A000E723AA22FF00A720FF00 +A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF +00A720FF00A720FF009526000095270000962800009628000096290000992A +00009D2A0000A22B0000A62A0002AB24000EAB19001EA10A00309B000A3B9E +001C38A4002F35AA004533AE005E32AC007730A700932DA700B629A000E524 +AB23FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF +00A821FF00A821FF00A821FF00A821FF009527000096280000962800009629 +0000972A0000992B00009D2C0000A32D0000A72C0001AC26000DAC1B001CA4 +0C002E9C00073C9F001A3AA3002D36AA004334AF005C34AD007631A700912F +A700B32BA100E226AC24FF00A822FF00A822FF00A822FF00A822FF00A822FF +00A822FF00A822FF00A822FF00A822FF00A822FF00A822FF00962800009629 +000096290000972A0000972B00009A2C00009E2D0000A42F0000A92F0001AD +29000CAF1E001BA70F002C9E02063DA000173DA3002A39AA004036AF005A35 +AE007433A8008E30A600AF2CA100DE27AE26FF00A924FF00A924FF00A923FF +00A923FF01A923FF01A923FF01A923FF01A923FF01A923FF01A923FF01A923 +FF0196290000972A0000972A0000972B0000972C00009A2D00009F2F0000A6 +310000AB310000AF2B000BB1210019AB13002BA003043DA000153FA300283B +AA003D38B0005737AF007135A9008C32A500AB2EA100DA29A91EFF0AA41CFF +0AA41CFF0AA41CFF0AA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41C +FF0BA41CFF0BA41CFF0B972A0000972B0000972C0000982C0000982D00009B +2F0000A1310000A7330000AD340000B02E0009B4240018AF160029A306023D +A1001142A400243EA900393AB0005339B1006E38AA008935A500A630A100D6 +2BA416FF149F14FF149F14FF149E13FF149E13FF149E13FF149E13FF149E13 +FF149E13FF149E13FF149E13FF149E13FF14972C0000982C0000982D000098 +2E0000992F00009C310000A2330000A9360000AF370000B3320008B6280016 +B31A0026A709003CA2000D45A5002142A900353DB0004F3CB3006B3AAB0086 +38A500A233A000CE2E9C08FF22990BFF1D990AFF1E990AFF1E990AFF1E990A +FF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E982D000098 +2E0000992F000099300000993000009D330000A3360000AA380000B13A0000 +B5360006B82C0014B81F0024AC0E0039A3000849A5001D46A9003140AF004A +3EB400673DAE00823AA5009E379A00C1339203FA2F8A05FF2C8806FF2D8607 +FF2E8507FF2E8507FF2E8507FF2E8507FF2E8507FF2E8507FF2E8507FF2E85 +07FF2E992F0000993000009A3100009A3100009A3200009E350000A5380000 +AC3B0000B33D0000B83B0004BB310012BD240022B3140035A400034DA70018 +4AAA002D44AF004542AC005F449A00784888008E467900A7437301E541760D +FF36740EFF36720EFF37710FFF37710FFF37710FFF37710FFF37710FFF3771 +0FFF37710FFF37710FFF379A3100009A3200009B3300009B3400009B340000 +A0380000A63B0000AE3E0000B5400000BB400003BE360010C22A001FBB1A00 +31AC070249A800124E9C0024509000355384004B57780064596A007E575D00 +9F565400C8516216FF3C6017FF3C5F17FF3D5E17FF3D5E17FF3D5E17FF3D5E +17FF3D5E17FF3D5E17FF3D5E17FF3D5E17FF3D9B3300009B3400009C350000 +9C3600009D370000A13A0000A73E0000AE400000B6430000BD430002C13C00 +0EC731001CC221002DAB1200468603035E7200136365002567570036674C00 +4C68440069683C0089653700BC61491CFF45451AFF474017FF4B3C14FF4E3C +14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E9C360000 +9D3700009D3800009E3900009E390000A23C0000A8400000AF430000B74500 +00BE470001C443000CCA38001AB32F00299325003F6C160059480201733600 +11752A002374220036761C004E7519006972170095701200F16B1001F36B0E +01F46B0C01F66B0C01F66B0C01F66B0C01F66B0C01F66B0C01F66B0C01F66B +0C01F66B9D3800009E3900009E3A00009F3B00009F3C0000A33F0000A84200 +00AF450000B6480000BE4A0000BE49000AAC460019983F00267D3500385927 +0052371900681107007F030613810009277E000C3E7A000E5C790013927600 +14E2690016E2680017E3670018E3670018E3670018E3670018E3670018E367 +0018E3670018E3670018E3679F3B00009F3C0000A03D0000A03E0000A03E00 +00A3410000A8440000AE470000B54A0000B14E0001A350000E964F0019854B +00256C4400354F39004B2F2C00600B1D0172001D1276002326730027407100 +2D686F00309B68022DFB59022EFE58022FFE58012FFD57012FFD57012FFD57 +012FFD57012FFD57012FFD57012FFD57012FFD57A03E0000A03F0000A03F00 +00A1400000A1410000A3430000A8460000AD490000A54E00009A5300069056 +0010845700197556002460520032474B004428400058042E006B0035126C00 +3D266A0043466900476B64004A9F5C0046EB520047F4500048F5500049F550 +0049F5500049F5500049F5500049F5500049F5500049F5500049F550A14000 +00A1410000A1420000A1420000A1430000A3450000A74800009C4D00009253 +000189570009805C000F765F0017686200215762002D3E5C003C2254005003 +480265004F156400582C61005E4D5F00606C580061934F0267FF480567FF42 +0568FF420569FF410569FF410569FF410569FF410569FF410569FF410569FF +410569FF41A1420000A1430000A1440000A1440000A1450000A3470000964C +00008B520000835700047A5C00087362000D696800135E6D001C4E6F002737 +6C00331D6800460162035C006918580070305400774E5000796C48007B9242 +0081F33A0080FF380080FF370081FF370081FF370081FF370081FF370081FF +370081FF370081FF370081FF37A1450000A1450000A1460000A1460000A147 +0000924B0000865000007D560001755B00036D610005676900095F70000E55 +770017477B0021327C002B1A7B003B007A044C00801A4800872F44008D493F +00916A3A009596360095E3310093FF2E0093FF2E0093FF2E0093FF2E0093FF +2E0093FF2E0093FF2E0093FF2E0093FF2E0093FF2EA1470000A1470000A148 +0000A14800008F4B0000834F00007954000070590000695F0000646700015E +700004577900094E8100113F87001B2D8C0024198F00300190043D00991739 +00A12D3500A5483100AF6E2F00B89E2C00B0DA2901A8FF2501A8FF2501A8FF +2501A8FF2501A8FF2501A8FF2501A8FF2501A8FF2501A8FF2501A8FF25A148 +0000A1490000A14900008E4C0000814F0000775200006D570000655C000060 +6400005B6D00005678000150830004478C000A3A9500132C9D00191BA40024 +05AB012F00B8132E00C5282A00C6432600E4712600EA932200DBB92201D0F4 +1F01D0F51F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1 +F71F01D1F71FA14A0000A14B00008C4E00007F500000755200006C55000063 +5A00005D610000596A0000547500004F8100004A8D0000439900013AA60006 +2EB6000A21C4001314D7001D00E80B2501FA252013FF4E0D0CFF691118FF8D +0000FFA71813FFEA0A14FFED0915FFEE0815FFEE0815FFEE0815FFEE0815FF +EE0815FFEE0815FFEE0815FFEE08A14C00008B4F00007D520000735400006B +550000625900005B5F000056680000527200004D7E00004789000042950000 +3CA1000034B100002AC600031DD8000D11ED001700FC0F1E03FF281712FF4F +0408FF650D11FF840000FF9E1114FFD60213FFE40313FFE40313FFE40313FF +E40313FFE40313FFE40313FFE40313FFE40313FFE4038B5100007C54000071 +55000068570000625800005B5C000056630000506C00004B77000046820000 +408D00003A99000033A600002CB8000022CA000416DD000D06EF001900FE17 +1809FF320C0FFF510006FF660A0CFF820003FF9D0B0EFFC50112FFE90012FF +E90012FFE90012FFE90012FFE90012FFE90012FFE90012FFE90012FFE9007B +5400007056000067570000605800005A5A0000555F0000506700004A710000 +457C00003F86000039910000319D00002AAB000023BD000019CE00050FE100 +0D01F1081600FE1D1306FF340A0AFF520109FF690008FF810004FF980504FF +B0050DFFE8000DFFE8000DFFE8000DFFE8000DFFE8000DFFE8000DFFE8000D +FFE8000DFFE8006F560000655700005E590000595B0000545D000050620000 +4A6B0000447600003E800000388A00003094000029A1000022B000001BC000 +0112D1000607E4000E00F50F1000FE220E03FF360807FF540005FF690005FF +7E0002FF950402FFA90306FFCF0006FFCE0006FFCE0006FFCE0006FFCE0006 +FFCE0006FFCE0006FFCE0006FFCE00645700005C590000575B0000535E0000 +4F6000004A660000447000003E7A000037840000308E00002899000021A500 +001BB3000014C300010BD4000601E7030E00F7160C00FF270901FF390503FF +570002FF690002FF7B0003FF930001FFA40101FFB50001FFB40001FFB40001 +FFB40001FFB40001FFB40001FFB40001FFB40001FFB4005B5A0000555C0000 +515F00004D62000049640000446B00003E750000377E00002F880000289100 +00219C00001AA9000013B600000DC5000204D6000800E90B0900F81C0700FF +2B0500FF3B0100FF570000FF6A0000FF7B0001FF8F0000FFA00000FFB00000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +545D00004F6000004B63000047660000436900003D6F0000377900002F8200 +00288B00002195000019A0000013AB00000DB7000006C5000300D8040600EC +120400F9210300FF2F0100FF420000FF5D0000FF6D0000FF7D0000FF8E0000 +FF9E0000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2004E6100004964000044680000406A00003C6D0000377300 +002F7C000028850000218E00001998000012A200000CAC000005B8000200C6 +010400DC0A0100EB180000F8250000FF310000FF4A0000FF5F0000FF6D0000 +FF7C0000FF8C0000FF9C0000FFA60000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<931F0000931F00009320000093200000932100009421000096210000992000 +009C1E00029F1700109A0B001F9400052B970015299B002527A2003626A600 +4C26A6006325A5007923A6009422A800B71EA200E119A516FF02A014FF00A0 +14FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00 +A014FF00A014FF00931F000093200000932000009321000093210000942200 +0096210000992000009C1F00019F18000F9B0C001F9400042B9800142A9B00 +2428A2003527A6004B27A7006226A5007824A6009322A900B61FA200E01AA5 +16FF02A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00 +A015FF00A015FF00A015FF00A015FF00932000009320000093210000932100 +009422000094220000972200009A2100009D1F0001A019000E9C0E001E9400 +032D9800132B9B002329A2003427A6004928A7006127A6007725A6009123A9 +00B520A300DE1BA617FF02A116FF00A116FF00A116FF00A116FF00A116FF00 +A116FF00A116FF00A116FF00A116FF00A116FF00A116FF0093200000932100 +0093210000942200009422000094230000972200009A2200009D200001A11A +000D9E0F001D9501022C9800112C9B00212AA2003329A6004829A8005F28A6 +007626A6009024A900B321A300DD1CA718FF03A117FF00A117FF00A117FF00 +A117FF00A117FF00A117FF00A117FF00A117FF00A117FF00A117FF00A117FF +00932100009321000094220000942200009423000094230000972300009A22 +00009D210001A21C000DA011001C9703012C98000F2E9B00202BA100312AA7 +00462AA8005E29A7007527A6008E25A900B122A400DC1DA819FF03A218FF00 +A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF +00A218FF00A218FF0093210000942200009422000094230000942300009424 +0000972400009A2300009E220001A31E000BA213001B9905012B98000D309B +001E2DA1002F2BA700442BA9005C2AA8007328A6008D26A800AF23A400DA1E +A91AFF04A319FF00A319FF00A319FF00A319FF00A319FF00A319FF00A319FF +00A319FF00A319FF00A319FF00A319FF009422000094230000942300009424 +00009424000094250000972500009B2400009F240001A420000AA31500199B +08012A98000B329B001C2FA0002D2DA700422CAA005A2CA900712AA6008B28 +A800AC25A500D820AA1BFF05A41AFF00A41BFF00A41BFF00A41BFF00A41BFF +00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00942300009424 +000094240000942500009425000095260000982600009C260000A0260000A5 +220009A61800189E0A0029990108339C001932A0002B2FA7003F2EAB00572D +AA00702BA7008929A800A926A500D621AC1CFF06A51CFF00A51CFF00A51CFF +00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51C +FF00942400009424000094250000952600009526000095270000982700009D +280000A1270000A5240008A81B0016A20D0027990105359C0017349F002831 +A7003C2FAC00552FAB006D2DA800862BA800A628A500D323A917FE0DA61EFF +00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61E +FF00A61EFF00A61EFF00942500009426000095260000952700009527000096 +280000992900009E290000A2290000A6260006AA1E0014A51100259B020336 +9C001337A0002534A7003931AC005131AD006A2FA900842DA700A22AA600CF +25A20DFC18A71FFF00A720FF00A720FF00A720FF00A720FF00A720FF00A720 +FF00A720FF00A720FF00A720FF00A720FF0095260000952700009528000096 +28000096290000972900009A2A00009F2B0000A42C0000A8290005AC220013 +A91500239D0400379D000F3BA0002238A6003634AC004D33AE006732AA0081 +30A6009E2CA500C9289C01FA22A822FF00A822FF00A822FF00A722FF00A723 +FF00A723FF00A723FF00A723FF00A723FF00A723FF00A723FF009528000096 +28000096290000972A0000972A0000972B00009B2C0000A02E0000A62F0000 +AA2D0003AF250011AE190021A20900349D000B3EA0001E3BA6003137AC0049 +36B0006435AC007E32A20097309700B42F8C00E32D8202FF298003FF2A7E03 +FF2A7D04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C +04FF2B96290000972A0000972B0000972B0000982C0000982D00009C2F0000 +A2310000A9330000AE320002B12A000FB21E001EA90F00319E000642A1001A +40A5002D3BAA004339A000593E920070428300844076009D3E6E00C33C6C07 +FF356A07FF356808FF366708FF366709FF376709FF376709FF376709FF3767 +09FF376709FF376709FF37972B0000972C0000982D0000982D0000982E0000 +992F00009E320000A4340000AB360000B1370000B42F000DB624001BB01500 +2DA4050341A10013459100234B8800334E7D00465071005D52650076525C00 +93515300B44B5C13FF385F19FF33611DFF306320FF2D6421FF2C6421FF2C64 +21FF2C6421FF2C6421FF2C6421FF2C6421FF2C982D0000982E0000992F0000 +993000009A3100009A320000A0350000A6380000AE3A0000B43B0000B83500 +0ABB2A0019B71C00299C1000407B0304576A00125E5F002361530033614900 +4863410063633A007F603600A45B481CFF3F4218FF423D15FF463912FF4A37 +11FF4B3711FF4B3711FF4B3711FF4B3711FF4B3711FF4B3711FF4B99300000 +993100009A3100009A3200009B3300009C340000A2390000A83C0000B03E00 +00B7400000BC3C0008B8320016A52B00258921003A641400534301016D3300 +116F2800216E200034701A004A701800636D1700866B1100E2660E01FD650D +01FD650B02FE650B02FE650B02FE650B02FE650B02FE650B02FE650B02FE65 +0B02FE659A3200009B3300009C3400009C3500009C3600009D370000A33C00 +00A93F0000B1410000B8430000B0430008A03F00168F390023763000345324 +004D341700640F06007A0305137B00092678000B3B74000E57720012847100 +14CD660015E6620016E7610017E7610018E7600018E7600018E7600018E760 +0018E7600018E7600018E7609C3600009D3700009D3800009E3900009E3A00 +009F3B0000A43E0000AA420000B2450000A6490000994A000C8D4800177D44 +0022663E00324A3500472B29005C091B016D001C11700021246D00243C6A00 +2B6169002F8F64002DD258002CFC54002DFC53002EFC52002EFC52002EFC52 +002EFC52002EFC52002EFC52002EFC52002EFC529E3900009E3A00009F3B00 +009F3C0000A03D0000A03E0000A4410000A84400009C4A0000924E00058850 +000E7D5000176F4E00215A4B002F42460040253C0054042B01650032126600 +3A2564004042630044645F004890580046CE4F0044F4490045F5490046F648 +0047F6480047F6480047F6480047F6480047F6480047F6480047F648A03D00 +00A03E0000A03E0000A03F0000A0400000A1400000A1440000954A00008B4F +0001825200077955000E6F580016625A001F5159002A395500381F4D004C02 +43025F004B145E00532A5C0059485A005B6554005D874B005EBD440061FF3F +0061FF3E0062FF3E0063FF3E0063FF3E0063FF3E0063FF3E0063FF3E0063FF +3E0063FF3EA03F0000A1400000A1410000A1420000A14200009B4300009049 +0000864E00007C530002745700076C5C000C646100125965001B4966002532 +64003119600043005B045600641852006B2F4E0070494B007365440074863E +0079C638007AFF32007AFF32007BFF32007BFF32007BFF32007BFF32007BFF +32007BFF32007BFF32007BFF32A1420000A1430000A1440000A14400009A46 +00008C490000814D0000785200006F570002685C0004616300075A69000E50 +6F0016417200202C73002A1572003A00720647007A1A4100802E3E0085463A +00896336008C8732008FC82E008BFF2A008BFF29008CFF29008CFF29008CFF +29008CFF29008CFF29008CFF29008CFF29008CFF29A1450000A1450000A146 +000099470000894A00007E4C0000745000006C550000645B00005E62000059 +6A000452720009497900113A7F001A278200231284002F0087063800901833 +00972C30009A462D00A2652B00AA922900A5C527009BFF21009BFF21009BFF +20009BFF20009BFF20009BFF20009BFF20009BFF20009BFF20009BFF20A147 +0000A147000098490000874C00007B4E0000724F000069530000615900005B +60000057680000527200014B7D00054284000B358C00132693001A13980025 +009E032D00AA152900B3282500B5422200C1652300CC8C2000C5B52000BAFC +1C00B8FF1B00B8FF1B00B8FF1B00B8FF1B00B8FF1B00B8FF1B00B8FF1B00B8 +FF1B00B8FF1BA1490000984B0000864E000079500000705100006852000060 +570000595D000055660000507000004B7B0000458700013D910004339C0008 +27A7000D19B200170AC0001F00CD102000DE231D01F33B1C00F2621A08FB86 +0F00FCAA1613FDFA0A0EF2FF0C0FF4FF0B10F4FF0B10F4FF0B10F4FF0B10F4 +FF0B10F4FF0B10F4FF0B10F4FF0B984C0000844F0000775200006D53000065 +5500005F560000585C0000536400004E6E0000497A0000438500003D910000 +369E00002FAD000027C000011CD2000810E6001100F60A1A00FF211511FF45 +0008FF5C0709FF770409FF950409FFB90512FFE90011FFE90011FFE90011FF +E90011FFE90011FFE90011FFE90011FFE90011FFE90083510000755400006B +550000635700005C590000585B0000526200004D6B00004876000042810000 +3C8B0000359600002DA3000026B200001FC4000114D6000907E9001200F913 +1300FF26100CFF460009FF5F0008FF770006FF910304FFAB040CFFE8000CFF +E7000CFFE7000CFFE7000CFFE7000CFFE7000CFFE7000CFFE7000CFFE70074 +55000069560000615800005B5A0000565C0000525E00004C66000047700000 +417B00003B850000338E00002C9A000025A700001EB7000016C700020CD900 +0900EB051200FC190E00FF2B0C08FF490005FF610004FF750002FF8D0302FF +A60305FFC60005FFC40004FFC40004FFC40004FFC40004FFC40004FFC40004 +FFC40004FFC400685700005F580000595B0000545D0000505F00004C620000 +466A0000407500003A7F0000338800002B920000249E00001DAB000017BA00 +000FCA000305DD000A00EF0C0C00FE1F0A00FF2F0704FF4C0002FF610001FF +730002FF8B0001FFA10101FFB40000FFB30000FFB30000FFB30000FFB30000 +FFB30000FFB30000FFB30000FFB3005E590000575B0000525E00004E610000 +4A64000046660000406F00003A790000328200002B8C0000249600001CA200 +0016AE000010BC000008CB000401DE040900F1140700FE240600FF330201FF +4C0000FF630000FF740000FF880000FF9D0000FFAF0000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200565C0000515F0000 +4C6200004865000043680000406B00003A740000327D00002B860000239000 +001C9A000015A500000FB0000008BD000101CB000600E20B0400F11A0300FD +290100FF360000FF550000FF690000FF770000FF890000FF9D0000FFAA0000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4F6000004A63000045670000416A00003D6D0000396F0000327700002B8000 +00238900001C930000159C00000EA6000007B1000101BD010400CF050100E3 +100000F01D0000FC2A0000FF370000FF550000FF690000FF750000FF860000 +FF9B0000FFA40000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20048650000436800003E6C00003A6E000036710000327300 +002B7B0000248300001C8C0000159500000E9E000009A6000002B0000400BD +010300CE050100E30F0000F01D0000FC290000FF350000FF530000FF670000 +FF720000FF830000FF960000FFA00000FFAF0000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<90190000911A0000911A0000911B0000911B0000911C0000931C0000951B00 +00971800019811000D9105001D91000921940017209800251E9E00351DA100 +4A1EA100601DA100751CA2008C1AA400AC18A100CF139F06F70A9B0CFF009B +0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF00 +9B0CFF009B0CFF00911A0000911A0000911B0000911B0000921C0000921C00 +00931C0000951B0000971900009812000C9307001C91000822940016219800 +241F9E00341EA100491FA2005F1EA100741DA2008B1BA500AB19A200CF149F +05F80C9C0CFF009C0CFF009C0CFF009C0DFF009C0DFF009C0DFF009C0DFF00 +9C0DFF009C0DFF009C0DFF009C0DFF00911A0000911B0000911B0000921C00 +00921C0000921D0000931D0000961C0000981A00009914000B9408001B9100 +062494001522980023209E00331FA2004820A2005E1FA100731EA2008A1CA5 +00AA1AA200CE159F05F80D9C0DFF009C0DFF009C0DFF009C0DFF009C0DFF00 +9C0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0DFF00911B0000911C00 +00921C0000921D0000921D0000921D0000931D0000961D0000981B00009A15 +000B960A001A9100052495001323980022219F003220A2004621A3005D20A2 +00721FA300891DA600A81BA300CD169F04F80F9C0EFF009D0EFF009D0FFF00 +9D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF +00911C0000921C0000921D0000921D0000921E0000921E0000941E0000961D +0000981C00009B16000A980C00199201042595001224980020229F003021A3 +004522A4005B21A3007120A300881EA600A61CA400CC179F04F7109D10FF00 +9D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF +009D10FF009D10FF00921C0000921D0000921E0000921E0000931F0000931F +0000941F0000971E0000991D00009C1800099A0E0018930303259500102698 +001F249E002E23A3004323A5005923A4006F21A3008620A600A51DA400CA19 +9F02F6139E11FF009E11FF009E11FF009E11FF009E11FF009E11FF009E11FF +009E11FF009E11FF009E11FF009E11FF00921D0000921E0000931E0000931F +0000931F00009320000094200000971F00009A1E00009D1A00079C10001795 +04022595000E2898001D269E002D24A3004024A5005724A5006D23A4008521 +A700A31FA500C91A9E01F5159F12FF009F13FF009F13FF009F13FF009F13FF +009F13FF009F13FF009F13FF009F13FF009F13FF009F13FF00921E0000931F +0000931F000093200000932000009321000095210000972000009A1F00009E +1C00069E1300159706012595000B2A99001B289E002B26A4003E26A6005526 +A6006B24A5008322A700A120A600C71C9F00F417A014FF00A014FF00A014FF +00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014 +FF00931F000093200000932000009321000093210000942200009522000098 +2200009B2100009E1E0005A01600139A0900249500082C9900182A9D002828 +A4003B28A7005228A7006926A6008124A7009E22A700C51E9F00F219A116FF +00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116 +FF00A116FF00A116FF00932000009321000093210000942200009422000094 +23000095230000982300009B2200009F200003A31900129D0C00229500052E +9900152D9D00262BA400382AA8004F2AA8006628A6007E26A7009B24A800C3 +209F00EF1BA318FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218 +FF00A218FF00A218FF00A218FF00A218FF0093210000942200009423000094 +230000942400009424000095240000982400009C240000A0230002A41C0010 +A110002096010131990012309D00232EA400352CA8004B2CAA00632AA7007C +28A7009726A800C022A000EC1DA51BFF00A11CFF00A01DFF009F1EFF009E1F +FF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009423000094 +2300009424000094240000942500009426000096260000992600009D260000 +A1250001A620000EA514001D9B05012F9A000D349C001F31A300312FA90047 +2EAB00602DA800782B9C008E2C9400AA2C8A00CF2A7D00FE267901FF267700 +FF277600FF287401FF287401FF287401FF287401FF287401FF287401FF2874 +01FF2894240000942500009425000095260000952700009527000097280000 +9A2900009F290000A3280001A823000BA819001BA00A002C9A0009379D001B +35A2002D32A0004034960054388B00693B7F007C3A740095386B00B4376500 +F3356405FF316205FF326105FF336005FF346005FF346005FF346005FF3460 +05FF346005FF346005FF349526000095270000952700009628000096290000 +96290000982A00009C2B0000A12C0000A62C0000AA280009AD1E0018A71000 +299E0305389500133F8800214580003047760041496B00574B61006E4B5900 +894B5200A6464F03F3426C29FF1E6D2BFF1D6C2CFF1D6B2CFF1D6B2CFF1D6B +2CFF1D6B2CFF1D6B2CFF1D6B2CFF1D6B2CFF1D962800009629000096290000 +972A0000972B0000972B0000992C00009E2E0000A3300000A9310000AD2D00 +07B1240015AA1700268F0E003B72020450640012575900215A4F00305B4600 +445D3E005D5E3800775B340096573607FE504017FF3D3A14FF413711FF4433 +0EFF47320EFF48320EFF48320EFF48320EFF48320EFF48320EFF48972A0000 +972B0000972C0000982C0000982D0000982E00009A2F00009F320000A63400 +00AD360000B1330004A92D0013982600217F1E00355D11004E3E0102663000 +1069260020691E00326A1800466A16005E6816007B661300B8630E02FF5F0D +02FF5F0C03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F +0A03FF5F982D0000982E0000992E0000992F0000993000009A3100009C3300 +00A2360000A8390000B03B0000A33C0006963900138633001F6F2C00304E22 +00493016005F0E0600740305127500092573000B396F000D526C0011796C00 +14B6630014E75C0016E75B0017E65B0018E65A0018E65A0018E65A0018E65A +0018E65A0018E65A0018E65A993000009A3100009A3200009B3300009B3400 +009B3400009E360000A53B0000A73E00009C4300009144000A85420015763E +00205F39002F453100432827005708190168001B116A001F23670022396400 +285B64002D8460002EB756002BF64E002CF54D002DF54D002DF54C002DF54C +002DF54C002DF54C002DF54C002DF54C002DF54C9B3300009B3400009C3500 +009D3600009D3700009D3800009F3A00009E3F0000954500008B4A0003814A +000D764A0016684800205445002C3D41003C2238004F03290160002F125F00 +36235E003D3E5D00415E5A004583540045B44A0042F2420043F3420044F341 +0045F3410045F3410045F3410045F3410045F3410045F3410045F3419D3700 +009D3800009E3900009E3A00009F3B00009F3C0000984000008F460000854B +00007C4E00067350000D695200155C53001D4B520028344F00341B48004701 +3E035800461457004F2856005544540058604F00597D47005AA740005CFD38 +005DFE38005DFE37005EFE37005EFE37005EFE37005EFE37005EFE37005EFE +37005EFE379F3B0000A03D0000A03D0000A03E0000A03F0000964200008A46 +0000804B0000774F00026E5200066756000B5E5B0011535D001A445F00232D +5D002E165800400055054F005F184C00672D47006B4545006E603F006F7C3A +0072A9350074FF2E0074FF2D0075FF2D0075FF2D0075FF2D0075FF2D0075FF +2D0075FF2D0075FF2D0075FF2DA03F0000A1400000A1410000A14100009444 +0000874700007C4A0000734E00006A520001635700045C5D00075563000D4B +6700153C6A001F276B002811690038006B084100751B3A007B2D37007F4334 +00825E3100857C2E0088B02B0085FA260085FF250085FF250085FF250085FF +240085FF240085FF240085FF240085FF240085FF24A1420000A1430000A144 +000092470000844A0000794B0000704D000067510000605700005A5D000055 +6500044E6C00094472001135760019227900220D7B002E008008330089192D +008F2B2B0092432800985F27009D8226009DB3240095F51E0093FF1D0093FF +1D0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1CA145 +0000A146000090490000814C0000764D00006D4E0000665000005E55000058 +5C0000536400004D6D0001477600063D7D000C2F8300131E88001C0C8D0025 +00950628009F162400A6282100A8401E00AF5E1F00B9831E00B7AA1E00AEE7 +1A00A8FF1800A8FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9 +FF1700A9FF17A14800008F4B00007F4D0000734F00006A500000635200005D +540000565A0000516200004C6B00004776000040800002378900062C92000B +1F9B001111A3001A01AE021F00BB121C00C6241900D1391800D35A1600DE7C +1400E5A3140EEDF70C02D2FF1102D2FF1102D3FF1102D3FF1002D3FF1002D3 +FF1002D3FF1002D3FF1002D3FF108E4C00007D4F0000715100006853000060 +5400005B56000055590000506100004A6A0000457500003F800000388B0000 +319600002AA3000021B3000216C200090BD4001100E50B1500F71F1207FF38 +080AFF570108FF700007FF8B0204FFA8050CFFED000CFFED000CFFEC000CFF +EC000CFFEC000CFFEC000CFFEC000CFFEC000CFFEC007B5100006F53000065 +5500005E570000585A0000545C00004F610000496A0000447500003E7F0000 +378900002F930000289F000021AE00001ABE000011CF000506E2000D00F40F +0F00FF230C02FF370706FF570004FF6D0003FF840102FFA10303FFBE0003FF +BD0003FFBC0003FFBC0003FFBC0003FFBC0003FFBC0003FFBC0003FFBC006D +560000635800005B5A0000565C0000525E00004E61000049650000436F0000 +3D790000368300002E8C00002797000020A4000019B1000013C000010AD100 +0601E6040C00F6160A00FF280801FF3A0302FF580001FF6C0001FF820001FF +9C0100FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200615800005A5A0000545D0000506000004B63000047650000 +436A00003D740000367D00002E870000279000001F9B000018A7000012B300 +000CC2000103D3000700E80C0700F71C0600FF2C0300FF3C0000FF5A0000FF +6E0000FF810000FF990000FFAE0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200585B0000535E00004E61000049640000 +45670000416A00003C6E0000357800002E810000268A00001F940000189F00 +0011A900000BB5000004C2000400D5050400EA120300F7220200FF2F0000FF +490000FF620000FF700000FF830000FF9B0000FFA90000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200515F00004C620000 +47660000426900003E6C00003A6E0000357200002E7B0000268400001F8E00 +001897000010A000000AAA000102B5000400C3030200D8090100E9150000F6 +230000FF2F0000FF480000FF600000FF6E0000FF800000FF960000FFA40000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4A63000045670000406B00003B6E000037700000327200002E760000267F00 +001F87000018900000109900000CA1000006AA000201B5000400C2020200D7 +090100E9150000F5220000FF2F0000FF450000FF5E0000FF6D0000FF7D0000 +FF910000FF9F0000FFAF0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200436900003D6C0000386F0000337200002F7400002B7600 +00267900001F8100001A89000015910000109900000CA1000006AA000201B4 +000400C2020200D6080100E8140000F4220000FF2E0000FF420000FF5C0000 +FF6C0000FF7A0000FF8C0000FF9D0000FFA90000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8D1400008E1500008E1500008E1600008F1600008F1700008F170000911600 +0092130000920D00098C0201188D000B199000171893002416980033159B00 +48169C005D159C0071149D0087139E00A1109D00C00C9A00E1099805FF0097 +04FF009704FF009704FF009704FF009704FF009704FF009704FF009704FF00 +9704FF009704FF008E1500008E1500008E1600008F1600008F1700008F1700 +008F1800009116000092140000920E00098D0401178D000A1A900016199300 +2317980032169B0046179C005C169D0070159E0086149F00A1119E00C00D9B +00E20A9906FF009805FF009805FF009805FF009805FF009805FF009805FF00 +9805FF009805FF009805FF009805FF008E1500008E1600008F1700008F1700 +008F1700008F180000901800009117000093150000930F00088E0501178D00 +091B9000151A94002218990031179C0045189D005B179D006F169E008515A0 +00A0139E00C00E9C00E20B9906FF009805FF009806FF009806FF009806FF00 +9806FF009806FF009806FF009806FF009806FF009806FF008E1600008F1700 +008F1700008F18000090180000901900009019000092180000931600009411 +0007900600168E00071C9100141B94002119990030189D0044199E005A189E +006E179F008416A0009E149F00BF109D00E30C9A08FF009906FF009906FF00 +9906FF009906FF009906FF009906FF009906FF009906FF009906FF009906FF +008F1700008F1700008F180000901800009019000090190000901A00009219 +00009417000095120006910800158E00061E9100131C9500201B9A002F199D +00421A9F00581A9E006D189F008217A1009D15A000BE119D00E30D9B09FF00 +9908FF009A08FF009A08FF009A08FF009A08FF009A08FF009A08FF009A08FF +009A08FF009A08FF008F180000901800009019000090190000901A0000911A +0000911A0000931A00009518000096140005930A00158E00041F9200111E95 +001F1C9A002D1B9E00401BA000561B9F006B1AA0008119A2009B17A100BD13 +9E00E30F9C0BFF009A09FF009A09FF009A09FF009A09FF009A09FF009A09FF +009A09FF009A09FF009A09FF009A09FF009019000090190000901A0000911A +0000911A0000911B0000911B0000931B00009519000097160004950C00138F +01032092000F1F95001D1E9A002B1C9F003E1DA100541DA000691BA0007F1A +A2009918A300BB149F00E3109D0CFF009B0AFF009B0BFF009B0BFF009B0BFF +009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF0090190000911A +0000911A0000911B0000911B0000921C0000921C0000941C0000961A000098 +170003970E00129003012092000D2195001B209A002A1E9F003C1EA100521F +A100681DA1007D1CA300971AA400BA16A000E2129F0EFF009B0CFF009B0CFF +009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0C +FF00911A0000911B0000911B0000921C0000921C0000921D0000921D000094 +1D0000971C000099190002991100109205002092000A24960019229A002820 +A0003920A3004F20A300661FA1007B1EA400941CA500B818A000E114A010FF +009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0E +FF009C0EFF009C0EFF00911B0000921C0000921D0000921D0000921E000092 +1E0000931F0000951E0000971D0000991B00019B14000F9608001E92000826 +960016249A002522A1003722A4004C22A4006321A3007820A400921EA600B6 +1BA100DF16A212FF019D10FF009D10FF009D10FF009D10FF009E10FF009E10 +FF009E10FF009E10FF009E10FF009E10FF00921D0000921D0000921E000093 +1E0000931F0000931F00009320000095200000981F00009A1D00009D17000D +990C001C92000429960013279A002325A1003424A4004925A5006024A40076 +22A5009020A800B31DA000DB199E13FF069917FF009818FF009719FF00971A +FF00961BFF00961BFF00961BFF00961BFF00961BFF00961BFF00921E000093 +1F0000931F0000932000009320000093210000932100009621000099200000 +9B1F00009F1A000B9D10001A9503022897000F2A9A002028A0003026A50045 +27A7005C269E0071279500852890009F288800BF277B00E6238F24FF008E25 +FF008921FF05831BFF0C7E16FF117E16FF117E16FF117E16FF117E16FF117E +16FF1193200000932000009321000093210000942200009422000094230000 +96230000992200009C210000A11E0008A11400189906012897000B2E9A001C +2C9F002C2A97003C2E8E004F32830062337900753370008C336800A8326100 +D6305F03FF2C5E04FF2D5C04FF2D5C05FF2E5B06FF2D5B06FF2D5B06FF2D5B +06FF2D5B06FF2D5B06FF2D9321000094220000942300009423000094240000 +9424000094250000962500009A2500009E240000A2210006A51900159E0C00 +25980106318C0013388100203D78002D406F003D42650051445D0067455600 +804450009B414A00BF3C6523FF1E6424FF1E6325FF1E6325FF1E6225FF1E62 +25FF1E6225FF1E6225FF1E6225FF1E6225FF1E942300009424000094240000 +94250000942500009526000095270000972700009B280000A0280000A42500 +04A81E00129D150022850C00356B0205485E00124F540020534B002E554200 +40573B0058583600705632008B522F00B94E3D15FF383711FF3D330FFF4030 +0CFF432D0AFF462D0AFF462D0AFF462D0AFF462D0AFF462D0AFF4694250000 +952600009526000095270000962800009628000096290000992A00009D2B00 +00A22B0000A62A00029C2700108E22001E761B0030560F00493A01025F2D00 +0F6324001F631D002F6516004365140059631400736113009C5F0D01FE590B +02FE590A02FE590902FE590803FE590803FE590803FE590803FE590803FE59 +0803FE59952700009628000096290000972A0000972A0000972B0000972C00 +009B2D00009F2F0000A0320000973600048C3300117E2E001D6828002D4A1F +00442D14005A0D05006D0205126F0009246D000B3769000D4E660010706600 +14A0600014E7560016E6550017E5550017E4540018E4540018E4540018E454 +0018E4540018E4540018E454972A0000972B0000972C0000982D0000982D00 +00992E0000992F00009C3100009A370000933E0000893F00087E3C00136F39 +001E5934002C402E003F2625005307180163001A1164001E22610021365E00 +26555E002B795A002DA352002AEE48002BEE48002CEE47002CEE46002DEE46 +002DEE46002DEE46002DEE46002DEE46002DEE46982D0000992E0000992F00 +00993000009A3100009A3200009B330000953A00008D400000844500017A45 +000B704400156242001F4E40002A373C00371F34004A0327025A002C125900 +332356003B3A57003F58540042774E0043A1450041E23C0041ED3B0042EE3A +0042EE3A0043EE3A0043EE3A0043EE3A0043EE3A0043EE3A0043EE3A9A3100 +009A3200009B3300009C3400009C3500009D360000913D0000884200007F47 +0000764900056D4A000C634C0014564D001C454C00252F4900301842004301 +3A035200421450004C274F0053414C00545B49005575430056993B0057DE33 +0058FA310059FA31005AFB31005AFB31005AFB31005AFB31005AFB31005AFB +31005AFB319C3600009D3700009D3800009E3900009D3A0000904000008443 +00007B470000724A0001694D00066251000B595400104E5700183E58002128 +56002B1251003C004F0649005A184500632C400066413D00695A39006A7536 +006C99310070E72B006FFF29006FFF29006FFF280070FF280070FF280070FF +280070FF280070FF280070FF289F3B00009F3C0000A03D00009D3E00008D43 +000081460000774700006E4A0000664E00015F52000358580006505D000C46 +6100143763001D226300260C6100350065093B006F1B3300752C310079412F +007D5A2C007F752A00819C270081E023007FFF21007FFF21007FFF21007FFF +20007FFF20007FFF20007FFF20007FFF20007FFF20A03F0000A04000009D41 +00008B4600007F480000744900006C4A0000644E00005C5200005659000050 +5F0003496600083F6B00102F6F00181D7100210872002D00790A2E00821A28 +00872A26008A412400905B23009477220095A1210091DA1C008DFF19008EFF +19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19A142 +00009C440000894800007B4B0000714C0000684D0000624E00005B52000054 +5800004F5F000049680001426F00053776000C297B0013187F001C06830025 +008C092400961720009C281D009E3F1A00A4591A00A9781B00AD9F1A00A7D0 +18009FFF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0 +FF1300A0FF139C460000874A0000784D00006E4E0000654F00005E50000059 +520000535700004D5E000048670000427100003B7A0002318200072589000C +168F00150896001B00A2071C00AD141800B6241500BB381300BF541200C674 +1100CD971000CCC91300BEFF0F00BEFF0E00BEFF0E00BFFF0E00BFFF0E00BF +FF0E00BFFF0E00BFFF0E00BFFF0E864C0000764F00006B500000625200005B +53000056560000525800004C5E000047670000417100003B7B000033850000 +2C8E0000239A000219A500070DAF000E01BD011400CD0F1000DB200E00EA32 +0C01F04D0A00F36B0802F8890502FEAF060AFAFF0008F1FF0108F1FF0108F2 +FF0108F2FF0108F2FF0108F2FF0108F2FF0108F2FF01745100006853000060 +55000059570000545A00004F5D00004B60000046670000407100003A7C0000 +328600002B910000239C00001CA9000016B700000EC7000205DA000900EE0C +0B00FD1F0900FF300502FF4E0001FF640000FF790001FF970000FFB10000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20066 +5500005D580000575B0000525F00004D61000049640000456700003F6E0000 +39780000328100002A8B0000239500001BA0000014AC00000EB9000007C800 +0400DC040700F0140600FD250400FF340000FF4F0000FF670000FF7B0000FF +940000FFAC0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2005B5A0000555C0000506000004B6300004666000042690000 +3E6C000039730000317C00002A850000228F00001B98000014A300000DAE00 +0006BA000200C9010500E10B0200EF1A0100FC290000FF380000FF570000FF +6B0000FF7C0000FF930000FFA60000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200545D00004E6100004964000044680000 +3F6B00003B6E000037700000317600002A7F0000228800001B920000139B00 +000CA4000004AE000300BB010400CB050100E10E0000EE1B0000FB290000FF +360000FF550000FF6A0000FF790000FF8E0000FFA10000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2004C62000047660000 +416A00003C6D000038700000337200002F740000297A0000228200001B8B00 +00139400000F9C00000AA4000004AE000300BA010400CA040200E00D0000EE +1B0000FB280000FF340000FF540000FF690000FF760000FF8A0000FF9E0000 +FFB00000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +456700003F6B00003A6F000035710000307400002C76000028770000227C00 +001D840000188C0000149400000F9C00000AA4000004AD000300BA010400CA +040200E00D0000ED1A0000FA270000FF330000FF520000FF660000FF730000 +FF860000FF9C0000FFAA0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2003D6D000037700000317300002C75000028770000247800 +0023790000217D00001D840000188C0000149400000F9B00000AA4000004AD +000300B9000400C9040200DF0C0000EC190000F9260000FF320000FF4F0000 +FF640000FF710000FF830000FF990000FFA40000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8A0F00008A0F00008B1000008B1000008B1100008B1100008C1100008C1100 +008D0F00008C0900068701021289000C118B0017108D00220F9100300E9400 +430D9600580C97006D0C9800820A980098089700B0069500CB029501F60093 +00FF009300FF009300FF009300FF009300FF009300FF009300FF009300FF00 +9300FF009300FF008A0F00008B1000008B1000008B1100008C1100008C1200 +008C1200008D1200008E0F00008D0A00058802021289000B128B0016118D00 +22109100300F9500420E9700580D97006C0D9900810C9900970A9800B00796 +00CB039501F5019401FF009401FF009401FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF008B1000008B1000008B1100008C1100 +008C1200008C1200008D1300008D1300008E1000008D0C0005890302128A00 +0A138C0015128E00211192002F109600410F9700560F98006B0E9900800D9A +00970B9900B0089700CB049601F4029401FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF009401FF009401FF008B1100008C1100 +008C1200008C1200008D1300008D1300008D1400008E1400008F1100008E0D +00048A0401118A0009158C0014138E00201292002D11970040119800551099 +006A0F9A007F0E9B00960C9A00B0099800CC069600F3029501FF009501FF00 +9501FF009501FF009501FF009501FF009501FF009501FF009501FF009501FF +008C1100008C1200008D1300008D1300008D1400008D1400008E1400008E14 +0000901200008F0E00038C0500118A0007168D0013158F001F1493002C1297 +003F1299005412990068119B007E109C00950E9B00B00B9900CC079700F203 +9501FF009501FF009501FF009501FF009501FF009501FF009501FF009501FF +009501FF009501FF008C1200008D1300008D1300008D1400008E1400008E15 +00008E1500008F15000090130000911000028D0600118B0006188D00121690 +001E1594002B1498003D139A0052139A0067129B007C119D0093109C00AF0C +9A00CC089800F3059602FF009602FF009602FF009602FF009602FF009602FF +009602FF009602FF009602FF009602FF008D1300008D1400008E1500008E15 +00008E1600008E1600008F1600008F16000091140000921200018F0800108B +0004198E00101890001C169400291599003B159B0051159B0065149C007A13 +9E0092119E00AE0E9C00CD0A9900F3079704FF009704FF009704FF009704FF +009704FF009704FF009704FF009704FF009704FF009704FF008E1400008E15 +00008E1600008E1600008F1700008F1700008F180000901800009216000093 +130001910B000E8B00021B8E000E1A91001B18950028179A0039179C004E17 +9D0064169D0078159F0090139F00AD109D00CD0C9A00F4089805FF009805FF +009805FF009805FF009805FF009805FF009805FF009805FF009805FF009805 +FF008E1600008F1600008F1700008F1700008F180000901800009019000090 +1900009317000094150000930D000C8C02011C8F000C1C9200191A96002619 +9B0037199D004C199E0062189E007617A0008E15A000AB129E00CD0E9B00F5 +0A9906FF009906FF009906FF009906FF009906FF009906FF009906FF009906 +FF009906FF009906FF008F1700008F18000090180000901900009019000090 +190000901A0000911A000093190000951700009510000B8F04001B8F00091E +9200171C9700241B9B00341A9F00491B9F005F1A9F007419A0008B18A200A9 +15A000CC109D04F4099A08FF009A08FF009A08FF009A08FF009A08FF009909 +FF009909FF009909FF009909FF009909FF0090180000901900009019000090 +1A0000911A0000911B0000911B0000921B0000941A00009618000097130009 +93080019900006219300141F9700221D9C00311CA000461DA1005C1DA00071 +1BA100891AA200A6189B00C7169000ED139212FF009114FF009015FF008F16 +FF008F16FF008E17FF008E17FF008E17FF008E17FF008E17FF00901A000091 +1A0000911B0000911B0000911C0000921C0000921D0000921D0000951C0000 +971A000099160007960C0016910204229300112297001F209D002F1FA10043 +1FA000582096006B228E007D238A0094248500B2237800D020881FFF01871F +FF018620FF018520FF028521FF028421FF028421FF028421FF028421FF0284 +21FF02911B0000911C0000921C0000921D0000921D0000921E0000921E0000 +931E0000961E0000981C00009B1900059A1000149304012394000D2597001C +2396002A248E00392886004B2C7C005D2C73006F2C6C00842D65009E2D5E00 +C22B5A01FE275801FE295701FE2A5602FE2A5603FE2A5503FE2A5503FE2A55 +03FE2A5503FE2A5503FE2A921D0000921D0000921E0000931E0000931F0000 +93200000932000009420000096200000991F00009C1C00039E140011970800 +228F00072B840012317A001E3570002A396800383B5F004B3D5800603E5300 +783E4E00913C4800B0375212FF285013FF284F13FF284E13FF294E14FF294D +14FF294D14FF294D14FF294D14FF294D14FF29931F0000931F000093200000 +9320000093210000932100009422000094220000972200009A2100009D2000 +01A119000F9212001E7B09003064020541580011474F001E4B46002B4E3F00 +3C5038005252330069503000824D2D00A348360FFD38320EFF3A2E0BFF3E2B +09FF402907FF432706FF442706FF442706FF442706FF442706FF4493210000 +93210000942200009422000094230000942300009424000094240000972400 +009B2400009A2400019223000E841F001B6E18002C510E0043370102572B00 +0F5C22001D5D1B002D5F1400405F1200545D12006C5B12008C5A0B00EC5509 +00FB540701FC540601FC550501FC550401FC550401FC550401FC550401FC55 +0401FC55942300009423000094240000942500009425000095260000952600 +009627000099270000952B00008D2F0003842E000F762A001B6025002B451D +00402A1300550C0400660205116900092367000B3563000D4B600010695F00 +13905B0014CF520015E34F0016E24E0017E24D0018E14D0018E14D0018E14D +0018E14D0018E14D0018E14D94250000952600009527000095270000962800 +009629000096290000972A0000903000008A37000081390006763700126834 +001D5230002A3B2A003A2322004E0616015D0018115E001D225A001F355800 +234F5800297154002C944C002ACA44002AE942002BE941002BEA40002CE940 +002CE940002CE940002CE940002CE940002CE9409628000096290000972A00 +00972B0000972B0000982C0000962E00008C330000853B00007E410000743F +000B693E00145B3D001E473B0026313800321C30004502250254002A125100 +31234F0038384F003C534E003F6F480040913F003FC338003EED35003FED34 +0040ED340040ED330040ED330040ED330040ED330040ED330040ED33972B00 +00982C0000982D0000992E0000992F0000953200008B380000823D00007942 +0000704400046745000C5D4600145047001A3F4700222A44002C153D003E01 +37044B003E15470048274600503E440051564100526E3D00538E370053BD2F +0054F52C0055F52B0055F62B0056F62B0056F62B0056F62B0056F62B0056F6 +2B0056F62B993000009A3100009A3200009B33000095360000893D00007F40 +0000754300006D460000654800055D4B000A544F000F485100163851001E24 +5000280F4B0038004B07410056193D005F2B3800623F350064563200666E30 +00678C2D0069BE270069FF250069FF24006AFF24006AFF24006AFF24006AFF +24006AFF24006AFF24006AFF249C3500009C3600009D370000963C00008741 +00007C440000724500006A460000624A00015B4E0002545300054C58000A41 +5B0012315C001A1E5C0024095A003200600B35006A1B2E006F2B2C00733E29 +00775626007A6E25007B8D23007CC2200079FF1D0079FF1D0079FF1D007AFF +1C007AFF1C007AFF1C007AFF1C007AFF1C007AFF1C9E3A00009F3C00009540 +000085440000784600006E47000067480000604A0000594E0000525400004C +5B0001456000073A64000F2A67001718690020046A012B00730C28007C1A24 +00802A2200833F200089571E008D711D008E921D008DC31A0088FF150088FF +150089FF150089FF150089FF150089FF150089FF150089FF150089FF15A03F +00009443000083470000754900006B4A0000634B00005D4C0000584E000051 +5400004B5B0000456300003D6A0004326F000B247300121276001B017A0024 +00850B1F008E181C0094281900963C17009A5416009F6F1600A3921500A1BD +150099FB0F0099FF0F0099FF0F0099FF0E009AFF0E009AFF0E009AFF0E009A +FF0E009AFF0E93460000814A0000734B0000684C0000604E00005A50000055 +510000505300004A5B0000446300003D6B0000367300022B7A00081E80000E +0E850016038D011A00980A1700A2161400A9241100AC370E00AF4F0D00B36B +0D00BC8C0C00BDB40D00B1EE0B00AEFF0A00AEFF0A00AEFF0900AEFF0900AE +FF0900AEFF0900AEFF0900AEFF097E4C0000704D0000654F00005D51000057 +530000525500004D580000495B0000436300003C6C0000367500002E7E0000 +258600031B8F00060F97000D04A0001200AE071000BB120C00C5200A00CB32 +0700CC490500D5660400DC840300E1A40403E9F60102D3FC0202D3FB0202D3 +FB0202D3FB0202D3FB0202D3FB0202D3FB0202D3FB026D500000635200005B +540000545700004F5A00004B5D000046600000426300003C6D000035770000 +2D800000268A00001F95000017A0000010AC000107BA000601CA020800E10D +0600F11E0500FE2D0200FF3F0000FF5F0000FF730000FF8C0000FFA80000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20060 +55000058580000525B00004D5F000048630000446700003F6B00003C6D0000 +357700002D800000268900001E930000179D000010A700000AB3000003C000 +0400D3050300E8130100F5220000FF300000FF4C0000FF630000FF730000FF +8A0000FFA20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200565C0000505F00004B63000046670000416A00003C6D0000 +386F0000347100002D7A0000268300001E8C0000179600000F9F000008A800 +0101B3000400C0020300D5080100E8140000F5220000FF2F0000FF480000FF +610000FF710000FF870000FF9F0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2004F60000049640000436800003E6C0000 +396F000035710000307300002D750000257D00001E860000178F0000129700 +000D9F000008A8000101B2000400C0020300D4070100E7130000F4210000FF +2E0000FF450000FF5F0000FF6F0000FF830000FF9C0000FFB00000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20047660000416A0000 +3B6E000036710000317300002D75000029770000257800001F8000001B8700 +00168F0000129700000D9F000008A8000102B2000400BF020300D3070100E6 +120000F3200000FF2D0000FF420000FF5D0000FF6E0000FF800000FF9A0000 +FFAA0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +3F6B0000396F0000337200002E750000297700002578000023790000237900 +001F8000001B870000178F0000129700000D9F000008A7000102B2000400BF +020300D2060100E5120000F21F0000FE2C0000FF3F0000FF5B0000FF6C0000 +FF7D0000FF930000FFA40000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20036710000307400002A7600002578000023790000237900 +002379000023790000207F00001B870000178E0000129600000D9E000008A7 +000002B1000400BE010300D1060100E4110000F11E0000FD2B0000FF3C0000 +FF590000FF6B0000FF7A0000FF8D0000FF9F0000FFAF0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8409000084090000850A0000860A0000860B0000870B0000870C0000870C00 +00870A0000850600038200040B84000C0A850016098600200889002D078E00 +3E05900053039100670392007C01920090019100A4019000BC009000E2008F +00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF0085090000850A0000860B0000860B0000870B0000870C00 +00880C0000880D0000880B0000860700028300030C85000C0B8600150A8700 +20098A002C088F003D06910052059100670492007B02930090029200A40190 +00BB009100E1008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF008F00FF008F00FF00850A0000860B0000870B0000870C00 +00880C0000880D0000890D0000890D0000890C0000870800028401020C8500 +0B0C8600140B88001F0A8A002B098F003C07920051069200660593007A0494 +008F039300A4029100BB019100DF009000FF009000FF009000FF009000FF00 +9000FF009000FF009000FF009000FF009000FF009000FF00860B0000870C00 +00880C0000880D0000890D0000890E0000890E00008A0E00008A0D00008909 +00028501010D86000A0D8700130C88001E0C8B002A0B90003B099200500793 +0065079400790695008E049400A3039200BB019200DE009100FF009100FF00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +00870C0000880D0000890D0000890E0000890E00008A0E00008A0F00008A0F +00008B0E00008A0B00018602010D8600080F8800120D89001D0D8C00290C90 +003A0A93004E09940063089500780796008E059500A3039300BA019300DC00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +009100FF009100FF00880D0000890D0000890E00008A0F00008A0F00008A0F +00008B1000008B1000008C0F00008B0C00008703000D870007108900110F8A +001C0E8D00280D9100390C94004D0B9500620A9600770997008C079600A305 +9400BA029400DB009200FF009200FF009200FF009200FF009200FF009200FF +009200FF009200FF009200FF009200FF00890E00008A0F00008A0F00008B10 +00008B1000008B1100008B1100008C1100008D1000008D0D00008905000C87 +0006128A0010108B001B108E00270F9200370D95004B0D9600600C9700750B +98008B099800A2079600BB049500DB019300FF009300FF009300FF009300FF +009300FF009300FF009300FF009300FF009300FF009300FF008A0F00008B10 +00008B1000008B1100008C1100008C1200008C1200008D1300008D1200008E +0F00008C08000A880004148A000E128C0019128F0026109300350F96004A0F +97005F0E9800730D9900890C9900A1099700BB069600DB039401FF009401FF +009401FF009401FF009401FF009401FF009401FF009401FF009401FF009401 +FF008B1000008B1100008C1200008C1200008D1300008D1300008D1300008D +1400008E1300008F1000008E0A0009890102158B000C148D00181390002412 +940033119800471199005D109900710F9B00880E9B00A00B9900BC089700DC +049501FF009501FF009501FF009501FF009501FF009501FF009501FF009501 +FF009501FF009501FF008C1200008C1200008D1300008D1300008D1400008E +1400008E1500008E1500008F15000090120000900D00078B0301158C000A17 +8E0016159100231495003113990045139A005B129A006F129C0085119D009F +0E9B00BC0A9900DD069602FF009502FF009403FF009204FF009105FF009106 +FF009006FF009006FF009006FF009006FF008D1300008D1400008E1400008E +1500008E1500008E1600008F1600008F1700009016000092140000920F0005 +8D0500148C0008198F0014189200211696002F159A0042169C0058159C006D +149D00831399009A149300B5138B00D5108B0CFF028A0FFF008810FF008811 +FF018711FF018611FF018611FF018611FF018611FF018611FF018E1500008E +1500008E1600008F1700008F1700008F1800008F1800009018000091180000 +9316000094120003910900138D00051C9000111A93001E1997002C189C003F +189600531B8D00651D8600761E82008B1F8000A41F7400C01C6C00F5167A14 +FF097914FF0A7714FF0B7614FF0C7614FF0C7514FF0C7514FF0C7514FF0C75 +14FF0C8F1700008F1700008F180000901800009019000090190000901A0000 +911A0000921A00009418000096150002940C00108D01011E90000E1D94001C +1C8E00271E860034227E004626740057256C00682667007D27620094285B00 +B3275600E9245400FA245200FA265101FA265101FA265002FA265002FA2650 +02FA265002FA265002FA26901800009019000090190000911A0000911A0000 +911B0000911B0000911C0000931C0000951A0000971800019711000E910400 +1E870007257C00112A72001C2E690027316100333359004435530059374F00 +70374B0089364600A8324200EC324A0EFF27480EFF27470EFF27470FFF2846 +0FFF28460FFF28460FFF28460FFF28460FFF28911A0000911B0000911B0000 +911C0000921C0000921D0000921D0000921E0000941E0000961D0000981B00 +009716000B8810001B7207002C5E0105395300103F49001C43410028463B00 +384934004D4B3000634A2D007A472A0096432800D9412E0BFD362A08FC3A27 +06FC3D2504FB3F2303FB412203FB412203FB412203FB412203FB41921C0000 +921D0000921D0000921E0000931E0000931F0000931F000093200000952000 +00971F0000912000008920000B7B1C0019661600294C0C003C3401024F2800 +0E5520001C5719002B5912003C590F0050570F0066560F0081540A00C65307 +00F44E0600F44E0400F54F0300F54F0200F54F0200F54F0200F54F0200F54F +0200F54F921E0000931F000093200000932000009321000093210000942200 +0094220000952200008C260000852A00027C29000D6E26001959220028411B +003B2811004F0B04005F0205106200082161000B335D000D47590010645800 +1385540015B44D0014DE480016DE470017DD470017DD460018DD460018DD46 +0018DD460018DD460018DD4693210000932100009422000094230000942300 +00942400009424000091260000882B0000823100007A3300066F310011602F +001C4C2C002736270035202000480515015600171157001B2153001E335100 +224A510026684E00298645002AB13F0029E33C0029E33B002AE33A002BE43A +002BE43A002BE43A002BE43A002BE43A002BE43A9423000094240000942500 +009425000095260000952700008F2A0000852F00007E350000773B00006D39 +000A623800155438001D413700232C33002C192C00400223034D0028134A00 +2E23470035364800394E47003B6842003D8439003CAD33003CEA2F003DEA2E +003DEA2E003EEA2D003EEA2D003EEA2D003EEA2D003EEA2D003EEA2D952600 +00952700009628000096290000962A00008E2E0000843500007B390000733D +00006B3F0004623F000D574000134A4200183942001E273F00281338003901 +340544003B16400044273E004C3B3B004D5139004E6836004F8332004FAA2C +0050ED250050EE250051EF250051EF250052F0250052F0250052F0250052F0 +250052F025972A0000972B0000982C0000982D00008E330000833A0000783D +0000703F00006841000060430005584700094F4A000D434C0013334C001A21 +4A00240C4500340046083A0051193600592A31005E3C2E0060522A0062682A +006283290064AA240063FF200064FF200064FF200065FF200065FF1F0065FF +1F0065FF1F0065FF1F0065FF1F992F0000993000009A3100008D380000813E +0000754100006C420000654300005E460000574A0001504F0003485300073C +55000F2C5600171A5600210653002F005B0C2F00641B2900692927006D3C25 +0072532100756A200075841F0076AA1C0074F5190074FF180075FF180075FF +180075FF180075FF180075FF180075FF180075FF189B3400009C3500008D3D +00007E4200007244000069450000614600005B480000554A00004F50000048 +560000405B0004355E000C256100141462001E01620129006D0D2300751A20 +007A291E007D3C1C0083531900876B19008886180088AD160084EE120084FF +110084FF100084FF100085FF100085FF100085FF100085FF100085FF109E3A +00008B4100007C4500006F470000664800005E490000584B0000534D00004E +50000047570000405E0000386400032D68000A1F6C00110E6F001A00730320 +007E0D1B00871918008C2715008E3A120092501100966911009A8610009CAE +110096E30C0093FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094 +FF0A0094FF0A8A450000794800006C490000634B00005B4C0000554E000050 +5000004B53000046570000405E000039660000306D0002257300071878000E +097C001500840317008F0D130099170F009F250D00A1350A00A34A0800A764 +0700AD840600B1A40600A9D20600A5FE0500A5FD0500A5FD0500A5FD0500A5 +FD0500A5FD0500A5FD0500A5FD05774B00006A4C0000604E00005850000052 +5200004D55000048580000445B00003F5F0000386700003170000029770000 +1F7F00041385000A078C000F0096031000A20B0B00AD150800B5220500B731 +0200B8460000C1600000C7800000CA990000C9C90000BDF50100BEF50100BE +F50000BEF50000BEF50000BEF50000BEF50000BEF500674F00005D51000056 +530000505700004A5A0000455D0000416100003D6400003869000030720000 +297A0000218300001A8D000011950003069D000800A8020800B9080400C912 +0100D51F0000E52D0000FE3F0000F65B0000F8710000F88A0000FCAA0000F1 +DC0000F2DA0000F3D80000F4D60000F4D60000F4D60000F4D60000F4D6005B +540000535800004D5C000048600000436400003E6800003A6B0000366E0000 +30730000297D0000228700001A910000139A00000CA3000005AC000300B800 +0400C8040200DF0C0000ED1A0000FB280000FF360000FF570000FF6C0000FF +800000FF9C0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200515D00004B62000046670000406A00003B6E000036700000 +327300002E75000029780000218100001A8A000015920000109A00000BA200 +0005AC000200B8000400C7040200DE0C0000ED190000FA270000FF340000FF +550000FF6B0000FF7D0000FF990000FFAF0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20049640000436800003D6C000038700000 +337200002E7500002A76000026780000227B00001E830000198A0000159200 +00109A00000BA2000005AB000201B7000400C6030200DD0B0000EC190000F9 +270000FF330000FF530000FF690000FF790000FF930000FFA90000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200416A00003B6E0000 +357100002F7400002A760000267800002379000023790000227B00001E8200 +00198A000015920000109A00000BA2000005AB000201B7000400C5030200DC +0B0000EB180000F9260000FF320000FF510000FF670000FF760000FF8D0000 +FFA20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +386F0000327300002C75000027780000237900002379000023790000237900 +00227B00001E820000198A000015920000109900000BA2000006AB000201B6 +000400C5030200DB0A0100EB170000F8250000FF310000FF4F0000FF650000 +FF730000FF880000FF9E0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002F74000029770000237900002379000023790000237900 +002379000023790000227B00001E8200001A89000015910000109900000CA1 +000006AA000201B6000400C4030200D90A0100EA160000F7240000FF300000 +FF4C0000FF620000FF700000FF840000FF9C0000FFAB0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<7A0400007B0400007C0400007C0500007D0500007E0600007F0600007F0600 +00800700007D0300007C0005047E000C037F00150380001E02820029018700 +39008A004C008A0061008B0075008C0089008B009B008A00B0008A00D0008A +00FF008A00FF008A00FF008A00FF008A00FF008A00FF008A00FF008A00FF00 +8A00FF008A00FF007B0400007C0500007D0500007E0600007E0600007F0600 +008007000081070000810700007E0400007D0004057F000C04800014038100 +1D0382002902870038008B004B008B0060008C0075008D0088008C009B008B +00B0008B00CF008B00FF008A00FF008A00FF008A00FF008A00FF008A00FF00 +8A00FF008A00FF008A00FF008A00FF007C0500007D0500007E0600007F0600 +008007000081070000810700008208000083080000800500007D0003068000 +0B058100130482001D0483002803880037018C004A018C005F018D0074008E +0088008D009A008C00B0008C00CF008C00FF008B00FF008B00FF008B00FF00 +8B00FF008B00FF008B00FF008B00FF008B00FF008B00FF007E0600007F0600 +00800700008107000082080000820800008308000084090000840900008106 +00007E00020781000A068200130582001C0584002704890036028D0049018D +005E018E0073018F0087008E009A008D00AF008D00CE008D00FF008C00FF00 +8C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF +0080070000810700008208000082080000830800008409000084090000850A +0000850A0000830700007F000108820009088300120783001B068500260589 +0035038E0048028E005D028F007201900086008F0099008E00AE008E00CD00 +8E00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF +008D00FF008D00FF0081080000820800008309000084090000850A0000850A +0000860A0000860B0000860B00008508000081010009820008098300110884 +001A07860025078A0034058F0047038F005C02900071019100850090009800 +8F00AE008F00CC008F00FF008E00FF008E00FF008E00FF008E00FF008E00FF +008E00FF008E00FF008E00FF008E00FF008309000084090000850A0000850A +0000860B0000860B0000870C0000870C0000880C0000870A00008303000883 +00060B8400100A86001909870024088B0033079000450490005B0491006F03 +92008401920098019000AD019000CB009000FF008F00FF008F00FF008F00FF +008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00850A0000860A +0000860B0000870B0000870C0000880C0000880D0000890D0000890E000089 +0B0000860500078400050D86000E0B8700180B8800230A8C00310991004406 +9200590692006E0593008304930097039200AD029100C9009200FE009000FF +009000FF009000FF009000FF009000FF009000FF009000FF009000FF009000 +FF00860B0000870C0000880C0000880D0000890D0000890E00008A0E00008A +0F00008A0F00008A0C0000880700058500030E86000C0D8800170D8A00220C +8D00300B920042099300570894006C0795008106950096049300AC029200C8 +009300FA009100FF009100FF009100FF009100FF009100FF009100FF009100 +FF009100FF009100FF00880D0000890D0000890E00008A0E00008A0F00008A +0F00008B1000008B1000008B1000008C0E00008B0A00048702020F87000B10 +8900150F8B00200E8E002E0D9300400B9400550A95006A0A96007F08970095 +069500AC049400C7019100F4008D00FF008B01FF008A01FF008902FF008902 +FF008803FF008803FF008803FF008803FF00890E00008A0F00008A0F00008B +1000008B1000008B1100008C1100008C1200008C1200008D1000008D0C0003 +89030110880008128A0013118C001F1090002C0F94003E0E9600530D970068 +0C93007B0E8F008E0F8A00A50F8400BF0C7E00E709810AFF00800AFF017F0B +FF027E0BFF027D0BFF037C0AFF037C0AFF037C0AFF037C0AFF038B1000008B +1000008B1100008C1100008C1200008C1200008D1300008D1300008D140000 +8F1200008F0F00018B06000F890006158C0011148D001D1291002A1193003A +128D004D1685005E177E006F187900821A7600981A6F00B2186800DC136B06 +FF0F6704FE106402FE126201FE136100FD136000FD146000FD146000FD1460 +00FD148C1100008C1200008D1300008D1300008D1400008D1400008E150000 +8E1500008E16000090140000911100008F09000C890003188D000E168C001A +16840024197C002F1D75003F206C00501F65006120610075225D008C235800 +A8225300D1215000F6204E00F5214D00F5224C00F6224B00F6234B00F6234B +00F6234B00F6234B00F6238D1300008D1400008E1500008E1500008E160000 +8F1600008F1700008F1700008F1800009116000092140000920D000A8C0301 +187E000720750010246A001A286100242A59002E2C52003D2E4D0053304A00 +69314700813044009E2E3F00C92D3F04FE2A3F05FE293E06FE293D07FE293D +07FE293D07FE293D07FE293D07FE293D07FE298E1500008E1600008F170000 +8F1700008F1800009018000090190000901900009019000092190000941700 +008E1400087F0E001769060028580005324D000F3744001A3C3C00263F3600 +3441300047432B005C432A00724127008C3E2500B43C2907F7332505F53722 +03F3392002F13B1F01F03C1D00F03D1D00F03D1D00F03D1D00F03D8F180000 +901800009019000090190000901A0000911A0000911B0000911B0000911C00 +00931B00008A1D0000811C0009731900165E130025470A0036310102472500 +0D4D1E001B5017002952100038530D004A510C00604F0B00784E0800AC5107 +00EB470500EA470300E9480300E8480201E7480202E7470202E7470202E747 +0202E747901A0000911A0000911B0000911B0000921C0000921D0000921D00 +00921E00008E1F0000852200007E2600017425000C66230018521F00243C18 +0035251000490A04005801040F5B0009205A000B3055000D435200105E5000 +137C4D0015A2460014DB410015DA400016DB3F0017DB3F0017DB3E0018DB3E +0018DB3E0018DB3E0018DB3E921C0000921D0000921D0000921E0000931F00 +00931F0000932000008B230000822700007B2C0000732E0005682D0010592B +001B46280023322400301D1D0042041301500016114F001A214C001D314A00 +20464A0024614700277C3F0029A1390027E3360028E4350029E4340029E434 +002AE433002AE433002AE433002AE433002AE433931F000093200000932000 +00932100009321000094220000882600007F2C000078300000713500006734 +000A5C3400144D33001A3C32001F292F00281729003A012103460026134200 +2B234000323440003649400037613B00397B3300399D2E0039E129003AEA29 +003AEA28003BE928003BE927003CE927003CE927003CE927003CE927942200 +0094220000942300009424000094240000872B00007E300000753500006D38 +0000653A00035C3A000C513C0012453D0015353D001A233A00231034003400 +31063D00381639004026360047383300494C31004A622F004B7B2D004C9C28 +004CD220004DE71F004DE81F004EE91F004EE91F004EEA1F004EEA1F004EEA +1F004EEA1F94250000952600009527000093280000862F00007C360000723A +00006A3C0000633D00005B3F0003534200074A45000A3F47000F2F4700161D +4500210A40003000430934004C192F0053282C00583928005C4D23005E6323 +005E7B24005E9B22005FDA1B005FFF1B005FFF1B0060FF1B0060FF1A0060FF +1A0060FF1A0060FF1A0060FF1A96290000972A0000932D0000853500007A3B +00006F3D0000673F00005F4100005A420000534600004C4B0000444F000338 +50000B285100141750001E044D012B00560D29005E1B240063282300683820 +006D4E1C0070651B00717C1B00709B180070D4150070FF140070FF130070FF +130071FF130071FF130071FF130071FF130071FF13982E000094320000853B +0000773F00006C410000634200005C44000056450000514700004B4C000044 +5100003C57000130590009215B0012105B001C005C032400670F1F006F1B1B +0073271A00773817007C4E140081661300827D1200839D120081D10E0080FF +0C0080FF0B0080FF0B0080FF0B0081FF0B0081FF0B0081FF0B0081FF0B9537 +0000833F000075420000694400006046000059470000534900004E4B00004A +4E0000435200003C590000345F0001286200081A65001009670019006D051B +00770F1600801A13008527100087370E008B4B0B008E630B00927C0900969D +0A0092CB08008FFF05008FFF050090FF040090FF040090FF040090FF040090 +FF040090FF048243000072460000664700005D490000564B0000504D00004B +50000046520000425500003B5A0000346100002C670001216C00071370000E +04740015007D061300880F0E0091190A009625070098340400994602009C5E +0200A27B0100A7980000A3C001009EFF01009EFF01009EFF01009EFF01009E +FF01009EFF01009EFF01009EFF0170490000644A00005A4C0000534F00004D +51000048550000435700003E5A00003A5D0000336300002C6A000024710000 +197700050D7C000B01830010008E070B00990E0600A2180200A8230000AA31 +0000AB430000B25B0000B7790000BD930000BAB70000AEF70000AEF90000AE +F90000AEF90000AEF90000AEF90000AEF90000AEF900614D00005850000051 +5300004B560000455A0000405D00003B61000036630000326600002C6C0000 +247400001D7C000013840003088B000700930109009C050600A80A0300B511 +0100BF1C0000C6290000CA3A0000D3520000D96C0000DD870000E0A50000DA +F50000D1F80000D1F80000D1F80000D1F80000D1F80000D1F80000D1F80056 +5400004F580000485C0000426000003D64000038680000336B00002F6E0000 +2B700000257700001D80000017890000129100000D9A000007A2000201AC00 +0500BC030300CF070100E5120000F3200000FF2E0000FF480000FF630000FF +740000FF8F0000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2004C5D000046620000406700003A6C00003570000030740000 +2B7600002777000023790000207E00001C850000188D0000139500000E9D00 +0009A6000003B0000400BD010300D0060100E5110000F21F0000FF2D0000FF +440000FF600000FF720000FF8A0000FFA50000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200446800003D6C00003770000031730000 +2C75000027770000237900002379000023790000207E00001C850000188D00 +00139500000E9D000009A6000003AF000300BC010300CF050100E4100000F1 +1E0000FE2C0000FF410000FF5E0000FF6F0000FF860000FF9F0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2003B6E000034710000 +2E750000287700002479000023790000237900002379000023790000217D00 +001C850000188D0000139500000E9D00000AA5000003AF000300BC010400CE +050100E3100000F01E0000FD2B0000FF3D0000FF5C0000FF6E0000FF820000 +FF9D0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +317300002B7600002578000023790000237900002379000023790000237900 +0023790000217D00001C850000188C0000139400000E9C00000AA5000003AF +000300BB010400CC050100E20F0000F01D0000FC2A0000FF3A0000FF590000 +FF6C0000FF7E0000FF9A0000FFAC0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002877000023790000237900002379000023790000237900 +00237900002379000023790000217D00001D850000188C0000139400000F9C +00000AA5000004AE000300BB010400CB050100E10E0000EF1C0000FC290000 +FF370000FF560000FF6B0000FF7B0000FF920000FFA50000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<72000000720000007300000073000000740000007501000075010000760100 +0076020000760100007600050078000C007900140079001C007A0026007E00 +3400820046008300590084006C0085008000850092008400A4008400BD0085 +00F1008300FF008300FF008300FF008300FF008300FF008300FF008300FF00 +8300FF008300FF007300000073000000740000007501000075010000760100 +00770200007702000078020000770100007700040179000B007A0013007A00 +1B007B0026007F003300830045008400590085006C0086007F008600910085 +00A4008500BD008600F0008400FF008400FF008400FF008400FF008400FF00 +8400FF008400FF008400FF008400FF00740000007401000075010000760100 +00770200007702000078020000780300007903000078020000780004017A00 +0B007B0012007B001B007C0025007F003200840044008500580086006B0087 +007F00870091008600A4008600BD008600EE008500FF008500FF008500FF00 +8500FF008500FF008500FF008500FF008500FF008500FF0075010000760100 +0077020000770200007803000079030000790300007A0300007A0400007A03 +0000790003027B000A007C0012007C001A017D002401800031008500430086 +00570087006B0088007F00880091008700A4008700BD008800ED008600FF00 +8600FF008600FF008600FF008600FF008600FF008600FF008600FF008600FF +00770200007702000078030000790300007A0300007A0400007B0400007B04 +00007C0500007B040000790002037C0009017D0011017D0019017E00230181 +003000860042008700560088006A008A007E008A0091008800A4008800BD00 +8900EC008700FF008700FF008800FF008800FF008800FF008800FF008800FF +008800FF008800FF0078030000790300007A0300007B0400007B0400007C05 +00007D0500007D0500007E0600007E0500007A0001047D0008037E0010027F +0019027F00220282002F008800400089005500890069008B007E008B009000 +8A00A4008900BC008A00EB008900FF008900FF008900FF008900FF008900FF +008900FF008900FF008900FF008900FF007A0400007B0400007C0400007D05 +00007D0500007E0600007F0600008007000080070000800600007C0101037D +0007047F000F03800018038100220284002E0189003F008A0054008B006900 +8C007D008C0090008B00A3008A00BC008B00E9008A00FF008A00FF008A00FF +008A00FF008A00FF008A00FF008A00FF008A00FF008A00FF007C0500007D05 +00007E0600007F060000800700008007000081070000820800008308000082 +0700007F0300037E00060680000E05810017048200210485002D038A003E01 +8C0052018C0067018E007C008E008F008D00A3008C00BB008D00E6008B00FF +008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00 +FF007E0600007F060000800700008107000082080000830800008409000084 +0900008509000084090000810500018000040882000C078300150684001F05 +86002C058B003C028D0050028E0066018F007A008F008E008E00A2008D00BA +008E00E3008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00 +FF008D00FF008D00FF00810700008208000083080000840900008409000085 +0A0000850A0000860B0000860B0000870A0000840700018101030983000B09 +8400140885001E0787002A078C003A048F004E038F0064029100790091008D +009000A1008B00B6008800DC008500FF008300FF008200FF008100FF008000 +FF007F00FF007F00FF007F00FF007F00FF008409000085090000850A000086 +0A0000860B0000870B0000870C0000880C0000880D0000890C000087090001 +8301010B8400090B8500120A87001D0A890028098E00380791004C058F0061 +068A0072088500840A8100980A7B00AE097700CC067905FF007705FF017605 +FF027505FF037405FF037305FF037305FF047305FF047305FF04860A000086 +0B0000870C0000880C0000880D0000890D0000890E0000890E00008A0E0000 +8A0E00008A0B00008603000B8500060E8700100D88001B0C8A00270B880034 +0D830045107C0057127500681471007A156D008E156800A6136400C8106300 +FE0E6000FE0E5F00FD0F5E00FD0F5D00FD105C00FC105C00FC105C00FC105C +00FC10880C0000880D0000890E0000890E00008A0F00008A0F00008A100000 +8B1000008B1000008C1000008C0D0000890700088600041189000E0F830017 +127A00211573002B186C00381A6400481B5E005A1C5B006E1D5700841E5400 +9D1E4F00C01D4D00F21B4B00F21C4A00F21D4900F21D4800F11E4700F11E47 +00F11F4700F11F4700F11F8A0E00008A0F00008A1000008B1000008B110000 +8C1100008C1200008C1200008C1200008D1200008E1000008D0A0006830201 +147700071B6D000F1F620018225900212552002A274C00372947004C2B4400 +622B4100782B4000942A3C00B7293B01FA273902FB273803FB273803FC2837 +03FD283603FD283603FE283603FE283603FE288B1000008C1100008C120000 +8C1200008D1300008D1300008D1400008D1400008E1500008E150000901200 +0085120005760D0014610400235200062B48000E303E001835370023383100 +313B2B00423C2800563C25006B3B230082392100A3372100EA341F00EB351D +00E9351C00E7361B00E6361A00E6361A00E6371A00E6371A00E6378D130000 +8D1300008D1400008E1500008E1500008E1600008F1600008F1700008F1700 +008B180000821A0000791A00066B17001357110021420900302E01033F2300 +0C461B0019481400264B0E00354C0A00464B09005A49080071480600974C05 +00D1420400DA400200D9400201D9400202D93F0203D83F0203D83F0203D83F +0203D83F8E1500008E1600008F1700008F1700008F18000090180000901900 +0090190000881C00007F200000772300006D22000A5F2000154C1C00213816 +002F220E00410903005001040F5400081F52000B2F4E000D404A0010584700 +1373440015933F0014C93A0014D8390015D9380016D9380017D9370017D937 +0017D9370017D9370017D9378F1800009018000090190000901A0000911A00 +00911B0000911B0000851F00007C240000742800006C2A00036129000F5227 +00184125001F2E21002B1B1B003B031201490015104700192144001C304200 +1E424200215A4000247237002792330027CA310026E22F0027E32E0028E32E +0028E42E0028E42D0028E52D0028E52D0028E52D911A0000911B0000911C00 +00921C0000921D00008F1E00008223000079280000712C00006A3000006130 +0009552F0012482F0017382E001B272B0024152500330120033F0024133B00 +292338002E33380032453700335A330035722D003690290038C2250037E923 +0038E8230038E7220039E6220039E6210039E5210039E5210039E521921D00 +00921E0000931F0000931F00008D22000080280000772D00006E3100006734 +0000603600025736000A4C38000F4039001131390016213600200E2F002E00 +2E063600351632003C252F0042352C0045482A00475C280047732700489125 +0049BB1C0049E51A004AE61A004AE619004BE719004BE719004BE719004BE7 +19004BE7199321000093210000942200008B2500007F2C0000753200006C36 +0000643800005D3A0001573C00014F3F0003474200053B43000B2B4200131A +40001D083B002B003F0B2D00481929004E2726005236230057491E00595E1D +005A741F005A901E005BBD17005BFB15005BFB15005CFB15005CFB15005CFB +14005DFB14005DFB14005DFB1494240000942500008A2900007E3100007337 +0000693A0000603C00005A3E0000543F00004F41000048460000404B000034 +4C0007244C0011134A001B0248022700510E2400591A20005D271E0062361B +00674A17006B6016006C7615006C9014006CBA10006CFB0E006CFB0E006CFA +0D006CFA0D006DFA0D006DFA0D006DFA0D006DFA0D962800008A2F00007D37 +0000703C0000663E00005D40000056410000514300004C4500004748000040 +4D0000375200002C5400061D55000F0C54001A0057041F00610F1A00691B17 +006D2616007135130075490F007B600E007D770C007D900C007DB909007CFF +06007DFF06007DFF06007DFF05007DFF05007DFF05007DFF05007DFF058B34 +00007C3D00006E3F0000634100005A430000534500004E470000494A000044 +4C00003F4F0000375400002F590000245C0006165E000E0660001700670716 +0071101200791B0E007F270B008135080084460500875D05008A7403008F91 +02008EB702008BFE01008BFF01008CFF01008CFF00008CFF00008CFF00008C +FF00008CFF00794100006B4300006045000058470000514900004B4C000046 +4F0000405100003C540000375600002F5C0000276100001C6500050E69000D +016D01120076080E00811109008A1B05008E26010090320000924300009359 +0000977100009D8F00009CB1000096EF000096FF000096FF000096FF000096 +FF000096FF000096FF000096FF00694600005E480000554B00004E4E000048 +510000425400003D57000038590000335C00002F5E0000276400001F6B0000 +147000050774000B007C030C00850808008E0F0500961703009C2001009E2D +00009F3C0000A2520000A66C0000AD8A0000AEAC0000A5DD0000A3FD0000A3 +FD0000A3FD0000A3FD0000A3FD0000A3FD0000A3FD005B4C0000534F00004B +520000455600003F5A0000395D0000346000002F6200002B65000027670000 +1F6E000018750001117B0004098000080086000B0090050800990A0500A410 +0200AD190000B3250000B5340000B8490000C0640000C5820000C89D0000C3 +D40000B9F60000BAF60000BAF60000BAF60000BAF60000BAF60000BAF60050 +53000049580000425C00003C60000036640000316700002C6A0000286D0000 +246F0000227100001E780000197F0000158600000E8E000207950006019C01 +0700A8040500B8080200C8100100D41C0000E32A0000FC3B0000F9570000F9 +6F0000FB890000FEAD0000F7CE0000F8CC0000F9CA0000FAC80000FAC80000 +FAC80000FAC800475D00004063000039680000336C00002E70000029730000 +247600002377000023780000237900001F8100001A88000016900000119800 +000CA0000007A9000101B5000400C3020200D90A0100EB170000F9260000FF +330000FF540000FF6B0000FF7F0000FF9D0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2003E6B000037700000307300002B760000 +2578000023790000237900002379000023790000237900001F8000001B8800 +0016900000119800000CA0000007A9000101B4000400C2020200D8090100EA +160000F8250000FF320000FF510000FF690000FF7B0000FF9A0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200347200002D750000 +27770000237900002379000023790000237900002379000023790000237900 +001F8000001B880000168F0000119700000CA0000007A9000101B4000400C1 +020200D7090100E9150000F7240000FF310000FF4F0000FF670000FF780000 +FF930000FFAC0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +2A760000247900002379000023790000237900002379000023790000237900 +0023790000237900001F8000001B870000168F0000119700000D9F000007A8 +000101B3000400C1020300D5080100E8140000F5230000FF300000FF4C0000 +FF640000FF740000FF8C0000FFA40000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +00237900002379000023790000237900001F8000001B870000168F00001297 +00000D9F000008A8000101B2000400C0020300D4070100E7130000F4210000 +FF2F0000FF480000FF610000FF710000FF860000FF9F0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<6B0003006B0002006C0002006C0002006D0002006D0001006E0001006E0001 +006E0001006F0001007000050070000B007100130072001B00730024007400 +300078003F007B0051007C0063007D0075007E0087007D0099007C00AD007C +00CD007C00FB007C00FB007C00FB007C00FB007C00FB007C00FC007C00FC00 +7C00FC007C00FC006C0002006C0002006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100040071000B00720012007300 +1A007400230076002F0079003E007C0051007D0063007E0075007F0088007E +0099007E00AD007D00CD007E00FD007E00FD007E00FD007E00FE007E00FE00 +7E00FE007E00FE007E00FE007E00FE006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100010071000000720004007200 +0A0073001100740019007500230077002E007B003D007D0050007E00620080 +00750081008800800099007F00AD007F00CD007F00FF007F00FF007F00FF00 +7F00FF007F00FF007F00FF007F00FF007F00FF007F00FF006E0001006E0001 +006F0001007000010070000100710001007100000072000000720000007200 +0000730003007400090075001100760019007700220078002D007C003C007F +0050007F0062008100750082008800810099008000AD008000CE008000FF00 +8000FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF +006F0001007000010070000100710001007200000072000000730000007300 +00007300000074000000740002007500090076001000770018007800210079 +002C007E003B0080004F00810061008200740083008800820099008100AD00 +8100CE008100FF008100FF008100FF008100FF008100FF008100FF008100FF +008200FF008200FF0071000100710000007200000072000000730000007400 +000074000000750100007501000076010000750001017600080077000F0078 +001700790020007B002B007F003A0082004E00820061008400740085008700 +840099008300AD008300CE008300FF008300FF008300FF008300FF008300FF +008300FF008300FF008300FF008300FF007200000073000000730000007400 +00007501000075010000760100007702000077020000780200007601010178 +00070079000E007A0016007B001F007C002A008000390083004D0084006000 +8500730086008700850099008400AD008500CE008400FF008400FF008400FF +008400FF008400FF008400FF008400FF008400FF008400FF00740000007501 +0000750100007602000077020000770200007803000079030000790300007A +03000078010101790006017B000D007B0015007C001E007E00290082003800 +85004B0085005F008700730088008700870099008600AD008600CE008600FF +008600FF008600FF008600FF008600FF008600FF008600FF008600FF008600 +FF0076010000770200007702000078030000790300007A0300007A0400007B +0400007B0400007C0500007A0200007A0004027C000C017D0014017E001D01 +7F0028018300370087004A0087005E00890072008A008600890098008800AD +008800CD008700FF008700FF008700FF008500FF008400FF008400FF008300 +FF008300FF008300FF0078030000790300007A0300007B0400007B0400007C +0500007D0500007E0500007E0600007F0600007D0400007B0003047E000A03 +7F0013027F001C0281002602850035008900480089005D008B0071008C0085 +00870095008200A8007F00C4007C00FE007A00FF007800FF007700FF007700 +FF007600FF007600FF007600FF007600FF007B0400007B0400007C0500007D +0500007E0600007F0600008007000081070000810700008208000080060000 +7D0001067F0009058000110481001B0382002503860033018B004601850058 +02800069057C007B0677008D067300A1056F00B9046F01EC026F02FF016E02 +FF016D02FF026C02FF026C02FF026B02FF026B02FF026B02FF027E0500007F +06000080070000810700008108000082080000830800008409000084090000 +850A0000840800007F020006810007078200100683001906830023067D002E +0878003D0B72004E0D6D00600F690072116500861162009B105E00B80D5E00 +EE0A5E02FC095C02FB0A5A01FA0B5900F90C5800F90C5700F80D5700F80D57 +00F80D8107000082080000830800008409000085090000850A0000860A0000 +860B0000860B0000870B0000860A0000830500048200050A83000E097A0015 +0D71001E1069002713620032165C004017570052185400671A52007C1A4F00 +931A4C00B1194A00E0174800ED174600ED184500ED194400ED194400ED1A43 +00ED1A4300ED1A4300ED1A84090000850A0000860A0000860B0000870B0000 +870C0000880C0000880D0000890D0000890E00008A0C0000870800027B0201 +0F6F00071665000E1A5B00161D51001F214A00272344003325410045273E00 +5B273C0070273A0089253800A8243600DB233500F4243400F6243300F62532 +00F7253100F7253100F7263100F7263100F726870B0000870C0000880D0000 +890D0000890E00008A0E00008A0F00008A0F00008A1000008B100000880F00 +007D1000016F0B00105A03001F4D00062542000E2A3900162F310021322B00 +2E3427003D3523005035210064341F007A331D0095311D00C42F1D00E12E1B +00DF2E1A00DD2F1900DD2F1800DD2F1700DC2F1700DC2F1700DC2F890E0000 +8A0E00008A0F00008A1000008B1000008B1100008C1100008C1200008C1200 +00851500007B1700007118000363150010510F001D3D07002B2B0103382000 +0C3E19001841120024440C003245080041450600544205016B410401874202 +00B4400300D1380201D2380202D2370203D2370203D3370204D3360204D336 +0204D3368B1000008B1100008C1100008C1200008D1300008D1300008D1400 +008C14000081180000781C0000701F0000661F0007581D00124719001D3413 +0029200D00390803004901040E4C00081E49000B2D45000D3E420010523E00 +126B3B001587370015B3340014D5320015D5310016D5310016D5300017D530 +0017D6300017D6300017D6308D1300008D1400008D1400008E1500008E1500 +008E1600008A1800007E1C0000752100006D240000662700015A26000B4D24 +00143D22001B2B1D00261918003303110141001410400018203C001B2F3A00 +1D3F39001F533600226A2F0025872C0028B52C0025E12A0025E2290026E329 +0026E4280027E4280027E5280027E5280027E5288E1600008F1700008F1700 +008F18000090180000871B00007B200000722500006A290000632C00005B2C +0006502C000F432C0012342A0018242800201323002D011E04380022133400 +272231002B312F002E412D0030542900326A27003386250036AF220033EC1F +0034EB1E0035EA1E0036E91D0036E81D0036E81D0036E81D0036E81D901900 +0090190000911A0000911B0000861F00007A250000702A0000672D00006030 +00015A310002523300064834000A3C35000D2E3500121E32001C0D2C002900 +2B072F0032162B00382428003D3325004044230043572100446C2000458720 +0047AB190046E4150047E5150048E5140048E5140048E5140049E6140049E6 +140049E614921C0000921D0000921D000084230000782900006E2E00006532 +00005D34000156360001513800004B3B0000433E0000373F0007283E000F18 +3B001A06360026003C0B270044192300492520004D331D0052451A00555918 +00566E180056871A0058AC130057F40F0058F50F0058F50F0059F50E0059F5 +0E0059F50E0059F50E0059F50E932000009320000083270000762E00006B33 +0000623600015A380001533B00004E3C0000493E0000434100003B45000030 +4800032147000D1145001801430222004D0E1E00541A1A00572519005C3316 +0061451200655A100068700F0068880E0068AA0B0067EA080068F0080068EF +070068EE070068ED070069EC070069EC070069EC0792240000822C00007534 +0000693800005F3A0001573D0000503F00004B41000046430000414500003B +480000324C0000284F0003194F000C094F00170052061A005C101500631A11 +00672510006B330D006F440A00735A0800767005007888040079A9030078DF +010079FC010079FD010079FD010079FD01007AFE01007AFE01007AFE018133 +000073390000673C00005C3E0000544100004E43000048450000434800003D +4A0000384C0000324F000029540000205700031258000C035A011400610811 +006B110C00731C0800792704007B3302007D4201007E560100826C00008686 +000087A8000085E4000084FF000084FF000084FF000084FF000084FF000084 +FF000084FF00703E0000644000005A420000524500004B480000454B00003F +4D00003A50000034520000305300002A570000225B0000175F00040A62000B +0067030E006F0A0A00781107007F1A040085230200872E0100883D00008950 +00008C6700009182000093A200008FD300008EFF00008EFF00008EFF00008E +FF00008EFF00008EFF00008EFF00614400005846000050490000484D000042 +5000003C53000036550000305800002C5A0000285B0000225F00001A640000 +12690004086C000A0070010E0078070B00810D07008A150400901E02009329 +000095370000964A0000996100009E7E0000A39E00009DC6000099FF000099 +FF00009AFF00009AFF00009AFF00009AFF00009AFF00544B00004D4E000046 +5200003F55000038590000325C00002D5E0000286100002463000021640000 +1F6700001A6D0000147200020C760007037B000C0083040B008C0907009610 +04009E180200A4220000A6300000A7420000AC590000B1770000B8940000B4 +C00000AAFA0000AAFA0000AAFA0000AAFA0000AAFA0000AAFA0000AAFA004A +530000435700003C5C0000355F00002F6300002966000025680000216A0000 +216B0000226C0000206F00001C750000177C00001082000308890007019000 +090099040700A5090400B1100100BC190000C4260000C8370000CF4F0000D7 +6A0000DB870000DFA90000CFF60000CFF60000CFF70000CFF70000D0F70000 +D0F70000D0F700405E000039630000326700002C6B0000266E000022710000 +22720000237300002374000023740000217800001D80000018880000149000 +000F9900000AA2000004AD000300BA010400CB050100E20F0000F01D0000FE +2C0000FF420000FF600000FF730000FF910000FFB00000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200366B0000307000002974000024770000 +237900002379000023790000237900002379000023790000227B00001D8300 +00198B0000149300000F9B00000BA3000004AD000300B9010400CA040200E1 +0E0000EF1C0000FD2B0000FF3E0000FF5E0000FF700000FF8A0000FFA90000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002D75000026780000 +23790000237900002379000023790000237900002379000023790000237900 +00227B00001E830000198A0000149200000F9A00000BA3000004AC000300B9 +000400C9040200E00D0000EE1B0000FC290000FF3A0000FF5B0000FF6E0000 +FF850000FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +002379000023790000227B00001E830000198A000015920000109A00000BA3 +000005AC000300B8000400C8040200DF0C0000ED1A0000FB280000FF370000 +FF580000FF6C0000FF810000FF9D0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +0023790000237900002379000023790000227B00001E830000198A00001592 +0000109A00000BA2000005AB000201B7000400C7030200DE0B0000ED190000 +FA270000FF340000FF550000FF6B0000FF7D0000FF9A0000FFB00000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<63000600630006006400060065000500650005006600050067000400670004 +0068000400680004006800040068000B0068001200690019006A0022006A00 +2C006C0039007100480074005A0076006A0077007C0077008E007600A00074 +00B8007300E7007300E8007300E8007300E8007400E8007400E8007400E800 +7400E8007400E8006400050064000500650005006600050067000400680004 +00680004006900040069000400690003006A00040069000A00690011006A00 +18006B0021006C002C006E003800720048007500590076006A0078007C0078 +008E007700A0007500B8007500EC007500EC007500EC007500EC007500EC00 +7500ED007500ED007500ED007500ED00660005006600050067000400680004 +006800040069000400690003006A0003006A0003006A0003006B0003006A00 +0A006B0011006C0018006D0020006E002B006F003800730048007600590077 +006A007A007D007A008E007800A0007700B8007600EF007600F1007600F100 +7600F1007600F1007600F2007600F2007600F2007600F20068000400680004 +0069000400690003006A0003006A0003006A0003006B0003006B0002006C00 +02006C0003006C0009006D0010006E0017006F00200070002A007100370075 +00470077005900790069007B007D007B008F007900A0007800B8007800F100 +7800F5007800F5007800F5007800F5007800F5007800F5007800F5007800F5 +0069000300690003006A0003006A0003006B0003006B0002006C0002006C00 +02006C0002006D0002006D0002006E0008006F000F007000170071001F0072 +0029007300360077004700790059007A0069007D007D007D008F007B00A000 +7A00B9007A00F3007A00F8007A00F8007A00F8007A00F8007A00F8007A00F8 +007A00F8007A00F8006A0003006B0003006B0002006C0002006C0002006D00 +02006D0001006D0001006E0001006E0001006F0001006F00070070000E0071 +00160072001E007300280075003500790046007B0058007C0069007E007D00 +7E008F007C00A1007C00B9007C00EF007C00FB007C00FB007C00FB007C00FB +007C00FB007C00FB007C00FB007C00FB006C0002006C0002006D0002006D00 +01006E0001006E0001006F0001006F0001006F000100700001007000010071 +00060072000D007300150074001D0075002700770034007B0045007C005800 +7E006A007F007D0080008F007E00A1007E00BA007E00F5007E00FE007E00FE +007E00FE007E00FE007E00FE007E00FE007E00FE007E00FE006D0001006D00 +01006E0001006F0001006F0001007000010070000100710001007100000072 +000000720000007300050073000C007400140076001C007700260079003300 +7E0044007E0057007F00690081007C0081008F008000A1008000BA008100F5 +008000FF008000FF008000FF008000FF008000FF008000FF008000FF008000 +FF006F0001006F000100700001007100010071000000720000007200000073 +0000007300000074000000740000007400040075000B007600130077001B00 +780025007B00310080004200800056008100690083007C0083008F008200A1 +008200BA008100F0007E00FF007C00FE007B00FD007A00FD007A00FD007900 +FC007900FC007900FC00710001007100000072000000730000007300000074 +00000074010000750100007601000076020000760200007600030177000A00 +7800110079001A007A0023007C00300081004100820055008300680082007A +007D008B0078009B007500B2007300D6007300FC007100FC007100FD007000 +FD007000FF006F00FF006F00FF006F00FF0073000000730000007401000075 +01000076010000760200007702000078020000780300007903000079030000 +77000202790009007A0010007B0018007C0022007E002E0080003E007B004E +0076006002720071046F0083046B0096036700AC026600CD016901FF006801 +FF006701FF006702FF006602FF006602FF006502FF006502FF007601000076 +020000770200007802000078030000790300007A0300007A0400007B040000 +7C0400007C0500007A0101017B0007027C000F017D0017017900200273002A +046C0037076700450A6300570C6100690E5E007E0E5B00920D5800AB0A5800 +D5085A02FB055801FA075600F9085500F8095400F7095300F7095300F60A53 +00F60A79030000790300007A0400007B0400007C0400007C0500007D050000 +7E0600007F0600007F060000800700007D0300017C0005047A000C05710013 +0968001C0C6000241059002E1253003A1450004B164D005F164B0074174900 +8A164800A5154600CB144500E9134300E8144200E8144100E7154000E71540 +00E7163F00E7163F00E7167C0500007C0500007D0500007E0600007F060000 +8007000081070000820800008208000083080000840900007F060000730201 +0B670006115D000D155300151949001D1D420025213D0030233A0040233800 +54233600692234007F2133009A203200C11F3200EA1E3000E91F2F00E91F2E +00E9202D00E8202D00E7202C00E7202C00E720800700008007000081070000 +82080000830900008409000085090000850A0000860A0000860B00007F0D00 +00750E0000670A000C5302001A470006203D000D243300152A2C001F2D2700 +2B2F2200392F1F004A2F1D005D2E1B00722E1A008A2C1900AE2A1B00D82719 +00D6281700D6281600D5291600D5291500D5291500D5291500D52984090000 +84090000850A0000860A0000860B0000870B0000870C0000880C0000870D00 +007C110000741400006A1600015C13000C4B0D001938060026280103311E00 +0B371600163A1000223C0A002F3E05003C3E03014F3C0302643902037D3801 +029E370201CF300202CF300203CF2F0104CF2F0104CF2F0104CF2F0105CF2F +0105CF2F870C0000870C0000880C0000880D0000890E00008A0E00008A0F00 +00841100007915000070190000691C00005F1D0003521B000E421600183011 +00241E0B00320703004100040D4300081C40000B2B3C000D3B39000F4E3500 +12633100157C2E0016A12E0013CF2B0014CF2B0015CF2B0016CF2A0016CF2A +0017CF2A0017CF2A0017CF2A8A0E00008A0F00008A0F00008B1000008B1000 +008B11000082140000771900006D1D0000662100005F230000552300074721 +000F391E0017291A00211716002C020F013A0013103800171F34001A2D3100 +1C3C2F001E4E2B0020622600237C260026A2270023DB250024DC240024DD24 +0025DD230025DE230025DE230025DE230025DE238C1100008C1200008C1200 +008D1300008D13000080180000741D00006B220000632500005C2800005629 +00014B2900093F28000E312700142224001C12200027011C04310020132D00 +25212A00282F27002B3E24002D5021002F641F00317D1F00349E1E0032DF1B +0032E51A0033E4190033E3190034E2190034E1180034E1180034E1188E1500 +008E1500008E1600008D1700007E1C0000722200006826000060290000582C +0001522E00024D30000044310004393100092B31000F1C2E00180C28002300 +280728002F1625003523220039311F003C401C003F531A0041661A00427E1A +00439E160044D3100044E2100045E20F0045E30F0046E30F0046E30F0046E4 +0E0046E40E90180000901800008C1A00007C20000070260000662B00005D2E +0001563000024F3200004A340000453600003E390000343B0002253A000B15 +3700160532002100390C210040181D0044241A00493117004D411400505412 +0052691200537F1300549F0F0055D6090055F0090055F0080055F1080056F1 +080056F1080056F1080056F108901C00008A1E00007B2500006E2B0000642F +00005A320002533500004D37000048390000423B00003E3C0000354000002C +4300011E42000A0E400014003F031D00480E18004E19140052241200573010 +005B410D005F550A00636B080065820600669F050064C8020064EC020064EB +020064EB010064EA010065EA010065EA010065EA017D2800007A2A00006D30 +00006134000058370001503900004A3C0000443E00003F4000003941000034 +4300002C470000234A0001164A000906490014004E07150056100F005D1A0B +006224090066310600684006006B5404006E69010071800000729C000070C2 +00006FF200006FF3000070F3000070F3000070F3000070F3000070F3006E34 +00006B3500005F380001563B00004E3E000048400000414300003B45000035 +470000304900002C4A0000244E00001B5100010E53000902550210005C090C +00631108006A1A06006E230400702E0400723C0300744E0300776401007B7C +00007D9800007BC100007BFF00007BFF00007BFF00007BFF00007BFF00007B +FF00007BFF00603C00005D3D0000534000004C430000454600003E49000037 +4B0000314D00002C4F000028500000245200001D560000145900010A5B0008 +005D010F0064070C006B0E090073170600792004007C2B02007E3701007F48 +0000815F0100857700008994000088BF000085FF000085FF000086FF000086 +FF000086FF000086FF000086FF0054430000514400004A480000424B00003B +4E0000345100002E5300002955000024570000205800001F5900001B5D0000 +166100010D6400070266000E006C050D00740B09007D130600851C03008926 +01008A3200008C4300008D580000917100009790000096B5000091FF000091 +FF000091FF000091FF000091FF000091FF000091FF00494C0000474D00003F +50000038540000315700002B590000255C0000215E0000205F000020600000 +206000001C640000176900000F6D00050671000B0077020D007F080900890F +06009116030097200100992C00009B3B00009D510000A16B0000A88B0000A8 +AF00009FEF00009FFF00009FFF00009FFF00009FFF00009FFF00009FFF003E +5500003C570000355A00002D5E000027610000226300002165000021660000 +2166000021670000216800001E6C000019720000127800030A7D0007028300 +0B008C04090095090600A00F0300A9180100AF230000B2320000B4470000BC +620000C2820000C5A00000BCDC0000B6F70000B6F70000B6F70000B6F70000 +B7F70000B7F70034600000326200002B66000025690000216B0000226C0000 +226D0000226E0000226F000022700000227100001F7600001B7D0000168500 +00118D000109940004029A000700A6030600B5070300C60D0100D5190000E3 +270000F8370000FD550000FE6E0000FF880000FFAE0000FFBD0000FFBD0000 +FFBC0000FFBC0000FFBC0000FFBC002A6D0000286E00002272000023730000 +23740000237600002377000023780000237900002379000023790000207E00 +001C860000178E0000129600000D9E000009A7000002B1000400BF020300D4 +070100E8140000F6230000FF310000FF510000FF6A0000FF7F0000FF9E0000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002379000023790000 +23790000237900002379000023790000237900002379000023790000237900 +0023790000207E00001C860000178D0000139500000E9E000009A6000002B1 +000400BE020300D2070100E7130000F5220000FF300000FF4E0000FF680000 +FF7B0000FF9B0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +00237900002379000023790000207E00001C850000178D0000139500000E9D +000009A6000002B0000400BE010300D1060100E6120000F3210000FF2E0000 +FF4A0000FF640000FF760000FF940000FFB00000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +002379000023790000237900002379000023790000207E00001C850000188D +0000139500000E9D000009A6000003B0000400BD010300D0060100E5110000 +F21F0000FF2D0000FF450000FF610000FF720000FF8C0000FFA70000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<59000900590009005A0009005B0009005B0008005C0008005D0008005D0008 +005E0008005E0007005F0007005F000A005F0011005F001800600020006100 +2A0062003500650041006B0050006F0060007000700071008200700094006E +00AA006C00CA006D00DE006D00DE006D00DE006D00DE006D00DE006D00DE00 +6D00DE006D00DE005B0009005B0009005B0008005C0008005D0008005E0008 +005E0008005F0007005F000700600007006000070060000A00600011006100 +1800610020006200290063003400670041006D005000700060007100700072 +008200710094006F00AA006D00CA006E00DE006E00DE006E00DE006E00DE00 +6E00DE006E00DE006E00DE006E00DE005D0008005D0008005D0008005E0008 +005F0007005F00070060000700610007006100070062000600620006006200 +0900620010006200170063001F006400280065003300680040006E00500071 +0060007200700073008200720094007000AA006F00CA006F00DE006F00DE00 +6F00DE006F00DE006F00DE006F00DE006F00DE006F00DE005F0007005F0007 +005F0007006000070060000700610006006200060062000600630006006400 +0600640005006400080064000F006400160065001E0066002700670032006A +0040006F004F00720060007300710074008200730094007200AA007000C900 +7000DD007000DD007000DD007000DD007000DD007000DD007000DD007000DD +00600007006000070061000700620006006200060063000600640005006400 +05006500050066000500660005006500080065000E006600150067001D0068 +002600690032006C003F0070004F0073006000740071007500820075009500 +7300AA007200C9007100E1007100E1007100E1007100E2007100E2007200E2 +007200E2007200E20063000600630006006300060064000500650005006500 +050066000500670004006700040068000400680004006700070067000D0068 +00140069001C006A0025006B0031006E003E0072004F007500600076007100 +76008300760095007500AA007400C9007300E7007300E7007300E7007300E7 +007300E8007300E8007300E8007300E8006500050065000500650005006600 +05006700040068000400680004006900040069000300690003006A0003006A +0006006A000C006A0014006B001B006C0024006D00300070003D0074004E00 +760060007700710078008300770095007600AA007600CA007500EE007500EE +007500EE007500EE007500EE007500EE007600EE007600EE00670004006700 +0400680004006900040069000300690003006A0003006A0003006B0003006B +0002006B0002006C0005006C000B006D0013006E001A006F0023006F002F00 +72003C0076004E0078006000790071007A008400790095007800AA007800CA +007800F4007800F5007800F5007800F5007800F5007800F5007800F5007800 +F50069000300690003006A0003006A0003006B0003006B0002006C0002006C +0002006C0002006D0002006D0001006E0004006E000A006F00120070001900 +7100220072002D0075003B0078004D007A005F007B0071007C0084007B0096 +007800A9007600C9007300EE007200EC007100EB007000EB007000EA006F00 +E9006F00EA006F00EB006B0002006B0002006B0002006C0002006C0002006D +0001006D0001006E0001006E0001006F0001006F0001007000030070000900 +71001000720018007300210074002C0077003A007B004D007A005E0077006E +0073007F00700091006C00A5006A00C1006B00F5006B00FC006A00FF006900 +FF006900FF006800FF006800FF006800FF006D0001006D0001006D0001006E +0001006F0001006F0001007000010070000100710001007100010071000000 +720002007300080073000F00740017007500200077002B00720037006E0045 +006B005600690067026600790363008C026000A2005F00C2006300FF006200 +FF006100FF006000FF005F01FF005F01FF005E01FF005E01FF006F0001006F +00010070000100700001007100010072000000720000007300000073000000 +7400000074000000740001007500070076000E007700160070001D00680026 +01610032045C003E075A004E095800600A5600740C5500880A53009F075200 +C2055501FC045300FA045100F8055000F7064F00F5064F00F4064E00F4074E +00F30772000000720000007200000073000000740000007401000075010000 +75010000760100007702000077020000760100007700050171000B02680012 +055F001A095600220D50002A114B003513480044134700571345006B144400 +8013430099114200B9104200E50E4000E40F3F00E3103E00E3103D00E2113C +00E2113C00E1113B00E1117501000075010000750100007601000077020000 +770200007803000079030000790300007A0400007A040000760400006A0201 +075F00060D55000C114B00141641001B1B3A00232035002E2133003C203100 +4E1F3000611E2F00761E2E008E1D2D00AE1B2E00DD192D00DC192B00DC1A2A +00DB1A2900DA1A2900DA1B2800DA1B2800D91B780300007803000079030000 +790300007A0400007B0400007C0400007C0500007D0500007E060000760900 +006D0C0000600900074D0200154200061B37000C202E00132627001D292200 +282A1E00362A1B0045291900572917006A291600802816009E251800CE2117 +00CE221500CE221400CE231300CD231300CD231200CD231200CD237C050000 +7C0500007C0500007D0500007E0600007F06000080070000810700007D0900 +00730D00006B1100006313000056110008460C0014340400212501032B1B00 +0A30140015330D00203508002C360300393701014A3501035E320105742F00 +04912E0101C22A0102CA290103CA290104C9290105C9290105C9280105C928 +0006C928800700008007000081070000820800008308000084090000850900 +007B0D0000701100006815000060180000591A00004C1800093E1400142D0F +001F1C0A002B0602003900040D3B00081B37000B2933000D3830000F492C00 +115D2900157226001691270013BE260014C8250014C8250015C9250015C925 +0016C9240016C9240016C924850A0000850A0000850A0000860B0000870B00 +00870C0000791100006E160000651A00005D1D0000561F00004F200002431F +000B351C00132618001C16140026020E013200120F3000161E2C00192B2800 +1B3A26001C4A22001E5D1F0021731F002492200023C2210022D3200023D41F +0023D41F0024D51F0024D51E0024D51E0024D51E880D0000880D0000890D00 +00890E000085100000771500006C1A0000621E00005A210000532400004D25 +0001462600033A2500092E24001020220017101D0021011A042A001F122600 +24202300262D1F00293B1C002B4C1A002D5F19002F7519003191190031BC17 +0030D7160031D6150031D6150032D5140032D5140032D5140032D5148B1000 +008B1000008B10000084130000751900006A1F000060230000582600005028 +00014A2A0000452B00003F2D0000352E0004282D000B1A2B00130B25001D00 +260722002D151F0032221B00362E1800393D15003C4E13003E6113003F7613 +004192110042BB0C0041DB0B0042DC0A0043DC0A0043DD090043DD090044DD +090044DE098D1400008D14000082170000731E0000672300005E270000552A +00014E2C0001482E0000423000003D310000373300002F3700002236000713 +330011042E001B00360B1A003C17160040221300452E1000493D0E004C500C +004E640A00507A09005295070053BF030051EC030052EC020052EC020052EC +020052EC010053EC010053EC017A1E00007A1E000072220000662800005B2B +0001522E00024B310000453300003F3500003A360000353800002F3A000026 +3D00001A3E00060C3C0010003B031700440E120049180D004D220A00522E08 +00573D0600594F05005C6502005F7C0000609501005EB800005CED00005CED +00005CED00005CED00005CED00005CED00005CED006B2A00006B2A0000642D +0000593000025033000049360000433800003C3A0000363C0000303E00002C +3F0000274100001E44000013450005044400100049070F0051100900551806 +00582106005B2C06005E3A0600614C060064610300677801006991010067B1 +000065E8000065E8000065E8000065E8000065E8000065E8000065E8005E33 +00015E330001573500014E380000473B0000403D0000393F0000324100002D +44000028450000244700001F490000174C00000D4D0005014C000F0051060D +00580E0A005E160700621F0600652A0600683705006A4705006D5D03007073 +0000728C000072AE000070F3000070F3000070F3000070F3000070F3000070 +F4000070F400523B0000523B00004D3D0000454000003D430000354500002F +48000029490000244B0000204D00001C4E00001B4F0000175200000F540004 +0455000D0059050E00600C0B00671407006D1D050071270400733303007542 +0300775702007A6E00007E8800007EAA00007CF100007CFF00007CFF00007C +FF00007DFF00007DFF00007DFF004743000047430000434600003A49000032 +4B00002C4E000026500000215200001D5300001D5400001E5400001D550000 +18590000115C0004075E000B0061030E0068090B0071110800791905007E23 +0300802F0100823D000083500100856700008A8300008CA5000089E7000088 +FF000088FF000088FF000088FF000088FF000089FF003C4D00003C4D000037 +4F00002F51000029540000235600001E5800001F5900001F5A00001F5B0000 +1F5B00001E5C00001A610000136500020A680009016B010E0072060B007B0D +0800841505008B1E02008E2901008F3600009149000093610000997D00009D +A0000097D0000095FF000095FF000095FF000095FF000095FF000095FF0031 +560000315600002D580000265B0000205E0000205F00002060000020610000 +206100002062000020630000206400001B690000166F00010D730006047700 +0B007F030B0088080800910F05009A1702009F210000A22E0000A3400000A7 +580000AD770000B3960000ACC40000A6FB0000A6FB0000A6FB0000A6FB0000 +A7FB0000A7FB00276100002761000023630000216500002166000021670000 +2168000021690000216A0000216B0000226B0000216D00001D730000187A00 +00128000020A870006038E00090096030800A1080400AE0E0200BA170000C2 +240000C7340000CD4C0000D6690000DB880000DEAD0000CDF60000CEF60000 +CEF60000CFF60000CFF70000CFF700226C0000226C0000226D0000226E0000 +226F0000227100002272000023730000237400002375000023760000237700 +001E7F00001A87000015900000109900000CA1000006AB000201B7000400C6 +030200DF0C0000EE1B0000FC290000FF3D0000FF5F0000FF730000FF940000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002377000023770000 +23770000237900002379000023790000237900002379000023790000237900 +0023790000237900001F8100001A88000016900000119800000CA1000006AA +000201B6000400C5030200DD0B0000ED190000FB280000FF390000FF5C0000 +FF700000FF8C0000FFAE0000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +00237900002379000023790000237900001F8100001A880000169000001198 +00000CA1000006AA000201B5000400C4030200DB0A0000EC180000FA270000 +FF350000FF580000FF6D0000FF860000FFA50000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +002379000023790000237900002379000023790000237900001F8000001A88 +000016900000119800000CA0000007A9000101B5000400C3020200DA0A0100 +EB170000F9260000FF330000FF550000FF6B0000FF810000FF9F0000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<50000C0050000C0050000C0051000C0051000C0052000C0053000B0053000B +0054000B0054000B0055000B0055000B005400110054001800540020005600 +2800580031005C003B0061004800670056006A0066006B0077006A00890068 +009F006600BD006800F2006800F2006800F2006800F2006800F1006800F100 +6800F1006800F10052000C0052000C0052000C0052000C0053000B0054000B +0054000B0055000B0056000A0056000A0057000A0057000A00560010005600 +170056001F0057002700590030005D003B0062004700680056006B0066006C +0077006B00890069009F006700BC006900ED006900ED006900ED006900ED00 +6900ED006900ED006900ED006900EC0054000B0054000B0054000B0054000B +0055000B0056000A0056000A0057000A0057000A0058000A00580009005900 +090058000F005800170058001E00590026005B0030005E003B006300470069 +0056006C0066006D0077006C0089006A009E006800BB006A00E8006A00E800 +6A00E8006A00E8006A00E8006A00E8006A00E8006A00E80055000A0055000A +0055000A0056000A0057000A0058000A0058000A0059000900590009005A00 +09005A0009005B0009005A000F005A0016005B001D005C0025005D002F005F +003A00650047006A0056006D0066006E0077006E008A006C009E006A00B900 +6A00E3006A00E3006B00E3006B00E3006B00E3006B00E3006B00E3006B00E3 +0058000A0058000A0058000A0058000A00590009005A0009005A0009005B00 +09005B0008005C0008005C0008005D0008005D000E005C0015005D001C005E +0025005F002E0061003A00660047006C0056006F0066006F0077006F008A00 +6D009E006B00B8006B00DF006B00DF006B00DE006C00DE006C00DE006C00DE +006C00DE006C00DE005A0009005A0009005A0009005A0009005B0009005C00 +08005C0008005D0008005E0008005E0008005F0007005F0007005F000D005F +00140060001B006100240061002D0063003900680047006D00560070006700 +7000770071008A006F009E006D00B8006D00DE006D00DE006D00DE006D00DE +006D00DE006D00DE006D00DE006D00DE005C0008005C0008005C0008005D00 +08005D0008005E0008005F0007005F00070060000700600007006100070061 +00060061000C006100130062001A006300220063002C00650038006A004600 +6F005600710067007200780072008A0071009D006F00B7006E00DE006E00DE +006E00DE006E00DE006E00DE006E00DE006E00DE006E00DE005E0007005E00 +07005E0007005F000700600007006100070061000600620006006200060063 +000600640006006400050064000B0063001200640019006500210066002B00 +670037006C00460070005600730067007300780074008A0073009D007100B6 +007000DD007000DD007000DD006F00DB006E00DA006E00D9006D00D9006D00 +D9006100070061000700610007006200060063000600630006006400050065 +0005006500050066000500660005006700040066000A006600100067001800 +6800200068002A006A0036006E00450072005600740067007500780073008A +006F009C006C00B6006C00F3006B00F6006A00F6006A00F9006900F9006900 +F9006800F9006800FB00640005006400050064000500650005006500050066 +00050067000400680004006800040069000400690004006900030068000900 +69000F006A0017006B001F006B0029006D003500710044006F0053006D0063 +006B0074006700860064009A006100B6006500FF006300FF006200FF006100 +FF006100FF006000FF006000FF006000FF0067000400670004006700040068 +0004006800040069000400690003006A0003006A0003006B0003006B000300 +6B0002006B0007006C000E006D0015006E001E006C0027006500320060003E +0060004C005F005D015E006F025C008201590097005700B5005C00FF005A00 +FF005900FF005800FF005700FF005700FF005700FF005600FF006A0003006A +0003006A0003006A0003006B0003006B0002006C0002006C0002006C000200 +6D0002006D0001006D0001006E0006006F000D006C00140065001B005E0024 +0058002E035300380551004506500057074F006A094E007F084D0094054C00 +B0034E00EB024D00F6024C00F3024B00F1034A00EF034900EE044800ED0448 +00EC046C0002006C0002006C0002006C0002006D0002006D0001006E000100 +6E0001006F0001006F00010070000100700001006F00040067000A015E0011 +03550018074D001F0C460027114200301340003E12400050113F0062113E00 +77103E008E0E3D00AA0C3D00D40A3C00DF0A3B00DE0B3A00DD0B3900DC0C38 +00DC0C3800DC0C3700DB0C6E0001006E0001006E0001006F0001006F000100 +7000010071000100710000007200000072000000730000006D030000620201 +03570005094D000B0E430012133A0019193200201E2E002B1F2C00391D2B00 +491B2A005A1A2A006E1A290084192800A0172A00C7142A00D4142800D31427 +00D2152600D1152500D1152500D0152400D016710000007100000071000000 +720000007200000073000000740000007401000075010000730300006C0600 +00640900005A090003480200103C00051732000B1C2900122223001A251E00 +26261A00322517004123150051231400632312007723120091211400B61D14 +00C81C1300C71D1200C71D1100C61D1000C61E1000C61E0F00C61E74010000 +74010000740100007501000076010000770200007702000078030000720600 +00690A0000610D00005A10000050100003410B000F3004001C220103251800 +092A1200132C0B001F2E06002A2F0200362E0001462D0003592A00066D2800 +0686270003AA250103C3230104C3230005C3230005C2230006C2230006C223 +0006C222780300007803000078030000790300007A0400007B0400007A0500 +00710A0000670E00005E1200005715000051170000471700043912000F2A0D +001A190900250602003100040C3200081A2F000B282A000D3627000F462400 +10582200136B1F0015841F0014AA210013C2200013C2200014C21F0015C21F +0015C21F0015C21F0015C21F7D0500007D0500007D0500007E0600007F0600 +007B0900006F0E0000641200005C160000541900004E1B0000481D00003E1C +00053119000E2416001714130020020D012B00110F2800151D240018292100 +1A371D001B461B001D5819001F6C180022851A0022AB1C0020CB1B0021CC1B +0021CC1A0022CC1A0022CC1A0022CC1A0022CC198308000083080000830800 +00840900007A0D00006D12000062170000591A0000511D00004A2000004421 +00003F230000362300042A22000B1E2000130F1C001B01190423001D112000 +221F1C00252B180027391500294913002B5A12002D6E12002F8613002FA812 +002ECC11002ECC11002FCC10002FCB100030CB0F0030CB0F0030CB0F870B00 +00870B0000870B0000791000006B160000601B0000571F00004F2200004824 +0000412500003C27000038280000302A0000252A00061828000F0924001800 +25071B002B1418002F201400332C1100373A0E003A4B0C003C5D0B003D700B +003E880A003FA807003FD2050040D3040041D4040041D5030042D5030042D5 +030042D6037715000077150000771500006A1B00005E200000552300004C26 +0001452800003F2A0000392B0000342D0000302F0000293100001F33000311 +30000C032C001600330B140038160F003C200C00412C0800463A06004A4B05 +004A5F03004C7301004D8A00004DAC00004BE200004BE200004BE200004BE3 +00004BE300004BE300004BE3006820000068200000682000005D2500005228 +00014A2A0000432D00003C2E000036300000313200002C3400002836000021 +380000183A00010A38000B0038041100400E0A0044170600461F06004A2A05 +004E38050050480500525C0400547201005689000056A9000053E7000052EB +000053EB000053EB000053EB000053EB000053EB005A2900005A2900005A29 +0000512C0002482F0000413100003A340000333600002D380000283A000024 +3C0000203D0000193F000010410001053F000B0041050D00460C0A004B1507 +004D1D06005027060055340600574506005A5904005D6F01005F8701005FA5 +00005BDC00005BED00005BED00005BED00005BED00005BED00005BED004E32 +00004E3200004E320000463400003F37000037390000303C00002A3E000025 +400000204100001C4300001A44000017450000114700010746000A0047030F +004D0B0B0053130800561B0600592506005D3106006041060062540500666B +02006883000069A0010065C8000065E8000065E8000065E8000065E8000065 +E8000065E800443A0000443A0000443A00003D3D0000343F00002D41000027 +440000214600001C4700001B4800001B4900001B490000184B0000134D0001 +094E0009004F020F0054090C005B1109006119060065230500682E05006A3C +05006C4F050070660200737E0000749B000071C5000071F5000071F5000072 +F5000072F5000072F5000072F500394300003943000039430000314500002A +480000244A00001E4C00001C4D00001C4E00001C4E00001C4F00001D500000 +1A520000155500000C5600070258010E005D070D00640E0A006C1706007220 +0400742B030076380200784902007B6001007F7800008196000080C500007F +FF00007FFF00007FFF00007FFF00007FFF00007FFF002E4C00002E4C00002E +4C0000274E0000215100001D5200001D5300001D5400001E5500001E550000 +1E5600001E5700001C590000175D00000E5F00060461000D0067040D006E0B +0A00771306007E1C0400832602008532000087420000875800008B72000090 +9100008EBC00008CFF00008CFF00008CFF00008CFF00008CFF00008CFF0024 +55000024550000245500001E5800001E5900001F5A00001F5B00001F5B0000 +1F5C00001F5D00001F5E00001F5E00001D61000019660000116A0004086D00 +0A0072020D007A070A00840E07008C16040092200200952B0000963B000098 +5000009C6A0000A38B0000A2B300009BFF00009BFF00009BFF00009BFF0000 +9BFF00009BFF00205F0000205F0000205F0000206000002061000020620000 +2063000020640000216500002166000021660000216700001F6A00001A7000 +00147500020C7B00060481000A0089030A00920807009C0F0300A6170100AC +220000AF310000B1450000B9610000BF820000C2A40000B5EA0000B3F80000 +B3F80000B3F80000B4F80000B4F80021680000216800002168000021690000 +216A0000216B0000226C0000226D0000226E0000226F000022700000227100 +00207500001C7C000018840000138C00000C930003049A000600A5010600B4 +050300C60A0100D7160000E6240000FA340000FF520000FF6C0000FF880000 +FFB20000FFB60000FFB60000FFB50000FFB50000FFB5002272000022720000 +22720000237400002375000023760000237800002379000023790000237900 +002379000023790000217C00001D840000188B0000149400000F9C00000AA5 +000003AF000300BC010400CF050100E5110000F3200000FF2F0000FF4E0000 +FF690000FF800000FFA10000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +0023790000237900002379000023790000217C00001D830000198B00001493 +00000F9B00000AA4000004AE000300BB010400CD050100E4100000F21F0000 +FF2E0000FF4A0000FF660000FF7B0000FF9D0000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +00237900002379000023790000237900002379000023790000227C00001D83 +0000198B0000149300000F9B00000AA4000004AD000300BA010400CC050100 +E20F0000F11E0000FE2C0000FF440000FF620000FF760000FF970000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<47001000470010004700100047001000480010004800100049000F004A000F +004A000F004B000F004B000E004B000E004B0010004900170049001F004C00 +26004F002D0054003600590041005F004E0063005C0065006D0064007F0062 +0095006000B2006400FD006400FD006400FD006400FD006400FD006400FD00 +6400FD006400FD0049000F0049000F0049000F0049000F004A000F004A000F +004B000F004B000E004C000E004C000E004D000E004D000E004D0010004B00 +17004B001E004D00250050002D00550036005A00400060004D0064005C0066 +006D0065007F00630094006100B0006500FC006500FC006500FC006500FC00 +6500FC006500FC006500FC006500FC004A000F004A000F004A000F004B000F +004B000E004C000E004D000E004D000E004E000D004E000D004F000D004F00 +0D004F000F004D0016004D001E004E00250051002C00560036005A00400061 +004D0065005C0067006D0067007F00650093006200AF006600FA006600FA00 +6600FA006600FA006600FA006600FA006600FA006600FA004C000E004C000E +004C000E004D000E004D000E004E000D004F000D004F000D0050000D005000 +0C0051000C0051000C0051000E004F0015004F001D005000240053002C0057 +0035005B00400062004D0066005C0068006C0068007F00660093006400AD00 +6600F5006600F8006700F8006700F7006700F7006700F7006700F7006700F7 +004E000D004E000D004E000D004F000D004F000D0050000D0051000C005100 +0C0052000C0052000C0053000B0053000B0053000D005200140052001C0053 +00230055002B00580035005C00400063004D0068005C006A006C0069007F00 +680093006500AC006600E6006700F5006700F5006700F5006700F5006700F5 +006700F5006700F50051000C0051000C0051000C0051000C0052000C005200 +0C0053000B0053000B0054000B0055000B0055000B0056000A0056000C0055 +00130054001B005500220057002B00590034005D00400064004D0069005C00 +6B006C006B007E00690092006700AB006700D9006800F0006800F0006800F0 +006800F0006800F0006800F0006800F00053000B0053000B0053000B005300 +0B0054000B0055000B0055000B0056000A0057000A0057000A0058000A0058 +000A0058000B005700120057001900580021005A002A005C0034005F003F00 +66004D006A005C006C006C006C007E006B0092006900AA006800D0006900EA +006900E9006900E9006900E9006900E9006900E9006900E90056000A005600 +0A0056000A0056000A0057000A0057000A0058000A0059000900590009005A +0009005A0009005B0009005B000A005A0011005A0018005B0020005C002900 +5E00330061003F0067004D006C005D006E006D006E007F006D0092006B00A9 +006900CC006A00E9006900EE006900F3006800F7006800FB006800FB006800 +FD0058000900580009005800090059000900590009005A0009005B0009005B +0008005C0008005C0008005D0008005D0008005E0009005D0010005E001700 +5E001F005F0028006000320063003E0069004C006D005D006D006C006B007D +00670091006300A9006200D9006400FF006300FF006200FF006100FF006100 +FF006000FF006000FF005B0009005B0009005B0009005B0008005C0008005D +0008005E0008005E0008005F0007005F000700600007006000070061000800 +60000F006100160061001D00620026006300310062003D0062004900630059 +006200690060007B005C008F005900AA005C00E7005A00FF005900FF005900 +FF005800FF005700FF005700FF005700FF005E0007005E0007005E0007005E +0007005F000700600007006100070061000600620006006300060063000600 +640006006300070063000D006300140064001C005F00240059002E00560038 +005600440056005300560065015500790052008E004F00A9005100DE005100 +FF005000FF005000FF004F00FF004E00FF004E00FF004E00FF006200060062 +00060062000600620006006300060063000600640005006500050065000500 +6600050066000500670004006700050066000C006000130059001A00530023 +004E002B024B0034054A003F0449004E04480061064800750648008A034600 +A3014600CC014600EF004500ED014400EB014300E9014200E8014200E70141 +00E70165000500650005006500050065000500660005006700040068000400 +6800040069000400690003006A0003006A000300640003005C000900540010 +014B00160743001D0D3C00231338002D1539003A113900490E38005B0E3800 +6E0D3800840B38009D093800C0073700DB063600D9073500D9073400D80733 +00D7073300D7083200D7086900040069000400690004006900040069000300 +6A0003006A0003006B0003006B0002006C0002006A000200610001005A0101 +014E00040745000A0B3B001011330016172C001E1C2800281C2600351A2600 +4417250054162500661624007B15240094142600B4112600CF0F2500CE0F24 +00CD102300CC102200CC112100CB112100CB116B0002006B0002006B000200 +6B0002006C0002006D0002006D0001006D0001006E000100670000005F0300 +005A060000520800004202000C370004132D000A192500101E1F0018211A00 +242116002F2013003C1E11004B1E10005C1F0F006F1F0E00861D1000A51A12 +00C3181100C2180F00C2180E00C1190E00C1190D00C1190D00C1196E000100 +6E0001006E0001006E0001006F000100700001007000010070000000660300 +005E070000570A0000500D0000490E00003C0A000A2C0400161F0102201600 +08241000122609001D28050028280101342700024225000454230006672100 +087C1F00069A200003BD1E0004BC1E0005BC1E0006BC1D0006BC1D0007BC1D +0007BC1D720000007200000072000000720000007200000073000000700200 +00650700005C0B0000540E00004D11000047130000411500013511000A270C +00151808001F0502002900040C2A00081927000B2623000D3320000F421D00 +10531B0012661900147B1900149A1B0012BC1B0012BC1B0013BD1A0013BD1A +0014BD1A0014BD1A0014BD1A76010000760100007601000076010000770200 +0070060000640B00005A0F0000521200004A150000441700003F190000391A +00012D180009211500131312001A020D012400110E2200151B1E0017281A00 +1A3517001B4314001C5413001E661200207C1300209A16001EC417001FC417 +001FC4160020C4160020C4150020C4150020C4157A0400007A0400007A0400 +007A0400006F090000620F0000581300004F17000048190000411B00003B1D +0000361F000032200000272000061C1E000E0D1A00160118041D001D111A00 +211D16002429120026370F0028460C002A560B002B680B002D7D0C002D990D +002BC20D002CC40C002CC30C002CC30B002DC30B002DC30A002DC30A710C00 +00710C0000710C00006E0E000061130000561800004D1B0000451D00003E1F +000038210000332300002F2500002B260000222800021627000A0822001300 +24071500291312002D1E0D00312A09003538060039480500395904003A6A03 +003A7E02003898020039C0020039C7020039C8020039C802003AC802003AC8 +02003AC80262170000621700006217000060180000551C00004B1F00004322 +00003C24000036260000312700002C290000282B0000242D00001B2F00000F +2E0007022B011000310A0C0035140800381E05003B2903003F360300424503 +004157030041690200427E01004299000043C5010042D4010042D4010042D4 +010042D5000042D5000042D500552000005520000055200000532100004924 +0000412600003A280000332A00002E2C0000292E000024300000203200001C +33000014350000083500060033020C00380A09003C1306003D1C0600402604 +00453304004842040049540300496802004B7D00004B9900004BC600004AE0 +00004AE000004AE000004AE000004AE000004AE0004A2800004A2800004A28 +0000482800003F2B0000382D0000312F00002B32000025340000213600001C +37000018390000173A0000123B00000A3A00050138020D003D090B00421107 +00441A0600462305004B2F05004F3F05005051040052660200547C01005598 +000053C2000052EA000052EA000052EA000052EA000052EA000052EA003F2F +00003F2F00003F2F00003E300000353200002E35000027380000223A00001D +3C0000183D0000183E0000183E0000193F0000134000000C400005023F010D +0043070C00481009004C1806004E210600522C0600563B0600584D06005B63 +03005E7A01005F9401005DBA00005BED00005BED00005BED00005BED00005B +ED00005BED00353800003538000035380000333800002B3B0000253E00001E +40000019420000194200001A4300001A4300001A4400001A44000015460000 +0E4700040346000D004A060E00500E0A0055160700581F06005C2906005F37 +060061480600655E0400687501006A8F010068B1000066E7000066E7000066 +E7000066E7000066E7000066E7002A4100002A4100002A4100002841000022 +4400001B4600001B4700001B4800001B4800001B4900001B4A00001B4A0000 +1B4B0000174D0000104F0003054F000C0052040E00580B0B005F130800651D +0600682705006B3305006C43050070580300736F0000768A000076AF000074 +F7000074F8000074F8000074F8000074F8000074F800204A0000204A000020 +4A00001F4A00001C4C00001C4D00001C4E00001C4E00001C4F00001D500000 +1D5000001D5100001D52000019550000135800020859000A005C020F006209 +0C006A1008007219050077230300792E03007B3D01007C5101007F68000084 +84000085AA000083FD000082FF000082FF000083FF000083FF000083FF001D +5200001D5200001D5200001D5200001D5300001E5400001E5500001E560000 +1E5700001E5700001E5800001E5900001F5900001B5D0000156100010C6400 +080166000E006D060C00760C09007F140500851E0300892901008B3600008C +4900008E610000947E000097A3000091E3000091FF000091FF000091FF0000 +91FF000091FF001F5A00001F5A00001F5A00001F5A00001F5C00001F5C0000 +1F5D00001F5E0000205F0000206000002061000020610000206200001C6700 +00176C00010F7000050674000A007B020C00840809008D0E0500961603009C +2001009E2D0000A03F0000A3570000A9770000B0990000A7CD0000A3FD0000 +A3FD0000A3FD0000A4FD0000A4FD0020630000206300002063000020640000 +2165000021660000216700002168000021690000216A0000216B0000226B00 +00226C00001E7200001A780000147F00020C850005048D000800940209009F +070500AC0D0200B8150000C2220000C8320000CD4A0000D7670000DB880000 +E3B70000CFF60000CFF70000D0F70000D0F70000D0F800226E0000226E0000 +226E0000226E0000226F000022710000227200002373000023740000237500 +00237600002377000023780000207F00001B870000178E0000129700000D9F +000007A8000101B4000400C2020200DA0A0100EB180000FA270000FF380000 +FF5D0000FF730000FF990000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +002379000023790000237900002379000023790000207F00001C860000178E +0000129600000D9F000008A8000101B3000400C1020200D8090100EA170000 +F9260000FF350000FF5A0000FF6F0000FF8F0000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +0023790000237900002379000023790000237900002379000023790000207E +00001C860000178E0000129600000D9E000008A7000102B2000400C0020300 +D6080100E9150000F8250000FF330000FF560000FF6D0000FF870000FFAB00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410012 +0042001200420012004300120043001200430012004200160041001D004300 +230046002A004B00320051003C00570047005C0055005F0065005F0076005D +008B005A00A7005D00DE006000FF006000FF006000FF006000FF006000FF00 +6000FF006000FF004100130041001300410013004100130041001200420012 +00420012004300120043001200440012004400110044001100450011004300 +150042001D004400230047002A004C00320052003C00580047005D00550060 +006500600076005E008A005C00A5005D00D8006100FF006100FF006100FF00 +6100FF006100FF006100FF006100FF00430012004300120043001200430012 +00430012004300120044001100440011004500110045001100460011004600 +1100460010004500150043001C004500230049002A004D00320053003B0059 +0047005E00540061006400610076005F008A005D00A4005E00D2006200FF00 +6200FF006200FF006200FF006200FF006200FF006200FF0044001100440011 +00440011004400110045001100450011004600110046001100460010004700 +10004700100048001000480010004700140045001C00460022004A0029004E +00310054003B005A0046005F0054006200640063007500610089005E00A300 +5F00CE006300FE006300FE006300FE006300FE006300FE006300FE006300FE +00460011004600110046001100460011004600100047001000470010004800 +10004800100049000F0049000F004A000F004A000F004900130047001B0048 +0022004C0029005000310055003B005B004600600054006300640064007500 +620088006000A1006000CA006400FE006400FE006400FE006400FE006400FE +006400FE006400FE0048001000480010004800100048001000480010004900 +0F004A000F004A000F004B000F004B000E004C000E004C000E004C000E004B +0012004A001A004A0021004D0028005200300056003A005C00460061005400 +6500630066007500640088006100A0006100C6006500FD006500FD006500FD +006500FD006500FD006500FD006500FD004A000F004A000F004A000F004A00 +0F004B000F004B000E004C000E004C000E004D000E004E000D004E000D004E +000D004F000D004E0012004C0019004D0020004F0027005300300057003A00 +5D0046006300540066006300670074006600880063009F006200C3006600FA +006600FA006600FA006600FA006600FA006600FA006600FA004D000E004D00 +0E004D000E004D000E004D000E004E000D004E000D004F000D0050000D0050 +000C0051000C0051000C0052000C00500010005000180050001F0051002600 +55002F00590039005E0045006400530068006300690074006800870065009E +006100C2006400FF006200FE006100FF006100FF006000FF006000FF005F00 +FF0050000D0050000D0050000D0050000D0050000D0051000C0051000C0052 +000C0052000C0053000B0054000B0054000B0054000B0054000F0053001600 +53001E005400260057002E005A0039005F0045006500530065006200630073 +005F0086005B009F005900C7005B00FF005900FF005800FF005800FF005700 +FF005600FF005600FF0052000C0052000C0052000C0052000C0053000B0054 +000B0054000B0055000B0055000A0056000A0057000A0057000A0058000A00 +57000E005600150057001D005800250059002D00570037005800420059004F +005A005F00580071005600860051009F005100C9005100FF005000FF004F00 +FF004E00FF004E00FF004D00FF004D00FF0056000A0056000A0056000A0056 +000A0056000A0057000A0057000A0058000A0059000900590009005A000900 +5A0009005B0009005B000C005A00140058001B00520023004F002B004D0033 +004D003E004E004B004E005C004E006F004C00840049009D004800C4004800 +FD004700FC004600FA004500F9004500F8004400F8004400F7005900090059 +0009005900090059000900590009005A0009005B0009005B0008005C000800 +5D0008005D0008005E0008005E0008005C000B00540012004D001900490021 +004500280442002F0643003A03430048014200580341006C03420081014000 +99003F00BA003E00EA003D00E7003B00E6003B00E5003A00E4003A00E30039 +00E3005D0008005D0008005D0008005D0008005D0008005E0008005E000700 +5F000700600007006000070061000700610006005A000500530008004A000E +01420014073A001A0E3400201430002915310036103200440C3200540B3200 +660A32007A08320092063200B1043200D7033000D6032F00D5042E00D4042E +00D4042D00D3042D00D3056000070060000700600007006000070061000700 +62000600620006006300060064000600640005005E00040057000300500001 +01450003043E00090935000E0F2D00141527001C1924002619220032172100 +401420004F13200060121F0072121F0089112100A60E2300CB0B2100CA0B20 +00C90C1F00C90C1E00C80C1E00C80C1D00C80D640005006400050064000500 +6400050065000500660005006600050067000400670004005C000200550001 +014B030000470500003D0300073200030F2900081521000F1A1B00171C1700 +221D13002D1B100039190E0047190C00571A0B00681A0B007D1A0C00981710 +00BF130E00BE140D00BE140C00BD150B00BD150A00BC150A00BC1569000400 +69000400690004006900040069000400690003006A000300640002005A0101 +00520400014B07000045090000400B0000380A00042A0400111D01021B1400 +081F0E00112108001B22030126220102322000033F1E0005501C0006621B00 +08751900078F1A0004B3190005B7190006B7180006B7180007B7180007B718 +0007B7186C0002006C0002006C0002006C0002006C0002006D000200620000 +005A04000051070000490A0000430D00003E0F00003911000031110004240C +000F160800190502002300040B2400081820000B241C000E3119000F3F1600 +0F4F15001161140013741300148D150011B1160011B8160012B8150013B915 +0013B9150013B9150013B9156F0001006F0001006F0001006F0001006F0001 +0062030000590800004F0B0000470F0000411100003B130000361500003117 +00002A1700041F14000D11110015010C011E00100E1C00141A180017261400 +193310001A410E001B510D001C620C001E750D001F8D0F001DB213001DBD12 +001DBD11001EBD11001EBD10001EBD10001FBD106A0400006A0400006A0400 +006A04000062070000570C00004D100000451300003E150000381800003219 +00002E1B00002A1D0000251E00011A1D00090C1A001100180417001C101400 +201C100023280B00253408002643060027530500296405002A7605002A8D07 +0028AD0A0027BD0A0027BD0A0027BD0A0027BD0A0027BD0A0027BD0A5D0D00 +005D0D00005D0D00005D0D0000561000004C140000431700003C190000351C +0000301E00002B20000027210000242300001F250000142500050621000D00 +23070E0027120B002B1D07002E280300303501003243010031530200316303 +0031750400308B05002EAB07002DBF07002DBF07002DBF07002DBF07002DBF +07002EC007501600005016000050160000501600004A180000411B0000391E +0000332000002D2200002924000024260000202800001D290000172B00000D +2B00020129010A002D0808002F120700301B06003326030036320200394002 +00385102003861030038730300378A030037AA030036C5040036C5040036C5 +040037C6030037C6030037C603441E0000441E0000441E0000441E00003F20 +000037220000312400002B27000026290000212B00001D2D0000192E000015 +2F0000123000000C300002022E000A0030070A003410070035190600382304 +003B2E0300403D0300404D0300405F030040720200408A010040AC010040D1 +010040D1010040D1010040D1010040D1010040D2013A2500003A2500003A25 +00003A250000362700002E290000282C0000232E00001D3000001932000015 +3300001634000016340000143500000E350001043300090034050B003A0E08 +003B1706003D200500412B040046390400484A0400485D0300497101004A89 +00004BAC000049DE000049DF000049DF000049DF000049DF000049DF00302D +0000302D0000302D0000302D00002C2E0000263100001F3400001A36000016 +37000017380000173800001739000017390000153A00000F3B000106390009 +003A040D003F0C090043150600441D0600482805004C3505004F460500515A +0400527001005488000055AA000051EA000051EA000052EA000052EA000052 +EA000052EA0026360000263600002636000026360000233700001C3A000018 +3B0000183C0000183D0000183D0000183E0000183E0000193F000017400000 +11410001084000080040030E00450A0B004B1307004D1B0600502506005532 +0600584106005A5505005D6D01005F85010060A500005CE400005CED00005C +ED00005CED00005CED00005CED001D3E00001D3E00001D3E00001D3E000019 +4000001941000019410000194200001A4300001A4300001A4400001A450000 +1A45000019460000134800000A4800070048010F004D080C00541009005919 +06005C2306005F2E0600623D060064500500686802006B8000006C9F010068 +CA000068E9000068E9000068E9000068E9000068E9001A4600001A4600001A +4600001A4600001A4600001B4700001B4800001B4900001B4A00001B4A0000 +1C4B00001C4B00001C4C00001B4D0000155000000D5200060151000F005706 +0D005E0E0A00651607006A2005006D2A05006F380400714A04007461020078 +7A00007A99000077C9000078FC000078FC000078FC000078FC000078FC001C +4D00001C4D00001C4D00001C4D00001C4E00001C4F00001D4F00001D500000 +1D5100001D5200001D5200001D5300001D5400001C55000018590000105B00 +04055D000C0061040E00690B0B0071120700791C04007D2602007F32010081 +42000082590100867300008A93000089C6000087FF000087FF000087FF0000 +87FF000087FF001E5500001E5500001E5500001E5500001E5600001E570000 +1E5800001E5900001F5A00001F5A00001F5B00001F5C00001F5C00001E5E00 +001A6200001367000309690009016E010D0076070B007F0D0800881504008E +1F0200912B0000923A000094500000976B00009F8D00009DB8000097FF0000 +97FF000097FF000098FF000098FF001F5E00001F5E00001F5E00001F5E0000 +205F0000206000002061000020620000206300002064000021650000216600 +0021660000206800001B6E0000167300010E790005057E000A0086020B0090 +070700990E0400A3150200AA200000AD2F0000AF430000B6600000BD830000 +BFA80000B1F90000B1F80000B1F80000B2F80000B2F8002169000021690000 +2169000021690000216A0000216B0000226C0000226D0000226E0000226F00 +00227000002271000022720000227400001D7B000019830000148B00000F94 +0001089B000301A4000600B4040400C6080100DA120000EA210000FE310000 +FF500000FF6B0000FF880000FFB20000FFB20000FFB20000FFB20000FFB200 +23750000237500002375000023750000237600002377000023790000237900 +002379000023790000237900002379000023790000237A00001E8200001A89 +000015910000109A00000BA2000005AC000300B9000400CA040200E20F0000 +F11E0000FF2D0000FF4B0000FF690000FF810000FFA80000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +0023790000237900002379000023790000237900002379000023790000237A +00001E8100001A89000015910000109900000BA2000005AB000200B8000400 +C9040200E00D0000F01D0000FE2C0000FF450000FF650000FF7C0000FF9F00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +004100130041001300410013004100130041001300410013003F001A003F00 +20004100270047002E004C0036005200410057004E005B005D005C006E005B +00820058009C005800C3005E00FF005E00FF005E00FF005E00FF005E00FF00 +5E00FF005E00FF004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F001A003F0020004100260047002E004C0036005200410057004E005B +005D005C006D005B00810058009B005800C2005E00FF005E00FF005E00FF00 +5E00FF005E00FF005E00FF005E00FF00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F001A003F0020004100260047002E004C00360052 +00400057004D005B005C005C006D005B00810058009A005800C0005E00FF00 +5E00FF005E00FF005E00FF005E00FF005E00FF005E00FF0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F001A003F0020004100260047 +002E004C0036005200400058004D005C005C005D006C005C00800059009900 +5900BD005F00FF005F00FF005F00FF005F00FF005F00FF005F00FF005F00FF +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004200120042001200420013004000190040 +001F004300260048002D004D0035005300400059004D005D005B005E006C00 +5E007F005B0097005A00BB006000FF006000FF006000FF006000FF006000FF +006000FF006000FF0041001300410013004100130041001300410013004100 +13004200120042001200430012004300120043001200440012004400110044 +0012004200180042001F004500260049002D004E00350054003F005A004C00 +5E005B0060006B005F007E005C0096005B00B8006100FF006100FF006100FF +006100FF006100FF006100FF006100FF004300120043001200430012004300 +12004300120043001200440012004400110045001100450011004500110046 +00110046001100460011004400180043001E00470025004A002C004F003500 +55003F005B004C005F005A0061006B0061007E005E0094005C00B5006200FF +006200FF006200FF006200FF006100FF006100FF006000FE00450011004500 +11004500110045001100450011004500110046001100460010004700100047 +001000480010004800100048001000490010004700170046001E0049002500 +4C002C005000340056003F005C004B0061005A0063006B0061007D005D0094 +005900B6005B00FE005A00FF005900FF005800FF005700FF005700FF005600 +FF004700100047001000470010004700100047001000480010004800100049 +000F0049000F004A000F004A000F004B000F004B000E004B000E004A001500 +49001D004A0024004E002B005200340058003E005A004A005C0059005B006A +0058007D00540094005000B8005200FF005000FF004F00FF004E00FF004E00 +FF004D00FF004D00FF004A000F004A000F004A000F004A000F004A000F004A +000F004B000E004C000E004C000E004D000E004D000E004E000D004E000D00 +4F000D004D0014004C001C004D0023004D002A004D0032004E003B00500047 +0051005700510068004F007D004B0095004900B7004800FF004700FF004600 +FF004500FE004500FE004400FE004400FE004D000E004D000E004D000E004D +000E004D000E004E000D004E000D004F000D004F000D0050000D0050000C00 +51000C0051000C0052000C00500013004B001A00470021004500280045002F +004500380046004400470054004600670046007C00430094004000B3003F00 +F4003E00F5003D00F4003C00F3003B00F3003B00F2003A00F20050000C0050 +000C0050000C0050000C0050000C0051000C0052000C0052000C0053000B00 +53000B0054000B0054000B0055000B0051000A004A0010004400180040001E +023B00240739002B093B0036033D0043003C0052003B0064003B0079003900 +90003700AD003500E0003400E6003300E5003200E3003200E2003100E10031 +00E10054000B0054000B0054000B0054000B0054000B0055000B0055000B00 +56000A0057000A0057000A0058000A00550009004E0008004800070041000D +013A0012073300180D2D001E122A0027132B00330E2D00400A2C004F082C00 +60062B0073052C0089042C00A5022B00CD012A00D5012900D3012800D20128 +00D2012700D1022700D10258000A0058000A0058000A0058000A0058000A00 +58000900590009005A0009005A0009005B000900530007004C000600440004 +003E000202370007062F000D0C2900131123001A15200024151E002F131D00 +3C101C004A0F1B005A0E1B006C0E1B00800D1C009A0B1E00BD071D00C8071C +00C7081B00C6081A00C6081A00C5091900C5095C0008005C0008005C000800 +5C0008005C0008005D0008005D0008005E0008005A00070052000500470003 +00400001023B010003370400022D00020B250007111E000E15190016181500 +201811002B170D0036150B00421509005215080062160700751608008D140B +00AD110B00BA100A00B9100900B8110800B8110700B7110700B71160000700 +600007006000070060000700600007006100070062000600590004004E0002 +00440101013F0300023B06000136080000330A00002705000B1A0101161200 +071A0C00101C06001A1D0201241C01022F1A00043C1800054C1600065D1400 +087014000886140006A3140006B3130006B3130007B2130007B2130008B213 +0008B212650005006500050065000500650005006500050063000400570002 +004C010001440500003F070000390A0000350C0000300E00002D100000220C +000A140800140402001E00040B1D0008171A000B2316000E2F13000F3C1000 +104B0E00105D0D00126F0D0013840F0011A1110011B4110011B4100012B410 +0012B4100012B4100013B4105F0002005F0002005F0002005F0002005F0002 +00570100014B050000440800003D0B0000370E0000321000002D1200002914 +0000261600001C14000810110010010C011900100D16001419120017250E00 +18310A00193E07001A4D06001B5E06001D6F06001D8408001CA00C001BB70C +001BB70C001BB70C001BB70C001BB70C001BB70C5505000055050000550500 +0055050000550500004B090000430C00003B0F0000351200002F1400002A16 +000027180000231A0000201C0000181C00040A19000C00170411001B100E00 +1F1B0A00222605002333010023400100224F0100235E0200236E0400238207 +00219E0A001FBA0C0020BA0C0020BA0C0020BA0C0020BA0C0020BA0C490D00 +00490D0000490D0000490D0000490D00004110000039130000321600002D18 +0000281B0000241D0000211F00001D2100001A22000012230001051E000800 +2107080024100700261A06002725030028300100283E0100284D0100285C02 +00286D040028810600279C090025BB0B0025BB0B0025BB0B0025BC0B0025BC +0B0025BC0B3F1500003F1500003F1500003F1500003F15000037180000301A +00002A1D0000261F0000212100001D2300001925000016260000122700000D +280000042500070024050900280E07002A1806002B2204002D2E02002F3B01 +002F4B01002E5A02002F6B03002E7F05002D9A07002BBE08002BBE08002BBE +08002BBE08002BBE08002BBE08351C0000351C0000351C0000351C0000351C +00002E1F000028210000232400001E2600001A28000015290000132A000013 +2B0000132B00000F2B0000062A00050029030A002D0C07002E160700302005 +00322B030036380200374802003658020036690300367E03003599040034C3 +050034C4040034C4040034C4040034C4040034C4042C2400002C2400002C24 +00002C2400002C24000026260000202900001B2B0000162C0000142D000014 +2E0000142E0000142F0000142F000010300000082F0004002D020B00310A08 +0034130700351D0500382803003C340300404402003F5603003F6803003F7D +02003E9801003FC601003FCF01003FCF01003FCF01003FCF01003FCF01232B +0000232B0000232B0000232B0000232B00001D2E0000183000001531000015 +3200001532000015330000153300001634000016340000123500000A350003 +0032000D0036080A003A1107003C1A06003F24040043310400474004004852 +030048660300497C00004998000049CA000048DE000048DE000049DE000049 +DE000049DE001A3400001A3400001A3400001A3400001A3400001635000016 +360000163600001637000017380000173800001739000017390000173A0000 +133B00000D3B00030238000D003C070C00410F080044180600462105004A2D +05004E3C0500504E050052630300547B01005697000053C6000052EA000052 +EA000052EB000052EB000052EB00173A0000173A0000173A0000173A000017 +3A0000183B0000183C0000183C0000183D0000183E0000183E0000193F0000 +193F000019400000154100000F4200020440000C0043050D00490D0A004D16 +0700501E060053290600573706005A4906005D5F0400607701006293010060 +BB00005DED00005DED00005EED00005EED00005EED00194100001941000019 +410000194100001941000019420000194200001A4300001A4400001A450000 +1A4500001A4600001A4600001B47000017490000114A0001074A000A004C04 +0F00520B0B00581308005D1C0600602606006333060065430600695904006C +7101006F8D00006DB200006BED00006BED00006BED00006CED00006CEE001B +4800001B4800001B4800001B4800001B4800001B4900001B4A00001B4B0000 +1C4B00001C4C00001C4D00001C4D00001C4E00001C4E000019510000145300 +010A5500080056020F005C080C00641009006B19060070230400722E040074 +3D0300775203007A6A00007E8600007EAF00007CFF00007CFF00007DFF0000 +7DFF00007DFF001D5000001D5000001D5000001D5000001D5000001D510000 +1D5200001D5300001D5400001E5400001E5500001E5600001E5700001E5700 +001B5A0000175E00000E6000060262000E0068050D00700C09007A14060081 +1E03008429020086360000884900008A6100008F80000092A700008DFD0000 +8DFF00008DFF00008DFF00008DFF001F5900001F5900001F5900001F590000 +1F5900001F5A00001F5B00001F5C00001F5D00001F5E0000205F0000206000 +0020600000206100001D64000019690000116E00040871000A0077010D0080 +070A008A0E060092150300992001009C2C00009D3E0000A0570000A6770000 +AD9D0000A2DE0000A1FE0000A1FE0000A1FE0000A1FE002064000020640000 +20640000206400002064000021650000216600002167000021680000216900 +00216A0000216B0000226C0000226C00001F7000001B770000167E00010E84 +0004078C000700930109009D060600AA0B0300B8130100C21F0000CA2F0000 +CE470000D9660000DE890000EBC80000D2F90000D3F90000D3F90000D4FA00 +22700000227000002270000022700000227000002271000022720000237400 +00237500002376000023770000237800002379000023790000217D00001D85 +0000188C0000139500000E9D000009A6000002B1000400BF020300D5080100 +E9150000F9260000FF350000FF5C0000FF740000FF9C0000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +00237900002379000023790000237900002379000023790000237900002379 +0000217C00001D840000188C0000139400000E9D000009A6000003B0000400 +BE010300D3070100E8140000F7240000FF330000FF580000FF700000FF9400 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300400016003E00 +1C004000230042002A00490032004F003B00550047005A0056005C0066005C +007800590091005700B2005E00FF005E00FF005E00FF005E00FF005E00FF00 +5E00FF005E00FF004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300400015003E001C004000230042002A00490032004F003B00550047005A +0055005C0066005C007800590090005700B0005E00FF005E00FF005E00FF00 +5E00FF005E00FF005E00FF005E00FF00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300400015003E001C004000230042002900490032004E +003B00550047005A0055005C0065005C00770059008F005700AE005E00FF00 +5E00FF005E00FF005E00FF005E00FF005E00FF005E00FF0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300400015003E001C004000230042 +002900490032004E003B0055004600590055005C0065005C00770059008E00 +5700AD005E00FF005E00FF005E00FF005E00FF005E00FF005E00FF005E00FF +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300400015003E +001C004000230042002900490031004E003A0055004600590054005C006500 +5C00760059008D005700AB005E00FD005E00FF005E00FF005E00FF005E00FF +005E00FF005E00FF0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300400015003E001C004000230042002900490031004E003A0054004600 +590054005C0064005C00760059008C005700AA005E00F9005E00FF005E00FF +005E00FF005E00FF005E00FF005E00FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400015003E001C00400022004200290049003100 +4E003A0054004600590053005C0064005C0075005A008B005700A8005D00EE +005D00FF005C00FF005B00FF005A00FF005900FF005800FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400015003F001C0040002200 +43002900490031004F003A00550045005A0053005C0063005A00750056008B +005100A9005300EE005200FF005100FF004F00FF004F00FF004E00FF004D00 +FF004100130041001300410013004100130041001300410013004100130041 +00130042001200420012004200120043001200430012004300120043001400 +41001B0042002200450028004A0030004E0039005100430053005100530062 +00510075004D008B004900AA004900E8004800FE004600FE004600FE004500 +FE004400FD004400FD00420012004200120042001200420012004200120043 +00120043001200440012004400110044001100450011004500110046001100 +460011004600130043001B00440021004200270044002E0046003600490041 +004A005000490061004800750045008D004100AA004000E0003E00FA003D00 +F9003C00F8003C00F7003B00F7003B00F60045001100450011004500110045 +00110045001100450011004600110046001000470010004700100048001000 +480010004800100049000F0047001200420018003E001F003D0025003D002C +003E0034003F003E0040004E003F0060003E0074003C008C003900A8003700 +D6003500F0003400EF003300EE003300EE003200ED003200EC004800100048 +0010004800100048001000480010004800100049000F0049000F004A000F00 +4A000F004B000F004B000E004C000E0046000D0041000F003C00150037001B +0333002108310028093500330335003E0034004D0033005E00320071003100 +88002F00A3002D00CC002C00E4002B00E3002A00E2002A00E1002900E00029 +00E0004B000E004B000E004B000E004B000E004B000E004B000E004C000E00 +4D000E004D000E004E000D004F000D004A000C0044000B003F000A003A000B +00330010052D00160A29001D0E2600250F2700300B28003D0727004B042600 +5B0325006C022500810125009B012500BD002400D4002300D3002200D20021 +00D1002100D1002100D0004F000D004F000D004F000D004F000D004F000D00 +4F000D0050000C0051000C0051000C004F000B0047000A00410009003C0007 +0037000501310006032B000C092500120D200019111D0022111B002D0E1A00 +390C1800460A1700550A1600660916007909170090071800AF051900C60417 +00C5041700C4041600C3051500C3051500C20553000B0053000B0053000B00 +53000B0053000B0053000B0054000B0055000B004E000A00450008003F0006 +0038000401320002022E0001042B0102052200070C1C000D11170015131300 +1F130F0029120C00331109003F1007004D1005005D1105006F110500841007 +009F0E0800B60C0700B50C0600B40D0500B40D0500B30D0400B30D58000A00 +58000A0058000A0058000A0058000A0058000A00570009004C000700430005 +003B00030234010103300200032E0400022B06000125060005180101101000 +07150B00101705001A170201231600022D1400043912000648100007590E00 +086B0E00087F0E0007970E0006AF0E0007AF0E0007AF0D0008AF0D0008AF0D +0008AF0D5800070058000700580007005800070058000700560007004B0005 +00400002013801000433040002300600012D090000290B0000250C0000200C +00041308000F0402001900050B1800081714000B2210000D2D0D000F3A0A00 +0F48080010590700116A0700127D080011950A0010AF0B0010AF0A0011AF0A +0011AF0A0011AF0A0012AF0A4A0003004A0003004A0003004A0003004A0003 +00480002003F02000339050001330800002F0B00002A0D0000260F00002211 +0000201300011A1300030E10000B000C011400100D100013190D0016240800 +172F0400183C0100184A00001859010018690300187C05001793090015B10B +0015B10B0015B10B0015B20B0015B20B0015B20B4105000141050001410500 +0141050001410500013F06000038090000320C00002D0F0000281100002314 +0000201600001D1800001A190000151B0001091800070017040B001B100800 +1C1A06001D2404001D2E01001D3B00001C4900001C5801001C6703001C7905 +001B91090019B40C0019B50C0019B50C0019B50C0019B50C0019B50C390C00 +00390C0000390C0000390C0000390C0000370D0000301000002A1300002516 +0000211800001D1A00001A1C0000161E0000131F00000E1F0000061B000400 +1B0408001E0E08002017070021220400212C02002139010021470100215602 +002165030021780500208F08001EB30D001DB80C001DB80C001DB80C001DB8 +0C001EB80C30140000301400003014000030140000301400002E1500002817 +0000231A00001F1D00001A1F00001621000012220000112200001123000010 +23000008210003001D020800220C080024150700251F0500262A0200263601 +0026450100265402002664030026760500268D080023B00B0023BB0B0023BB +0B0023BB0B0023BB0B0023BB0B281B0000281B0000281B0000281B0000281B +0000261C0000211F00001C2100001723000012250000122500001226000012 +26000012260000112700000A26000200210009002609080027120700291D05 +002B2703002C3401002D4201002C5202002D6203002D7404002C8C06002AAE +090029BE090029BE090029BE090029BE090029BE0920230000202300002023 +000020230000202300001F2300001926000014280000122800001329000013 +29000013290000132A0000132A0000122A00000C2B000102280009002A0709 +002D1007002E1A06003024040033300200363F0100354F0200356003003572 +0300348A040033AC050032C3050032C3050032C3050033C3050033C305172A +0000172A0000172A0000172A0000172A0000162A0000132B0000132C000014 +2C0000142D0000142D0000142E0000142E0000142E0000132F00000E300000 +042E0008002E050A00330E070034170600362104003A2D03003E3B02003F4C +02003E5E03003E7102003E8901003EAD01003ECE01003ECE01003ECE01003E +CE01003ECE01142F0000142F0000142F0000142F0000142F00001430000015 +30000015310000153100001532000015320000153300001633000016340000 +1534000010360000063400070033030C00380C09003B1506003D1E05004029 +04004537040048470400485B0300497002004A8800004AAE000049DE000049 +DF000049DF000049DF000049DF001635000016350000163500001635000016 +35000016350000163600001637000017370000173800001738000017390000 +173A0000173A0000173B0000123C0000093B0006003A020D003F0A0B004412 +0700451B0600482505004D3205005042050052570400546D02005687000057 +AB000053EC000053EC000053EC000053EC000053EC00183C0000183C000018 +3C0000183C0000183C0000183C0000183C0000183D0000183E0000193F0000 +193F000019400000194000001941000019410000144300000C430005014201 +0E0047080C004D1009005119060053220600572E06005B3D06005D51060061 +6A02006383000064A4000060EA000060EB000060EB000060EB000060EB001A +4300001A4300001A4300001A4300001A4300001A4300001A4400001A450000 +1A4500001A4600001B4700001B4700001B4800001B4900001B490000164C00 +000E4D0004034C000E0051060E00570D0A005E160700621F0600652A060068 +3805006A4B05006E630200727C0000739D00006FD0000070F3000070F30000 +70F4000070F4001C4B00001C4B00001C4B00001C4B00001C4B00001C4B0000 +1C4C00001C4D00001C4E00001C4E00001C4F00001D5000001D5000001D5100 +001D52000018550000125800030759000B005C030E00630A0B006B12080073 +1B050077260300793202007B4201007D5A0100817400008596000083D40000 +82FF000082FF000082FF000082FF001D5400001D5400001D5400001D540000 +1D5400001D5400001E5500001E5600001E5700001E5800001E5900001F5900 +001F5A00001F5B00001F5B00001A600000156400020B670008016A010E0071 +060C007A0D0800831505008A1F02008D2A00008F39000091500000946B0000 +9B8F000098C1000094FF000094FF000094FF000095FF001F5E00001F5E0000 +1F5E00001F5E00001F5E00001F5E0000205F00002061000020620000206300 +0020630000216400002165000021660000216700001D6C0000187200011077 +0004077C00090083010C008D060800970C0500A1140200A81F0000AC2D0000 +AD420000B55F0000BC850000BDAF0000B0F90000B0F90000B1F90000B1F900 +216A0000216A0000216A0000216A0000216A0000216A0000226C0000226D00 +00226E0000226F000022700000227100002272000023730000237400001F7B +00001A830000168B0000119400000B9D000104A6000400B4010400C6040200 +E00E0000F01D0000FF2E0000FF4E0000FF6B0000FF8B0000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237900 +00237900002379000023790000237900002379000023790000237900002379 +0000237900001F7F00001B870000168F0000119800000CA0000006AA000201 +B6000400C6030200DF0C0000EF1C0000FE2C0000FF490000FF690000FF8300 +00FFB00000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013003F00 +19003F001F004100260046002E004C0036005200400058004E005B005E005C +0070005A0086005700A3005C00E3005E00FF005E00FF005E00FF005E00FF00 +5E00FF005E00FF004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013003F0019003F001F004100260046002D004C0036005200400057 +004E005B005D005C006F005B0085005700A2005B00DC005E00FF005E00FF00 +5E00FF005E00FF005E00FF005E00FF00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013003F0018003F001F004100260046002D004B +0035005200400057004D005B005D005C006F005B0084005700A1005A00D500 +5E00FF005E00FF005E00FF005E00FF005E00FF005E00FF0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410013003F0018003F001F0041 +00260046002D004B0035005100400057004D005B005C005C006E005B008300 +5800A0005900D1005E00FF005E00FF005E00FF005E00FF005E00FF005E00FF +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410013003F +0018003F001F004100250046002D004B0035005100400057004D005B005C00 +5C006E005B00830058009E005900CD005E00FF005E00FF005E00FF005E00FF +005E00FF005E00FF0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F0018003F001F004100250046002D004B00350051003F00 +57004C005B005C005C006D005B00820058009D005900CA005E00FF005E00FF +005E00FF005E00FF005E00FF005E00FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F0018003F001F004100250045002D00 +4B00350051003F0057004C005B005B005C006C005B00810058009B005700C8 +005A00FF005800FF005700FF005600FF005500FF005400FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F0018003F001E00 +4100250045002C004B00350051003F0056004C0057005B0056006C00530081 +004E009D004C00CB004D00FF004B00FF004A00FF004900FE004800FE004800 +FE004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F0018003F001E004100250045002C00460033004B003D004D004B004C005A +004B006D004900830044009F004200CA004100FA004000F9003F00F8003E00 +F7003D00F7003D00F600410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0018003D001E003C0024003C002B003E00320040003B +004200490041005B0040006E003E0085003B00A0003800C8003600F3003500 +F2003400F1003300F0003300F0003200EF0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003B00160037001C0035002300350029 +003600310037003B003700490036005A0035006E003300840031009F002F00 +C5002D00EB002C00EA002C00EA002B00E9002B00E9002A00E8004100130041 +00130041001300410013004100130041001300410013004200120042001200 +430012004300120043001200420011003D00100039000F0035001300310019 +022E001F052D0027052E0030022E003B002D0048002B0059002A006C002800 +810027009B002600BD002500E2002400E1002300E0002300DF002200DF0022 +00DE0044001200440012004400120044001200440012004400120044001100 +4500110045001100460011004500110040000F003B000E0037000D0033000B +002E000F022A00150626001C092400240A24002E0724003A02230047012100 +57001F0067001E007A001E0092001E00B1001D00D4001C00D3001B00D2001B +00D1001A00D0001A00CF004700100047001000470010004700100047001000 +4700100047001000480010004800100044000F003E000D0039000B0034000A +00300008002C00070127000B05230011091E00180B1C00210B1A002B091800 +370716004305140051051300610512007304120088041300A2021400C30113 +00C2021200C1021100C0021000BF021000BF024B000F004B000F004B000F00 +4B000F004B000F004B000F004B000E004B000E0043000D003C000B00360009 +00310007012D0005022A000402250002031E0006071A000D0C1500140E1200 +1E0E0F00280C0B00310B09003C0B0600490B0400590C03006A0C03007D0B03 +00940A0500B2080400B1090300B0090200B0090200AF090201AF094F000D00 +4F000D004F000D004F000D004F000D004F000D004A000C0041000A003A0008 +00330006012E0004022A00020326010103210200031D0400031601010B0F00 +07100A001011050019120201221000022B0E0004360C0005450A0006550800 +0767070008790700078E080006AC080007AD080007AD070008AC070008AC07 +0008AC06440009004400090044000900440009004400090044000900400008 +0038000501300003022B00000429030002250500021F0700021D0900021B0B +0002120800090302001500040C130008170E000A210B000C2C07000E370400 +0E4502000F5501000F6501000F7703000E8C05000CA807000CAC07000CAC07 +000CAC07000CAC07000CAC073A0003023A0003023A0003023A0003023A0003 +023A000302350002022F0100032C04000227070001220900011F0C00011B0E +000218100002161100020D100006000D020E00100E0B001219070013230400 +132C010013370000134400001353000012630200127403001289060010A608 +000FAE08000FAE08000FAE08000FAE08000FAE083104000231040002310400 +023104000231040002310400022F0600012A090000250C0000200E00011D10 +000119130001161500011317000010180000071600020014040700160D0800 +1717070017210500172B020017360000164300001652000016610200167204 +001587070013A30A0013B00A0013B00A0013B00A0013B00A0013B00A2B0C00 +002B0C00002B0C00002B0C00002B0C00002B0C0000280D0000231000001F13 +00011B16000017180000131A00000F1A00000E1B00000E1B0000091A000100 +16020800190B08001A1507001B1F05001B2903001B3401001A4100001A5001 +001A5F02001A7004001A85070018A20B0017B30C0017B30C0017B30C0017B3 +0C0017B30C2413000024130000241300002413000024130000241300002115 +00001D180000181A0000141C00000F1D00000F1D00000F1E00000F1E00000F +1E00000B1D000001190007001C0908001E1208001F1C060020260300203201 +001F3F00001F4E01001F5D02001F6E04001F8307001DA00B001BB70C001CB7 +0C001CB70C001CB70C001CB70C1D1B00001D1B00001D1B00001D1B00001D1B +00001D1B00001A1C0000151F00001020000010200000102100001021000010 +21000010210000102200000D220000031C0005001E06080021100800231A06 +0024240400252F0200253D0100244C0100255B0200256C040025810600239D +0A0021BA0C0021BA0C0021BA0C0021BA0C0021BA0C15220000152200001522 +00001522000015220000152200001222000011230000112400001124000011 +240000112500001225000012250000122600000E2600000624000500210408 +00260D070027170700292104002A2D02002C3A01002B4901002B5902002C6A +03002B7F05002A9B080028BD0A0028BD0A0028BD0A0028BD090028BD091226 +00001226000012260000122600001226000012260000122700001227000012 +28000012280000122800001329000013290000132A0000132A0000102A0000 +082A00040027020A002B0B08002D1407002E1E050031290300343602003546 +01003457020034680300347D04003399050031C2050031C2050032C2050032 +C2050032C205132B0000132B0000132B0000132B0000132B0000132B000013 +2B0000132C0000132C0000142D0000142D0000142D0000142E0000142E0000 +142F0000122F00000B2F0002012D010A003008090033120700351B06003726 +04003B3203003F4202003F5403003E6603003E7C02003D9901003ECB01003E +CE01003ECE01003ECF01003ECF011530000015300000153000001530000015 +30000015300000153000001531000015320000153200001533000015330000 +163400001634000016350000133500000D3600020233000B0036060B003B0F +07003C1806003F220500432E0400473D0400494F0400496403004A7B00004B +9900004AD000004AE000004AE000004AE000004AE000163600001636000016 +36000016360000163600001636000016370000173700001738000017390000 +17390000173A0000173A0000173B0000183B0000153C00000F3D0001053B00 +0A003D050D00420D090046150600481E06004C29050050380600534A050055 +600300577901005A97010057CA000055ED000055ED000055ED000055ED0018 +3D0000183D0000183D0000183D0000183D0000183D0000183E0000183F0000 +193F000019400000194100001941000019420000194200001A430000174400 +0012460001084500090046030F004B0A0B0051130800551B0600582606005C +3306005F440600625A0400657401006790010065BA000063E9000064E90000 +64E9000064E9001A4500001A4500001A4500001A4500001A4500001A450000 +1A4600001A4700001B4700001B4800001B4900001B4A00001B4A00001C4B00 +001C4B00001A4D0000154F00000B5100070151010F0057080D005E0F090064 +180600692205006C2E05006E3D040071530400746C01007889000077B50000 +76FA000076FA000076FA000076FA001C4E00001C4E00001C4E00001C4E0000 +1C4E00001C4E00001C4F00001D5000001D5100001D5100001D5200001D5300 +001D5400001E5400001E5500001C570000175A00000F5D0005045F000D0064 +040D006C0B0A00751306007C1D040080280200823601008449000086620000 +8B8200008DAD000089FF000089FF000089FF00008AFF001E5800001E580000 +1E5800001E5800001E5800001E5800001E5900001F5A00001F5B00001F5C00 +001F5D00001F5E00001F5E0000205F0000206000001E6200001A670000136B +00030A6F00090074000D007D060A00860D07008F150400961F0100992C0000 +9B3D00009E570000A3790000A9A300009FFC00009FFF00009FFF00009FFF00 +20640000206400002064000020640000206400002064000021650000216600 +00216700002168000021690000216A0000216B0000226C0000226D0000216F +00001C760000177D000011840003098B000601920009009C040600A9090300 +B8110100C41D0000CD2D0000D5440000DE650000E38B0000F3EB0000D8FD00 +00D9FD0000DAFE002272000022720000227200002272000022720000227200 +00237300002374000023760000237700002378000023790000237900002379 +000023790000227B00001E830000198A0000149300000F9B00000AA4000003 +AE000300BC010300D1060100E7130000F7240000FF340000FF5C0000FF7600 +00FFA00000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004000 +15003F001B004000220042002900490031004E003B00550047005A0056005C +0068005C007B00580096005800C2005E00FF005E00FF005E00FF005E00FF00 +5E00FF005E00FF004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300400015003F001B004000220042002900490031004E003B0055 +0047005A0056005C0067005C007B00580095005800C0005E00FF005E00FF00 +5E00FF005E00FF005E00FF005E00FF00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410014003F001B00400022004200290049 +0031004E003A00550047005A0056005C0067005C007A00580094005800BD00 +5E00FF005E00FF005E00FF005E00FF005E00FF005E00FF0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410014003F001B0040 +00220042002900490031004E003A00550046005A0055005C0066005C007900 +590093005800BA005E00FF005E00FF005E00FF005E00FF005E00FF005E00FF +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0014003F001B004000220042002900490031004E003A005400460059005500 +5C0066005C007900590092005700B8005E00FF005E00FF005E00FF005E00FF +005E00FF005E00FF0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410014003F001B004000220042002800490031004E003A00 +54004600590054005C0065005C007800590091005700B5005E00FF005E00FF +005E00FF005E00FF005E00FF005E00FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013004100130041001300410014003F001B004000220042002800 +490030004E00390054004500590054005C0065005C007700560090005300B7 +005600FF005400FF005300FF005100FF005000FF005000FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013004100130041001300410014003F001B00 +4000210042002800480030004D003900510044005300530053006400510079 +004C0092004900B7004800FE004700FD004600FC004500FC004400FB004300 +FB004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +410014003F001B00400021004000280041002F004400370048004200480053 +004700650046007A00420094003F00B7003D00F6003B00F5003A00F5003900 +F5003900F5003800F400410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410014003B001A00390020003800260039002D003B0036 +003D0041003D0052003B0065003A007C00360095003400B7003200EE003100 +ED003000ED002F00EC002E00EC002E00EC0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D001200390012003500180032001F00310025 +0131002D003200360031004200300053002E0066002C007B002B0094002A00 +B5002800E7002700E6002600E6002500E5002500E4002400E4004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D0012003900110035001000310010002E0016 +002B001D02290023032A002D00290037002600440025005400230066002100 +7900200090002000AF001F00DA001E00DD001D00DC001D00DC001C00DB001C +00DA0041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003A0011003500100030000E002D000D +002A000E002700140124001B042200230422002D01200038001E0045001B00 +5400190063001700750017008A001700A4001700CA001600D0001500CF0015 +00CE001400CD001400CC004100130041001300410013004100130041001300 +410013004100130041001300410013003B0011003600100031000E002D000D +002A000C0027000A0024000A01200011041D0018061B00210619002B031600 +35021400410112004E0110005E010F006E010E0080010E0097000E00B6000D +00BE000C00BD000C00BB010B00BA010B00BA01430012004300120043001200 +43001200430012004300120043001200400011003A000F0034000D002F000C +002B000A0027000801230007011E0006011B00060218000D07150015091200 +1E080F0027070B002F05090039050600460504005406020067060201770602 +018C050200A7050100AE050000AD050001AD050001AD050001AD043E000F00 +3E000F003E000F003E000F003E000F003E000F003E000F0039000D0032000B +002D00090029000701230005021D0004021A00020317010102140101040E00 +070B0A00100C0500190B0300220A01012A0900033406000542040006500300 +06640200077401000787020006A2030006AB030006AB030006AB030006AB03 +0006AB0336000A0036000A0036000A0036000A0036000A0036000A0036000A +00300008002B000602260004021D0002031901000317030002150500021307 +0003110800040202001100040D0C0007170800092105000B2A01000B340000 +0A4100000A5000000A6100000A7101000A840300089E040008AB040008AB04 +0008AB040008AB040008AB042D0004022D0004022D0004022D0004022D0004 +022D0004022D00040229000203200101031C0300031906000217080002140A +0002110C00020F0E00020B100001000E0206000E0E07000E1706000E200400 +0E2902000E3300000D3F00000D4E00000D5E00000D6F02000D8204000B9A05 +000AAB06000AAB06000AAB06000AAB06000AAB062603000326030003260300 +0326030003260300032603000326030003200500021C080002190B0002150D +0002121000020F1200010B1300000A1400000A1400000011010600110B0700 +11150700111E05001127020011310100113D0000114C0000115B0100106C02 +00107F04000F9707000DAD07000DAD07000DAD07000DAD07000DAD071F0A00 +011F0A00011F0A00011F0A00011F0A00011F0A00011F0A00011B0D00021710 +000213130001101500000B1600000B1600000C1600000C1700000C17000002 +130006001308080015120700151C06001525030015300100153C0000144A00 +0014590100146A0300147D05001395080011AF090011AF090011AF090011AF +090011AF091912000119120001191200011912000119120001191200011912 +000116150001111700000D1800000D1900000D1900000D1900000D1A00000D +1A00000D1A000004170004001706070018100800191A06001A2304001A2E01 +00193A0000194800001957010019670300187A05001793090015B20B0015B2 +0B0015B20B0015B20B0015B20B131A0000131A0000131A0000131A0000131A +0000131A0000131A00000E1B00000E1B00000E1C00000E1C00000E1C00000F +1D00000F1D00000F1D00000F1D0000071A000300190308001B0D08001D1707 +001E2105001E2C02001E3801001D4600001D5501001E6503001E7805001D90 +09001AB60C001AB60C001AB60C001AB60C001AB60C0F1E00000F1E00000F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1F0000101F000010 +200000102000001020000010210000102100001021000009200002001B0108 +001F0A080021140700231E0500232903002435010023440100235301002463 +030024760500238E080020B40C0020BA0C0020BA0C0020BA0C0020BA0C1122 +00001122000011220000112200001122000011220000112200001122000011 +23000011230000112400001124000011240000112500001225000012250000 +0C25000002200008002308080026110700281B0600292603002A3201002B41 +01002A5102002B6103002B7304002A8C070028B10A0027BD0A0027BD0A0027 +BD0A0027BD0A12260000122600001226000012260000122600001226000012 +26000012270000122700001228000012280000122900001329000013290000 +132A0000132A00000E2B00000428000700290509002C0E07002D1806002F23 +0400322E0200353D0100344D0200345E030034710300338A040032AE050031 +C2050031C2050032C2050032C205132B0000132B0000132B0000132B000013 +2B0000132B0000132B0000132C0000132C0000142D0000142D0000142E0000 +142E0000142E0000142F0000142F000010300000072F0005002D030B00320C +080034150600361F0500392A03003E380200404903003F5B03003F7002003F +89010040B001003FD001003FD001003FD001003FD001153100001531000015 +31000015310000153100001531000015310000153100001532000015330000 +153300001634000016340000163500001635000016360000123700000A3600 +040034010D0039090A003D1207003E1B060041260400463304004A4404004A +5803004B6E02004D8800004DB000004BE300004BE300004BE300004BE30017 +38000017380000173800001738000017380000173800001738000017380000 +17390000173A0000173A0000183B0000183C0000183C0000183D0000183D00 +00143F00000D3F0004023D010D0041070C00461008004A1806004C22060050 +2E0500543E060056520500596B02005C8501005CAB000058ED000058ED0000 +58ED000059ED00194000001940000019400000194000001940000019400000 +19400000194000001941000019420000194300001A4300001A4400001A4500 +001A4500001A46000016470000104900020448000C004B050E00510D0A0057 +1507005B1F06005E2A060062380600644B0600686403006B7F00006CA20000 +68E9000068EA000069EA000069EA001B4900001B4900001B4900001B490000 +1B4900001B4900001B4900001B4900001B4A00001C4B00001C4C00001C4C00 +001C4D00001C4E00001C4E00001C4F000019510000135400010955000A0058 +020F005E090C00661108006D1B0500722604007432030076430200785B0200 +7D7700007F9A00007DE800007DFF00007DFF00007EFF001D5300001D530000 +1D5300001D5300001D5300001D5300001D5300001D5300001E5400001E5500 +001E5600001E5700001E5800001E5800001F5900001F5A00001B5D00001661 +00010D6400070267000E006D050C00760C090080140500871E03008A2A0100 +8C3900008E500000916C00009893000093D0000092FF000092FF000092FF00 +1F5E00001F5E00001F5E00001F5E00001F5E00001F5E00001F5E0000205F00 +00206000002061000020620000206300002064000021650000216600002166 +00001E6A00001970000012760003097B00080181010B008B050900950B0500 +A0130200A71D0000AC2C0000AC410000B45F0000BD870000BCBB0000B0F900 +00B0F90000B0F900226C0000226C0000226C0000226C0000226C0000226C00 +00226C0000226D0000226E0000226F00002270000022720000237300002374 +00002375000023750000207B00001C830000178C0000129500000D9F000008 +A8000101B4000400C4030200DE0B0000EF1C0000FE2C0000FF4E0000FF6C00 +00FF920000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F0018003F001E004100250046002D004B0035005200400058004E005B +005F005C0073005A008B005700AE005E00FF005E00FF005E00FF005E00FF00 +5E00FF005E00FF004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F0018003F001E004100250045002D004B00350052 +00400058004E005B005F005C0072005A008A005700AC005E00FF005E00FF00 +5E00FF005E00FF005E00FF005E00FF00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F0017003F001E004100250045 +002D004B0035005100400057004D005B005E005C0071005A0089005700AB00 +5E00FF005E00FF005E00FF005E00FF005E00FF005E00FF0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013003F0017003F +001E004100250045002C004B0035005100400057004D005B005E005C007100 +5A0088005700A9005E00FF005E00FF005E00FF005E00FF005E00FF005E00FF +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300400017003F001E004100250045002C004B00350051003F0057004D00 +5B005D005C0070005A0087005700A7005E00FF005E00FF005E00FF005E00FF +005E00FF005E00FF0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400017003F001E004100250045002C004B003400 +51003F0057004C005B005C005C006F005A0086005700A5005E00FC005E00FF +005D00FF005B00FF005A00FF005900FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400017003F001E0041002500 +45002C004B00340051003F0057004C005B005C0059006E00550086004F00A7 +005200F5005000FF004E00FF004D00FF004C00FF004B00FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130040001700 +3F001E004100240044002C00490034004C003D004F004B004E005C004D0070 +004A0087004600A8004400EA004200FB004100FA004000F9003F00F8003E00 +F8004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300400017003E001D003C0024003D002A003F00320041003B0044004A +0042005C00410071003F008A003B00A9003800E0003700F3003500F2003400 +F1003400F0003300F000410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B00160037001C003500220035002900360031 +0036003B003700490036005D003400720031008A002F00A9002D00D8002C00 +EB002B00EA002A00E9002900E9002900E80041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0012003B001100370010003300140030001A002D0020 +022D0028012D0031002C003C002A004B0029005D0027007100250088002400 +A6002300D0002200E2002100E2002100E1002000E0002000DF004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B0011003600100032000F002F000E002C0012 +002900180226001F04250027022500320023003E0020004C001E005D001C00 +6F001B0084001A009E001A00C3001900D7001900D6001800D5001700D40017 +00D30041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003C0011003700100032000F002E000E002B000D +0028000C0025000F01220017041F001E051E0027021C0032001A003E001700 +4C0015005B0013006B0011007E00110095001100B4001100C8001000C6000F +00C5000F00C4000E00C3004100130041001300410013004100130041001300 +4100130041001300410013003F0012003900110033000F002E000E002A000D +0027000C0024000B0021000A001E000E021B00150418001E04170027011400 +310011003B000E0048000C0057000A0068000900780008008C000800A70008 +00B7000700B5000600B4000600B3000500B2003C0011003C0011003C001100 +3C0011003C0011003C0011003C0011003B001100350010002F000E002B000D +0027000C0023000A001F0009001C0008001900070016000B03130014041100 +1D030E0026010C002E00090037000600440004005000020064000100730001 +01850100019F000001AC000002AC000002AC000002AC000002AC0032000F00 +32000F0032000F0032000F0032000F0032000F0032000F0031000F002C000D +0028000C0023000A001F0009001B0007001700060114000401110003010E00 +0704090011060600190403002103010029030002310100033E0000034C0000 +036100000370000003810000039B010003AB010003AB010003AB010003AB01 +0003AB012B000B002B000B002B000B002B000B002B000B002B000B002B000B +002A000B00250009011F0007011A0005011600030212000202100101020F03 +00020D0400020101000D00030F040005160300051F02000528010005300000 +053B0000054B0000055E0000066D0000057E01000596010004AB020004AB02 +0004AB020004AB020004AB0222000601220006012200060122000601220006 +012200060122000601200006021A0003021601010213020003110400020F06 +00020C090002070D0001060E0000010D010300090C050008140500081D0300 +08260200082F0000083A00000849000008590000086A0000087B0100079203 +0006AB030006AB030006AB030006AB030006AB031801010318010103180101 +03180101031801010318010103180101031802010315040002120700030E0A +00030B0D000207100000071000000710000007100000030F0002000D090600 +0C1306000C1C04000C2402000C2D01000C3800000B4600000B5600000B6701 +000B7902000A8F040009AB050009AB050009AB050009AB050009AB05150900 +0315090003150900031509000315090003150900031509000314090003100D +00020C10000108120000091200000912000009120000091200000913000005 +11000200100606000F1007000F1A060010230300102C01000F3700000F4400 +000F5400000F6401000E7603000E8C05000CA906000CAC06000CAC06000CAC +07000CAC070F1200010F1200010F1200010F1200010F1200010F1200010F12 +00010E1200010A1400000A1400000A1400000A1500000B1500000B1500000B +1500000B160000071400020012030600130D08001317070014210500142A02 +0013350000134200001351000013610100127303001289060010A708000FAE +08000FAE08000FAE090010AE090B1600000B1600000B1600000B1600000B16 +00000B1600000B1600000C1600000C1700000C1700000C1800000C1800000C +1800000D1800000D1900000D1900000A1800010115010700160A0800181407 +00181E0500182803001833010018400000174F0000175F0200177004001786 +070015A40A0014B10A0014B10A0014B10B0014B10B0D1A00000D1A00000D1A +00000D1A00000D1A00000D1A00000D1A00000D1A00000E1A00000E1B00000E +1B00000E1B00000E1C00000E1C00000E1C00000E1D00000C1C000002180006 +001A0807001B1108001D1B06001D2503001D3101001D3E00001C4D01001C5D +02001C6E04001C8307001AA20B0019B50C0019B50C0019B50C0019B50C0F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F +1E00000F1F00000F1F0000101F000010200000102000001020000010210000 +0E210000051C0004001C050800200E08002218060023230400232E0200233B +0100224A0100235A0200236B040023810600219F0A001FBA0C001FBA0C001F +BA0C001FBA0C11220000112200001122000011220000112200001122000011 +22000011220000112200001123000011230000112400001124000011240000 +112500001225000010250000082400030020020900250B0700261507002820 +05002A2B02002B3801002A4801002A5802002B6903002B7E0500299D080027 +BC0A0027BC0A0027BD0A0027BD0A1227000012270000122700001227000012 +27000012270000122700001227000012270000122800001228000012290000 +1329000013290000132A0000132A0000112A00000B2B000202280109002B08 +08002D1207002E1C0500302703003334020036430100355502003567030035 +7C0400339B050032C2050032C3050032C3050032C305132C0000132C000013 +2C0000132C0000132C0000132C0000132C0000132C0000142C0000142D0000 +142E0000142E0000142E0000142F0000142F000014300000133000000D3100 +01032F00090030060A00350F070036180600382304003C2F0300413E030041 +51030040640300417B0100409A010041D2010041D2010041D3010041D30115 +32000015320000153200001532000015320000153200001532000015320000 +15330000163400001634000016350000163500001636000016360000163700 +001538000010390001063700080037040C003C0C090040150600411F050045 +2A04004A3904004C4B04004D6103004F7A0000519A00004ED900004EE60000 +4EE600004EE600173A0000173A0000173A0000173A0000173A0000173A0000 +173A0000173A0000173B0000183C0000183C0000183D0000183D0000183E00 +00193F0000193F00001840000012410000094100070040020F00450A0B004B +1207004E1B06005125060056330600584506005B5C04005F76010061950100 +5DCA00005CED00005DED00005DED0019430000194300001943000019430000 +1943000019430000194300001A4300001A4400001A4400001A4500001A4600 +001A4700001B4700001B4800001B4800001A490000154C00000D4D0005014C +000F0051070D00580F09005F18060063220600662E0500683E06006B540400 +6F6E0100728C000070BC00006FF3000070F3000070F3001C4D00001C4D0000 +1C4D00001C4D00001C4D00001C4D00001C4D00001C4D00001C4E00001C4E00 +001D4F00001D5000001D5100001D5200001D5200001D5300001D5400001857 +0000115A0004065C000C0060040E00670B0B0070130700781D04007C280200 +7E3601007F490000826300008784000088B7000085FF000086FF000086FF00 +1E5800001E5800001E5800001E5800001E5800001E5800001E5800001E5800 +001F5900001F5A00001F5B00001F5C00001F5D00001F5E00001F5E0000205F +00001F6000001B650000156A00020C6D00070271000D007A050B00830C0700 +8D140400941E0200972B0000993D00009C570000A27B0000A6AA00009DFF00 +009DFF00009DFF002165000021650000216500002165000021650000216500 +002165000021650000216700002168000021690000216A0000216B0000226C +0000226D0000226D0000226E00001D750000197D0000138400010B8B000503 +930008009B030700A9080400B90E0100C71A0000D22A0000E2410000E66500 +00EA8C0000E1FF0000E0FF0000E0FF00> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410014003F001B004000210042002800490031004E003B00550047005A +0057005C0069005B00800058009F005C00EA005E00FF005E00FF005E00FF00 +5E00FF005E00FF004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410014003F001B004000210042002800490031004E +003A00550047005A0057005C0069005B007F0058009E005B00DF005E00FF00 +5E00FF005E00FF005E00FF005E00FF00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410014003F001A004000210042 +002800490031004E003A00550047005A0056005C0068005B007E0058009C00 +5A00D6005E00FF005E00FF005E00FF005E00FF005E00FF0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410014003F +001A004000210042002800490030004E003A00550046005A0056005C006800 +5C007D0058009B005900D1005E00FF005E00FF005E00FF005E00FF005E00FF +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F001A004000210042002800480030004E003A0055004600 +5A0055005C0067005C007C00580099005900CC005E00FF005E00FF005E00FF +005E00FF005E00FF0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F001A003F0021004200280048003000 +4E00390054004600590055005C0067005C007B00580098005800C9005B00FF +005900FF005700FF005600FF005400FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F001A003F002100 +42002800480030004D00390054004500560054005600660053007C004D0099 +004B00CD004B00FF004A00FE004800FE004700FD004600FC00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F001A003F0021004100270042002E00460037004A0043004A005400490067 +0047007E0042009B004000CA003E00F7003C00F6003B00F5003A00F5003900 +F5004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003C0019003A001F00380026003A002D003C0036003E0042 +003E0053003C0068003A00800037009C003400C8003200EF003100ED003000 +ED002F00EC002E00EC00410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003A0011003500170032001E003100240131002C +003100360031004200300054002E0068002C007F002A009C002900C4002700 +E7002600E6002500E5002500E4002400E40041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003900110034000F0031000F002E0015002A001C +022800230429002C012800370026004400240055002100680020007D001F00 +97001E00BB001E00DD001D00DC001C00DA001B00D9001B00D9004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003E0012003900110034000F0030000E002C000D0029000D +002600130123001A042100220421002C001E0038001C004500190055001700 +65001500780015008F001500AE001500CF001400CD001300CC001200CB0012 +00CA0041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003A00110034000F0030000E002C000D0028000C +0025000B0022000A001F0011031C0019041A00220319002C00160037001300 +4300100052000E0062000D0073000C0087000B00A1000B00BE000A00BC000A +00BA000900B9000900B8004000120040001200400012004000120040001200 +4000120040001200400012003C0011003600100030000E002C000D0028000C +0024000B0021000A001D0009001A0008001700100415001804120022021000 +2B000D0034000A003F0008004D0006005E0005006E0003007F000200980002 +00AE000201AE000101AD000101AD000101AD00350010003500100035001000 +350010003500100035001000350010003500100032000F002D000D0028000C +0024000B0020000A001C0008001800070015000600130005000F000E040C00 +18030A0020010700280004002F00020039000100480000015B0000016C0000 +017C00000295000001AC000001AC000001AC000001AC000001AC002C000D00 +2C000D002C000D002C000D002C000D002C000D002C000D002C000D0029000C +0025000B0020000A001B0008001700070014000600110004000F0003000D00 +020006000E020300150101001D000000260000002D00000037000000470000 +015A0000016B0000017B00000293000001AB000001AC000001AC000001AC00 +0001AC0024000B0024000B0024000B0024000B0024000B0024000B0024000B +0024000B0021000A001C0008001700070013000500100004000E0002000C00 +0100060000000000000000000E000000140000001D000000250000002C0000 +013600000146000001590000016A0000027900000290000002A9000002AC00 +0002AC000002AC000002AC001A0008001A0008001A0008001A0008001A0008 +001A0008001A0008001A0008001800070013000501100003010E0102010B02 +00010204000002050000020600000206000000030C020003120200031B0100 +03240100032B00000335000003440000045400000467000004760000048B00 +0003A6010003AB010003AB010003AB010003AB011100020211000202110002 +021100020211000202110002021100020211000202100101020E0300010905 +0002040B0000040C0000040C0000040D0000040D0000050D00000009070300 +061104000619030006220200062A0100063400000641000007500000076300 +00077401000687010005A3020005AB020005AB020005AB020005AB020C0700 +020C0700020C0700020C0700020C0700020C0700020C0700020C0700020A0A +0002050E0000050E0000060E0000060F0000060F0000060F0000060F000007 +0F0000000D0304000A0E06000A1705000A2003000A2901000A3200000A3F00 +000A4E00000A6000000A71010009840300089F040007AB040007AB040007AB +040007AB040710000007100000071000000710000007100000071000000710 +00000710000007100000071000000810000008110000081100000811000008 +110000081200000912000001100104000E0B07000E1506000E1E04000E2702 +000E3100000E3D00000D4C00000D5C00000D6D02000D8104000B9A05000AAB +06000AAB06000AAB06000AAB06091200000912000009120000091200000912 +000009120000091200000912000009130000091300000A1300000A1300000A +1400000A1400000A1400000A1500000B150000031200040011080700121207 +00121C060012250300122F0100123B00001249000011590100116A0200117E +0400109707000EAD08000EAD08000EAD08000EAD080B1600000B1600000B16 +00000B1600000B1600000B1600000B1600000B1600000B1600000B1600000C +1700000C1700000C1700000C1800000C1800000C1800000C18000006160003 +0015050700160F08001719070017230400172D020017390000164700001656 +010016670200167B05001594080013B00A0013B00A0013B00A0013B00A0D19 +00000D1900000D1900000D1900000D1900000D1900000D1900000D1900000D +1A00000D1A00000E1A00000E1B00000E1B00000E1B00000E1C00000E1C0000 +0E1C0000081A000200180208001A0B08001C1607001C2005001D2A02001C36 +00001C4400001C5401001C6503001C7805001B92090018B40C0018B40C0018 +B40C0018B50C0F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F +1E00000F1E00000F1E00000F1E00000F1F00000F1F0000101F000010200000 +1020000010200000102000000B200001021B0107001E09080020120800221D +0600232703002334010022420100225201002262030023750500228F08001F +B90D001FB90D001FB90C001FB90C1122000011220000112200001122000011 +22000011220000112200001122000011220000112300001123000011240000 +11240000112400001125000012250000122500000D26000004220006002205 +0800260F070027190600292404002A3002002B3E01002A4F02002B6003002B +7304002A8C070028B50A0027BD0A0027BD0A0028BD0A122700001227000012 +27000012270000122700001227000012270000122700001228000012280000 +122800001329000013290000132A0000132A0000132A0000132B00000F2B00 +00072A00050028030A002D0C07002E15070030200400332C0300363A020037 +4B0200365D030036700300358A030034B2040034C4050034C4050034C40414 +2D0000142D0000142D0000142D0000142D0000142D0000142D0000142D0000 +142D0000142E0000142E0000142F0000142F00001530000015300000153100 +0015310000123200000A320003002F010C003309090037120600381C06003B +270400403403004445030043590300436E02004389000045B5000044D70000 +44D7000044D700163400001634000016340000163400001634000016340000 +16340000163400001635000016350000163600001636000016370000173800 +00173800001739000017390000143A00000E3B00020238000C003B070C0041 +0F080043180600452205004A2F05004E3F050050540400526C020054880000 +54B3000051E9000051EA000051EA00183D0000183D0000183D0000183D0000 +183D0000183D0000183D0000183D0000183D0000183E0000183F0000193F00 +00194000001940000019410000194200001942000017430000114500010643 +000B0045040E004C0C0A0051150700541E0600582906005C3906005E4C0600 +626602006582000065A9000062EA000062EA000062EA001A4600001A460000 +1A4600001A4600001A4600001A4600001A4600001A4600001B4700001B4800 +001B4900001B4900001B4A00001B4B00001C4B00001C4C00001C4C00001A4E +0000145100000A5200080053020F0059090C0061110800681A06006C250500 +6F32040071440400745D0200797900007AA0000078FC000078FC000079FD00 +1D5100001D5100001D5100001D5100001D5100001D5100001D5100001D5100 +001D5200001D5300001D5400001E5500001E5500001E5600001E5700001E58 +00001E5800001C5B0000175F00000F6200050464000D006A040D00730B0900 +7C140600841E0300872A0100893900008B5000008E6E00009598000090EE00 +008FFF00008FFF001F5E00001F5E00001F5E00001F5E00001F5E00001F5E00 +001F5E00001F5E0000205F0000206000002061000020620000206300002064 +00002165000021660000216600001F6900001A6F0000147500020B7A000703 +80000B0089040900930A06009F110300A71C0000AC2A0000AD3F0000B55F00 +00BE8A0000B9CE0000B0F90000B1F900> +] 4 { dup 0.1 lt { 1.2 mul 0.02 sub } if + dup 0 lt { pop 0 } if + } bind dup dup dup ] +/RenderingIntent (Perceptual) +>> +setcolorrendering diff --git a/crd/zjs/2300w-1200@150-l250-kx,ucr100,50-per.crd b/crd/zjs/2300w-1200@150-l250-kx,ucr100,50-per.crd new file mode 100644 index 0000000..804cd82 --- /dev/null +++ b/crd/zjs/2300w-1200@150-l250-kx,ucr100,50-per.crd @@ -0,0 +1,4684 @@ +<< +/ColorRenderingType 1 +/BlackPoint [0.000000 0.000000 0.000000] +/WhitePoint [0.964200 1.000000 0.824900] +% Bradford Cone Space +/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] +/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ] +% VonKries-like transform in Bradford Cone Space +/TransformPQR [ +{exch pop exch 3 get mul exch pop exch 3 get div} bind +{exch pop exch 4 get mul exch pop exch 4 get div} bind +{exch pop exch 5 get mul exch pop exch 5 get div} bind +] +/EncodeLMN [ +{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +] +/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] +/EncodeABC [ +{ 116 mul 16 sub 100 div } bind +{ 500 mul 128 add 255 div } bind +{ 200 mul 128 add 255 div } bind +] +/RenderTable [ 33 33 33 [ +<1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00 +DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D +00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C +0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF1C0D00DF +1C0D00DF1C0D00DF1C0D00DF1C0D00DF> + + + + + + + + + +<9D3700009D3700009D380000A13B0000A73F0000AE420000B6440000BD4500 +01C341000DC935001BC826002ABC140041AE010655AE001C51B000324CB900 +4D4ABB006C48AE008948A100A5429F01DB3A9803FF349502FF339502FF3396 +02FF339602FF339602FF339602FF339602FF339602FF339602FF339602FF33 +9602FF339602FF339D3700009D3800009E390000A13C0000A73F0000AF4200 +00B6450000BE460001C442000CC937001ACA28002ABD16003FB0020555AE00 +1B52B100304DBA004C4BBC006A49AE008749A200A4439F01D83B9903FF3596 +02FF339603FF339603FF339603FF339603FF339603FF339603FF339603FF33 +9603FF339603FF339603FF339603FF339D3800009D3800009E390000A13C00 +00A7400000AF430000B6450000BE470001C443000CCA38001ACC2A0029BF18 +003EB1020456AF001953B1002F4EBA004A4CBD00694AAF008649A200A3449F +01D63C9904FF359603FF349603FF349603FF349603FF349603FF349603FF34 +9603FF349603FF349603FF349603FF349603FF349603FF349D3800009E3900 +009E3A0000A23D0000A8400000AF430000B7460000BE480001C444000BCB3A +0019CE2C0028C01A003DB2030257AF001854B1002D4FBA00484DBE00674AB0 +00854AA300A2469F01D43E9A04FF369703FF349703FF359703FF359703FF35 +9703FF359703FF359703FF359703FF359703FF359703FF359703FF359703FF +359D3900009E3A00009E3A0000A23D0000A8410000AF440000B6460000BE48 +0000C445000BCB3C0018CF2D0027C21B003CB4030157AF001655B1002C50B9 +00464EBF00664BB100844BA400A1479F01D23F9B05FF379704FF359704FF35 +9704FF359704FF359704FF359704FF359704FF359704FF359704FF359704FF +359704FF359704FF359E3900009E3A00009F3B0000A23E0000A8410000AF44 +0000B6470000BE490000C546000ACC3E0018D02F0026C41E003BB6050056B0 +001456B2002A51B900444FC000644CB100824DA400A1489E01CF409C06FF37 +9705FF369705FF369705FF369705FF369705FF369705FF369705FF369705FF +369705FF369705FF369705FF369705FF369E3A00009F3B00009F3C0000A23E +0000A8420000AF450000B6470000BE4A0000C5470009CD400017D2320025C7 +200039B9080054B1001258B2002853B9004250C100624DB200804EA5009F4A +9E01CC429D07FF389805FF379805FF379805FF379805FF379805FF379805FF +379805FF379805FF379805FF379805FF379805FF379805FF379E3B00009F3C +00009F3D0000A23F0000A8420000AE450000B6480000BE4A0000C6490009CE +420016D3350024CA230037BC0C0052B1001059B3002654B9003F52C2005F4F +B4007D4FA6009F4C9E00C9449E07FF399907FF379907FF379907FF379907FF +379907FF379907FF379907FF379907FF379907FF379907FF379907FF379907 +FF379F3C00009F3D0000A03D0000A2400000A8430000AE460000B6490000BD +4B0000C64B0008CF450015D5380023CE260036C010004FB3000D5BB3002356 +B8003B53C3005C51B5007A51A8009E4E9E00C546A008FF3B9B09FF389B09FF +389B09FF389B09FF389B09FF389B09FF389B09FF389B09FF389B09FF389B09 +FF389B09FF389B09FF389F3D0000A03D0000A03E0000A3400000A8440000AE +470000B54A0000BD4C0000C74D0007D0470014D73C0022D12A0033C215004C +B6020A5CB4002058B7003855C4005853B7007752AA009B509F00C248A20AFF +3C9C0BFF389C0BFF389C0BFF389C0BFF389C0BFF389C0BFF389C0BFF389C0B +FF389C0BFF389C0BFF389C0BFF389C0BFF38A03D0000A03E0000A03F0000A3 +410000A8440000AE480000B54B0000BD4D0000C64E0006D04A0012D9400020 +D52F0031C61A0048BB04085CB5001D5BB7003357C5005455BA007354AD0098 +52A000BF4BA40BFF3D9E0EFF399E0EFF399E0EFF399E0EFF399E0EFF399E0E +FF399E0EFF399E0EFF399E0EFF399E0EFF399E0EFF399E0EFF39A03E0000A0 +3F0000A03F0000A3420000A8450000AE480000B44C0000BC4E0000C6500005 +D14E0010DB45001EDA35002ECB200044C107045CB600185DB7002F5AC7004F +58BD006F56B0009555A100BC4EA70CFF3FA111FF3AA111FF3AA111FF3AA111 +FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA1 +11FF3AA03F0000A0400000A1400000A3430000A8460000AD490000B44D0000 +BC4F0000C6520003D151000FDC4A001CDF3C002CD0260041C80A015CB90013 +60B7002A5CC500485AC3006A58B30091579C00BA548D06F34D9114FF418D15 +FF428B16FF428B16FF428B16FF428B16FF428B16FF428B16FF428B16FF428B +16FF428B16FF428B16FF42A1400000A1410000A1410000A3440000A7470000 +AD4A0000B34E0000BB510000C5540002D054000DDE500019E3430029D82F00 +3DCB130057BC000D64B800255FB4003E61A6005E66940083687500A2665E00 +D1645600F9625300F9635100F9645100F9645100F9645100F9645100F96451 +00F9645100F9645100F9645100F9645100F964A1410000A1420000A1420000 +A3450000A7480000AC4B0000B34F0000BA520000C4560001D057000BDD5500 +17E74B0025DF390038CC1D0050B40305698F0016717C002B76690042775D00 +62794D0089774000C6723A00FF6E3800FF6F3600FF6F3600FF6F3600FF6F36 +00FF6F3600FF6F3600FF6F3600FF6F3600FF6F3600FF6F3600FF6FA1420000 +A1430000A1430000A3460000A6490000AB4C0000B1500000B9530000C25700 +00CE5A0009DC5A0014EA530021E6430034B231004A8A1D0067580500814200 +158734002A862A004288230064881B009A841800FC7D1500FC7F1300FC7F13 +00FC7F1300FC7F1300FC7F1300FC7F1300FC7F1300FC7F1300FC7F1300FC7F +1300FC7FA1440000A1440000A1450000A3470000A64A0000AA4D0000B05100 +00B7550000C1590000CC5D0006DA5F0011DE5C001EBA55002F924500456D30 +005E441F00771509009004071793010B2F8F000E4E8C0016918B1624FF6D16 +25FF6C1527FF6C1527FF6C1527FF6C1527FF6C1527FF6C1527FF6C1527FF6C +1527FF6C1527FF6C1527FF6CA1450000A1450000A1460000A2480000A54B00 +00A94E0000AF520000B6560000BF5B0000CA600004C8650010B969001D9D64 +002C7F5700415E4700583B37006F0E23018100241488002B2F880033578300 +368C7B0234FA6B0336FF690438FF690438FF690438FF690438FF690438FF69 +0438FF690438FF690438FF690438FF690438FF69A1460000A1460000A14700 +00A2490000A44C0000A84F0000AD530000B4570000BD5D0000B7640006AC6C +00119E70001C8A6F0029736D003B5561005232510067093D007C0042157F00 +4D327D00535C770056946D0053F0640053FE630055FE620055FE620055FE62 +0055FE620055FE620055FE620055FE620055FE620055FE620055FE62A14700 +00A1470000A1480000A24A0000A44D0000A7500000AC540000B2590000AA61 +0000A169000A987100118C78001A7C7D002469800033517E004B2E6D005D08 +5C017400621773006A366E0073606A017798611884FF4B1883FF491884FF48 +1884FF481884FF481884FF481884FF481884FF481884FF481884FF481884FF +481884FF48A1480000A1480000A1490000A14B0000A34E0000A6510000AA55 +0000A05D000097650005906E000A8978000F7F8100147189001D608E00284A +8E003A2C87004D077B0166007F1866008B366100945C5A00958D5412A8FF42 +10A2FF400FA2FF400FA2FF400FA2FF400FA2FF400FA2FF400FA2FF400FA2FF +400FA2FF400FA2FF400FA2FF40A1490000A14A0000A14A0000A14C0000A24F +0000A4520000995900008F61000389690005847400077D7E000A748A000E69 +940014599C001F449E002D2C9F003E099801540098175600AC325200B5564B +00C1894412E0F33615CFFF3115D0FF3115D0FF3115D0FF3115D0FF3115D0FF +3115D0FF3115D0FF3115D0FF3115D0FF3115D0FF31A14A0000A14B0000A14B +0000A14D0000A1500000945600008A5D0001826400027D6E00037A79000373 +8500056A92000763A1000B54AB00163EB100232CBC003011C2004100C31148 +00E82E4500ED523E10FF912F05FFB0311CFDFF231CFEFF231CFEFF231CFEFF +231CFEFF231CFEFF231CFEFF231CFEFF231CFEFF231CFEFF231CFEFF23A14B +0000A14C0000A14C0000A14E000092530000865A00017D6000007768000073 +7300006E7F0000678C0000619C00005FAF00005AC700043FCD00142CDB001F +1BF9002F04FF0D3A0CFF332D03FF492F13FF7E2209FF9F2502FFB12702FFB1 +2702FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FF +B12702FFB127A14D0000A14D0000A14D000092510000845700017A5D000073 +6400006D6C000069770000638300005C91000059A0000055B100004BC40006 +35D0001424E1002013FC002E01FF163415FF431E12FF621F10FF821E0AFFA0 +2000FFB22400FFB22300FFB22300FFB22300FFB22300FFB22300FFB22300FF +B22300FFB22300FFB22300FFB223A14E0000A14E0000935000008454000179 +590000705F000069660000656F0000607A00005A8700005594000051A20000 +4CB300003EC400092CD300141EE800200BFF032D00FF1E2D15FF4B1811FF67 +1A14FF86130AFFA01B00FFB12000FFB22000FFB22000FFB22000FFB22000FF +B22000FFB22000FFB22000FFB22000FFB22000FFB220A14E00009450000084 +520001795600006F5B000068610000626900005D730000587E0000538A0000 +4E9700004AA5000043B5000135C7000A25D8001418EE001F02FF0B2A00FF24 +2612FF4F1411FF6B131CFF8A0206FF9F1800FFB11C00FFB41C00FFB41C00FF +B41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C95 +4F0000845200017954000070570000665C0000606300005B6C000057760000 +528200004D8E0000489A000042A800003AB900022CCC000A1EDE001411F300 +1F00FF15240AFF321813FF550D0CFF6C1218FF8A0004FF9D1500FFB11908FF +C71208FFC71208FFC71208FFC71208FFC71208FFC71208FFC71208FFC71208 +FFC71208FFC712845200017954000070560000675900005F5E00005A660000 +556F0000507A00004B86000046910000419D00003AAB000032BF000224D000 +0A18E3001408F6041F00FF1C1E0AFF37120DFF560D0CFF6E0B13FF880006FF +9A0E00FFAF1515FFE20415FFE20415FFE20415FFE20415FFE20415FFE20415 +FFE20415FFE20415FFE20415FFE204785400006F560000675700005F5A0000 +59610000546900004F7300004B7E0000458900003F95000039A1000032B000 +0029C400021DD4000B11E8001400F60A1D00FF211913FF45030DFF590705FF +6C0D0FFF860005FF980A00FFAD1112FFDC0212FFDC0212FFDC0212FFDC0212 +FFDC0212FFDC0212FFDC0212FFDC0212FFDC0212FFDC026E56000066570000 +5F580000595C0000546400004F6D00004A780000448300003F8D0000389800 +0031A500002AB6000021C8000316D9000B09EB001500F9131700FF251410FF +460009FF5A0606FF6E080BFF840007FF960501FFA80B0BFFC5030BFFC5030B +FFC5030BFFC5030BFFC5030BFFC5030BFFC5030BFFC5030BFFC5030BFFC503 +655700005E590000595B0000545F00004F67000049710000447C00003E8600 +0037900000309C000029AA000022BA000019CB00040FDC000C02ED051400FB +191200FF290F0BFF470009FF5D0007FF6F0007FF820004FF920403FFA20503 +FFB30403FFB30403FFB30403FFB30403FFB30403FFB30403FFB30403FFB304 +03FFB30403FFB3045D590000575B0000535D00004F620000496B0000437600 +003D800000378A00002F94000028A0000022AE00001BBE000012CE000508DF +000C00F00B1000FC1E0D00FF2E0B07FF4A0005FF5E0004FF6F0004FF7F0002 +FF8F0302FF9F0302FFAC0202FFAC0202FFAC0202FFAC0202FFAC0202FFAC02 +02FFAC0202FFAC0202FFAC0202FFAC02> +<99300000993100009A3100009B320000A0360000A7390000AE3B0000B53D00 +00B9380009BC2C0017BB1F0027AE0E003DA5000A4BA8001F48AB003343B300 +4D41B6006A3FAE00853DA400A0399F00C8339900FE2D9400FF2A9400FF2A94 +00FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A +9400FF2A9400FF2A993000009A3100009A3200009B330000A1370000A73A00 +00AE3C0000B53D0000BA390009BD2E0017BC200027AF0F003CA600094CA800 +1D49AC003244B3004C42B7006940AE00843EA4009F3A9E00C6339A01FE2E94 +00FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B +9400FF2B9400FF2B9400FF2B9400FF2B9A3100009A3200009A3200009B3300 +00A1370000A73A0000AF3D0000B63E0000BB3A0008BE2F0016BE220026B111 +003BA600074DA8001C4AAC003145B3004B42B8006741AF00833FA4009E3B9E +00C4349A01FE2F9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C +9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9A3100009A3200 +009B3300009B340000A1380000A83B0000AF3E0000B73F0000BB3B0008BE30 +0016BF230025B312003AA700064EA9001B4BAC003046B3004943B8006642B0 +008240A4009D3C9E00C1359A01FE309400FF2C9400FF2C9400FF2C9400FF2D +9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF +2D9A3200009B3300009B3400009C350000A2390000A83C0000B03F0000B740 +0000BC3D0007BF320015C1250024B5140039A8000450A900194CAC002E47B3 +004744B9006443B0008141A5009B3D9E00BF379B01FE319400FF2D9400FF2D +9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF +2D9400FF2D9400FF2D9A3300009B3300009B3400009C350000A33A0000A93D +0000B03F0000B7410000BD3E0007C0340015C3270024B7160037A9000151AA +00174EAD002C48B3004546BA006244B1008042A5009A3F9D00BC389B01FE32 +9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF +2E9400FF2E9400FF2E9400FF2E9400FF2E9B3300009B3400009C3500009C36 +0000A33B0000A93E0000B0400000B8420000BE400006C1370014C4290023BA +190036AC030150AA00154FAD002A4AB3004347BB006045B2007D44A6009841 +9D00B83A9C01FE339400FF309400FF309400FF309400FF309400FF309400FF +309400FF309400FF309400FF309400FF309400FF309400FF309B3400009C35 +00009C3600009D370000A33C0000A93F0000B0410000B8430000BF420005C2 +390013C62C0022BE1C0034AF06004EAB001351AE00284CB3004049BC005E47 +B4007B45A70096439D00B53C9D01FE359401FF319401FF319401FF319401FF +319401FF319401FF319401FF319401FF319401FF319401FF319401FF319401 +FF319C3500009C3600009D3700009D380000A33C0000A93F0000B1420000B8 +440000C0440004C43C0012C92F0020C21F0032B309004CAC001053AE00254E +B2003C4BBD005B49B5007847A80095459D00B33E9E02FE369501FF329502FF +329502FF329502FF329502FF329502FF329502FF329502FF329502FF329502 +FF329502FF329502FF329D3700009D3800009D3800009E390000A33D0000AA +410000B1430000B9460000C1460004C53F0011CB33001FC6230030B80E0049 +AE010C55AF002250B200394DBD00574BB7007549A90093489E00B141A003FE +389603FF339603FF339603FF339603FF339603FF339603FF339603FF339603 +FF339603FF339603FF339603FF339603FF339D3800009E3900009E3A00009F +3B0000A43E0000AA420000B2450000B9470000C1480003C742000FCD37001D +CB27002EBD140045B2020956B0001E53B300354FBE00524DB900714BAB0090 +4A9F00AE43A203FF3A9704FF359704FF359704FF359704FF359704FF359704 +FF359704FF359704FF359704FF359704FF359704FF359704FF359E3900009E +3A00009F3B00009F3C0000A4400000AA430000B1460000B9480000C14A0002 +C846000ECF3C001CD02D002BC3190041B6040558B1001A56B3003052BE004D +50BC006D4EAD008C4DA000AC47A404FF3D9805FF379805FF37990AFF36990D +FF35990DFF35990DFF35990DFF35990DFF35990DFF35990DFF35990DFF3599 +0DFF359F3B00009F3C00009F3D0000A03D0000A4410000AA440000B1470000 +B84A0000C04C0001C949000CD141001AD6330029C81F003EBB060059B30015 +59B4002B55BE004753C0006850AA0088539400A8508300D14D8813FF3C8613 +FF3D8414FF3E8214FF3E8214FF3E8214FF3E8214FF3E8214FF3E8214FF3E82 +14FF3E8214FF3E8214FF3E9F3D0000A03D0000A03E0000A03F0000A4420000 +AA450000B0480000B84B0000C04E0001CA4D000AD3470017D9390026CF2700 +3AC00E0054B5000F5DB5002658A6003B5D9A0058628A007964730097625E00 +C0605B06FD575A09FF555809FF565709FF575709FF575709FF575709FF5757 +09FF575709FF575709FF575709FF575709FF57A03E0000A03F0000A03F0000 +A1400000A5430000AA470000B04A0000B74D0000BF4F0000CA500008D44C00 +15DD410023D62F0035C618004DA10304678500156D75002A7264003F725700 +5A734B007E723F00AF6E3900FF693600FF6A3400FF6A3300FF6B3300FF6B33 +00FF6B3300FF6B3300FF6B3300FF6B3300FF6B3300FF6B3300FF6BA03F0000 +A1400000A1410000A1410000A4440000A9480000AF4B0000B64E0000BE5100 +00C9530006D5520012E049001FD53B0030A82D00477F1B00635304007D3E00 +14813100278027003E8221005C821B00857E1700EB781400FF771200FF7812 +01FF771201FF771201FF771201FF771201FF771201FF771201FF771201FF77 +1201FF77A1410000A1410000A1420000A1430000A4460000A8490000AE4C00 +00B5500000BD530000C8570004D457000FCB55001DAD4E002D8B3F0041662C +005A3F1C00721308008B0407168D010A2D89000D4886011379860418E5740C +1EFF6C0A1EFF6C0A1FFF6C0A1FFF6C0A1FFF6C0A1FFF6C0A1FFF6C0A1FFF6C +0A1FFF6C0A1FFF6C0A1FFF6CA1420000A1430000A1430000A1440000A44700 +00A84A0000AD4E0000B3510000BB550000C6590002BB5E0010AC61001C945B +002A7850003D584100533633006A0D21017D0021138200282B81002F507E00 +3480780032D26A0735FF620837FF610838FF610838FF610838FF610838FF61 +0838FF610838FF610838FF610838FF610838FF61A1440000A1440000A14500 +00A1450000A3480000A74B0000AC4F0000B1520000B9570000AC5E0006A264 +00129568001C826600286D6300394F58004D2E4A006207380076003D147900 +472E77004E55730051846B0050D261004EFF5D004FFF5D0050FF5D0050FF5D +0050FF5D0050FF5D0050FF5D0050FF5D0050FF5D0050FF5D0050FF5DA14500 +00A1460000A1460000A1470000A3490000A64D0000AA500000AD540000A15C +00029863000A90690012846F00197573002463750032486E00452963005806 +550170005B176E0064336B006B5A67006E855E0977EC510F76FE481077FE47 +1078FE471078FE471078FE471078FE471078FE471078FE471078FE471078FE +471078FE47A1470000A1470000A1470000A1480000A24B0000A54E0000A452 +0000985900008F6000068967000A8170000F76780015697E001E5983002943 +800038267B004B05720264007719620080345D00895757008A80500193EA48 +0690FF400691FF400591FF400591FF400591FF400591FF400591FF400591FF +400591FF400591FF400591FF40A1480000A1480000A1490000A1490000A24C +00009F50000092560000895C0003826400057C6D00077576000A6C80000F60 +890016518F00213E91002D2591003E058C0252008F1852009B314E00A45247 +00AA7F4100B3C73C00A9FF3901AAFF3801AAFF3801AAFF3801AAFF3801AAFF +3801AAFF3801AAFF3801AAFF3801AAFF3801AAFF38A1490000A14A0000A14A +0000A14A00009C4E00008D540000845A00017B60000276680002717200036B +7D0005638900085994000E4B9C001A39A3002426A9003009A9014100AF1443 +00C22E3F00C94F3A05F7893200ECAB3115E1FF2415E2FF2315E2FF2315E2FF +2315E2FF2315E2FF2315E2FF2315E2FF2315E2FF2315E2FF2315E2FF23A14B +0000A14B0000A14B00009C4C00008C52000080570000775D0000706400006B +6D000067780000608400015A92000155A0000449AC000E37B8001727C50020 +16DB002E01E90D370DFC332908FF4C2812FF7F1F0AFF9E2100FFB12400FFB6 +2400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FF +B62400FFB624A14C0000A14C00009D4D00008B5000007F550000755B00006C +61000066690000627300005D7F0000578C0000529900004EA9000047BA0003 +36CA000D25DB001917F5002501FF112E0AFF322213FF5B1713FF7A150AFF97 +1A00FFAD1F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FF +B21F00FFB21F00FFB21F00FFB21FA14D00009E4E00008B5100007F53000174 +5800006A5D0000646400005F6C00005A77000055830000509000004B9D0000 +46AB00003CBD00052DCF000E1EE100190FF9012400FF1A2709FF381C0EFF5D +1615FF7D0A0AFF981400FFAD1C00FFB61B00FFB61B00FFB61B00FFB61B00FF +B61B00FFB61B00FFB61B00FFB61B00FFB61B00FFB61BA14E00008B5100007E +530001755500006A590000635F00005D66000059700000547B00004F870000 +4A93000044A000003EAE000033C2000425D4000E18E8001806FA052300FF20 +2113FF480D0BFF601313FF7E070BFF970E00FFAE180DFFD00E0EFFD10D0EFF +D10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D0EFFD10D8B +5100007D530001735500006B560000625B00005C610000576A000052740000 +4D7F0000488B0000439600003DA3000036B300002AC700051DD8000E11ED00 +1800FA101F00FF251B12FF4D070CFF630C12FF7E000CFF950700FFAB1414FF +E20414FFE20414FFE20414FFE20414FFE20414FFE20414FFE20414FFE20414 +FFE20414FFE2047D540000725500006A560000635800005B5D000056640000 +516D00004C78000047840000418F00003B9A000034A700002DB9000022CB00 +0616DD000E06EE011A00FD17190CFF330B11FF500106FF620C0CFF7C020BFF +930300FFA70F12FFDB0113FFE70113FFE70113FFE70113FFE70113FFE70113 +FFE70113FFE70113FFE70113FFE7017155000068570000615800005C590000 +56600000516800004B720000467D0000408700003A920000339E00002CAC00 +0025BE00001ACF00070FE2000F02F1081700FF1D1409FF36080DFF510008FF +66040AFF7B000AFF910002FFA20907FFBE040FFFE7000FFFE7000FFFE7000F +FFE7000FFFE7000FFFE7000FFFE7000FFFE7000FFFE7006757000060580000 +5A5A0000565C0000516300004B6C00004677000040810000398B0000329500 +002BA2000024B100001DC2000013D2000708E5001000F40F1200FF221005FF +370708FF520007FF670006FF790003FF8C0302FF9E0503FFB20304FFBE0204 +FFBE0204FFBE0204FFBE0204FFBE0204FFBE0204FFBE0204FFBE0204FFBE02 +5E590000595B0000545D0000515F00004B670000457100003F7B0000398500 +00328E00002A99000023A600001DB5000016C400010CD5000800E7021100F7 +150D00FF260B03FF390505FF550003FF670003FF770003FF890103FF9A0202 +FFAB0201FFB50201FFB50201FFB50201FFB50201FFB50201FFB50201FFB502 +01FFB50201FFB502575B0000535E00004F6000004B630000456B00003F7500 +00397F0000318800002A920000239D00001CAA000016B700000FC7000206D8 +000900EB090B00F81B0900FF2B0701FF3C0202FF560001FF670000FF750001 +FF860001FF970001FFA60100FFAD0000FFAD0000FFAD0000FFAD0000FFAD00 +00FFAD0000FFAD0000FFAD0000FFAD00> +<96290000972A0000972B0000972B0000992C00009D2E0000A3300000A93100 +00AD2D0006B1240015AD170025A10700399F000E40A200213CA7003538AE00 +4D37B0006836AB008233A6009E30A400C52B9B00F927A51EFF08A51DFF08A5 +1DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09 +A51DFF09A51DFF09972A0000972B0000972B0000972C0000992D00009E2F00 +00A4310000AA320000AD2E0006B1250014AE180024A30800399F000D41A200 +203DA7003439AE004C38B1006737AC008134A6009C31A400C32C9C00F827A3 +1BFF0BA31BFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0C +A31AFF0CA31AFF0CA31AFF0CA31AFF0C972A0000972B0000972C0000982C00 +00992E00009E300000A4320000AA330000AE300005B2260013B01A0023A409 +00389F000C42A2001F3FA700333AAE004B39B1006638AD008035A6009B32A3 +00C12C9C00F728A118FF0FA117FF10A117FF10A117FF10A117FF10A117FF10 +A117FF10A117FF10A117FF10A117FF10A117FF10A117FF10972B0000972C00 +00982C0000982D00009A2E00009F310000A5330000AB340000AF310005B328 +0013B21B0022A60B0036A0000A43A2001E40A700313CAE00493AB2006439AD +007E36A6009A33A300BE2D9C00F6299F14FF149F14FF149E14FF149E13FF14 +9E13FF149E13FF149E13FF149E13FF149E13FF149E13FF149E13FF149E13FF +14972B0000982C0000982D0000982E00009A2F00009F310000A5340000AC35 +0000B0330004B4290012B31D0021A80D0035A0000845A3001C42A800303DAE +00473BB300623AAE007D37A6009834A300BC2F9D00F42A9C10FF189C0FFF18 +9C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF +199C0FFF199C0FFF19982C0000982D0000982E0000992E00009A300000A033 +0000A6350000AD370000B1350004B52B0011B51F0021AB100034A0000646A3 +001A43A8002E3EAD00453CB300603BAF007C39A6009635A200B8309D00F22B +990BFF1D990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF +1E990AFF1E990AFF1E990AFF1E990AFF1E982D0000982E0000992F0000992F +00009B310000A0340000A7360000AE380000B3370003B62E0010B722001FAE +120032A2010447A4001845A8002C40AD00433EB4005E3CB1007A3AA7009437 +A200B5329D00EF2C9605FF239605FF239604FF249604FF249604FF249604FF +249604FF249604FF249604FF249604FF249604FF249604FF24982E0000992F +000099300000993000009B320000A1350000A8380000AF3A0000B4390002B8 +30000FBA24001EB2150030A5030346A5001547A8002942AD00403FB5005C3E +B200783CA8009239A100B1339E00EC2E9400FF299300FF289300FF289300FF +289300FF289300FF289300FF289300FF289300FF289300FF289300FF289300 +FF28992F0000993000009A3100009A3100009C330000A2370000A93A0000B0 +3C0000B63C0001B933000EBC27001DB619002EA8060245A600124AA9002745 +AD003D41B6005940B400753EA900903BA100AD369E00EA309400FF2A9400FF +2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400 +FF2A9400FF2A9400FF2A993000009A3100009A3200009B3300009D350000A3 +390000AA3B0000B23E0000B83E0001BB37000DBF2B001BBA1C002CAC0A0143 +A7000F4CAA002348AD003944B6005542B5007240AA008D3EA100A9389F00E6 +329500FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400 +FF2C9400FF2C9400FF2C9400FF2C9400FF2C9A3200009A3300009B3300009B +3400009E360000A43B0000AB3D0000B3400000B9400001BD3B000CC12F001A +BF20002AB20E0041A9000A4FAA00204BAE003546B6005144B8006E42AC008A +41A100A63B9E00DC359600FF2F9400FF2E9400FF2E9400FF2E9400FF2E9400 +FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9B3300009B +3400009C3500009C3600009E380000A53C0000AC3F0000B3410000BA430000 +BF3E000AC4330018C5250028B813003DAB000653AC001C4EAE00314AB6004C +47BA006A45AE008744A200A23F9D00D3389501FF328F02FF338D03FF348B04 +FF358B04FF358B04FF358B04FF358B04FF358B04FF358B04FF358B04FF358B +04FF359C3500009C3600009D3700009D3800009F3A0000A53E0000AC410000 +B4430000BB450000C1420009C6390017CA2A0026BE19003AAE010056AD0017 +52AF002C4DB600464ABB006549A200804E8D009A4C7D00B5487F0CFF3D7D11 +FF397A10FF3B7810FF3C7810FF3C7810FF3C7810FF3C7810FF3C7810FF3C78 +10FF3C7810FF3C7810FF3C9D3700009D3800009E3900009E3A0000A03B0000 +A63F0000AC420000B4450000BC470000C3460007C93E0014CE310023C52000 +36B5090050AF001156A90025549A0038598F00525D81006F5F6F008A5D5E00 +AF5B5400EA586616FF426518FF426419FF416419FF416419FF416419FF4164 +19FF416419FF416419FF416419FF416419FF419E3900009E3A00009F3B0000 +9F3C0000A13E0000A6410000AC440000B4470000BB490000C44A0005CB4400 +12D2390020CD270031BD13004A920403637A0014696E00286D5E003B6D5200 +536E4800736D3E009B6A3F09E95E491AFF4D471AFF4E4217FF504217FF5142 +17FF514217FF514217FF514217FF514217FF514217FF514217FF519F3B0000 +9F3C0000A03D0000A03E0000A13F0000A6430000AC460000B3490000BB4C00 +00C34D0003CD4A000FD640001DC335002D9F2800447518005E4E0301783A00 +137B2E00257A25003A7C1F00557C1B0077791700BD751300FF711101FF7111 +03FF701103FF701103FF701103FF701103FF701103FF701103FF701103FF70 +1103FF70A03D0000A03E0000A03F0000A03F0000A2410000A6440000AC4800 +00B24B0000BA4E0000C3500001CD4F000DBA4D001BA246002A833A003D5F29 +00563B1A006D1207008604061587000A2A83000D438100106A800015BC7702 +17FC6C0017FC6C0019FC6B0019FC6B0019FC6B0019FC6B0019FC6B0019FC6B +0019FC6B0019FC6B0019FC6BA03F0000A1400000A1410000A1410000A24300 +00A6460000AB490000B14C0000B8500000BD540001AE57000F9F57001B8C52 +002871490039533D004F322F00650C1F01770020137C0025287A002B487800 +3175740032B4690833FE5C0935FF5A0A37FF590937FF590937FF590937FF59 +0937FF590937FF590937FF590937FF590937FF59A1410000A1420000A14200 +00A1430000A2440000A5470000AA4B0000B04E0000AE530000A3580007985C +00118C5F001B7B5E0026665A00364B5100482B45005D053200710039137300 +432A7100494E6E004C7768004DB75E004AFF57004BFF57004CFF56004CFF56 +004CFF56004CFF56004CFF56004CFF56004CFF56004CFF56004CFF56A14300 +00A1440000A1440000A1450000A2460000A4490000A84C0000A45100009957 +0002905D000A876200117C6700196E6A00235D6B003042640040255B005404 +4F016B00551669005E2F66006554630067785B0066A952066CFC48076DFD47 +086FFE46086FFE46086FFE46086FFE46086FFE46086FFE46086FFE46086FFE +46086FFE46A1450000A1450000A1460000A1460000A2470000A44A00009C4F +000091560000895B0005816100097968000E6F6F00146375001D537800283C +75003622710049026A0260006F195D00773259008052540081754C0085AE46 +0187FF3D0187FF3C0088FF3C0088FF3C0088FF3C0088FF3C0088FF3C0088FF +3C0088FF3C0088FF3C0088FF3CA1470000A1470000A1470000A1480000A149 +0000984D00008C530000835900027B5F0004746700066E6F000A6578000F5A +7F00174B8400213786002D1F85003D028203500087194D0090314900974D43 +009D743D00A2AC39009FFE34009DFF33009DFF33009DFF33009DFF33009DFF +33009DFF33009DFF33009DFF33009DFF33009DFF33A1480000A1490000A149 +0000A1490000964C0000885100007E570000755C00006F6400016A6C000264 +7600055C800009538A00104490001C339600241F9A00300399024000A2163E +00AD2D3A00B34C3600CE7D3200CCA72E09C9FF2706BDFF2706BEFF2706BEFF +2706BEFF2706BEFF2706BEFF2706BEFF2706BEFF2706BEFF2706BEFF27A14A +0000A14A0000A14B0000954C0000865000007B550000725A00006A60000065 +680000617300005B7E0001558A00034D950008409F001231A9001822B40022 +0DBF002F00CA103200DB282F00E1462A0BFD7D2106FF9D2100F6B82300F2D1 +2200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3 +D12200F3D122A14B0000A14C0000944E0000855000007A5300007058000067 +5D0000616500005D6F0000587A0000538600004E93000049A1000042B10001 +35C5000825D6001218ED001D02FF0A2900FF252512FF521210FF701115FF91 +0800FFA91B00FFB71B00FFB71B00FFB81B00FFB81B00FFB81B00FFB81B00FF +B81B00FFB81B00FFB81B00FFB81BA14D0000944F0000845200007954000070 +560000665B00005F6200005A6A000056750000518000004C8C000046980000 +41A5000039B600012CCA00081EDC001210F1001D00FF152309FF321710FF55 +0E0EFF710D14FF910201FFAA1711FFD70A12FFD90912FFD90912FFD90912FF +D90912FFD90912FFD90912FFD90912FFD90912FFD909954F00008352000177 +5400006E560000675800005E5D000059640000546E00004F7900004A840000 +459000003F9C000038A9000030BD000123CF000917E2001207F4041D00FF1C +1C10FF3E090DFF580A0AFF700B11FF8E0000FFA51214FFDC0313FFE30413FF +E30413FFE30413FFE30413FFE30413FFE30413FFE30413FFE30413FFE30483 +520001765500006D560000655700005F59000058600000536800004E720000 +497D0000448800003E930000379F000030AE000027C200011CD3000910E600 +1200F50A1B00FF211712FF45010BFF5A0606FF71090DFF8B0000FFA20E11FF +CE0013FFE90013FFE90013FFE90013FFE90013FFE90013FFE90013FFE90013 +FFE90013FFE900765500006C560000645700005D590000585C000053630000 +4D6C000048770000438200003D8C0000369700002FA4000027B400001FC600 +0214D7000A07E9001400F9131500FF26120DFF450009FF5C0209FF720009FF +890002FF9D0704FFB3050EFFE2000DFFE2000DFFE2000DFFE2000DFFE2000D +FFE2000DFFE2000DFFE2000DFFE2006A560000625800005C590000575B0000 +535F00004D67000048710000427B00003C860000358F00002D9B000026A900 +0020B8000017C900030DDA000A00EB051300FB191000FF2A0D09FF470007FF +5D0005FF710004FF850202FF990503FFAC0304FFBC0104FFBC0104FFBC0104 +FFBC0104FFBC0104FFBC0104FFBC0104FFBC0104FFBC01615800005A5A0000 +555C0000515F00004D620000476B0000417600003B800000348900002D9300 +00269F00001FAD000018BB000010CB000406DD000B00EF0C0D00FD1E0B00FF +2E0805FF4C0003FF5F0002FF700003FF820003FF970101FFA70201FFB60001 +FFB60001FFB60001FFB60001FFB60001FFB60001FFB60001FFB60001FFB600 +595A0000545D0000506000004C62000047660000417000003B7A0000348300 +002C8C0000259700001EA3000017AF000011BE00000ACD000501E1020A00F1 +130900FF240700FF320301FF4B0000FF5F0000FF700000FF810001FF930000 +FFA20100FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200535E00004E6100004A64000046660000416A00003B7400 +00347D00002C870000259000001E9B000017A6000011B100000BBF000103CE +000600E3090600F2190500FE280300FF350000FF4F0000FF630000FF720000 +FF810000FF910000FF9F0000FFAE0000FFB00000FFB00000FFB00000FFB000 +00FFB00000FFB00000FFB00000FFB000> +<9424000094240000942500009425000095260000972600009B2700009F2600 +00A3240004A71D0012A3110022980202339A0012349D002331A500362FAA00 +4D2EAB00652DA8007D2BA7009928A800C1249F00ED20A71EFF00A51DFF00A5 +1DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00 +A51DFF00A51DFF009424000094250000942500009526000095260000972700 +009B2700009F270000A3250004A81E0012A4120022980201349A0011359D00 +2232A400352FAA004C2FAB00642EA8007D2CA7009829A700C025A000EC20A7 +1EFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00 +A51DFF00A51DFF00A51DFF00A51DFF00942400009425000095260000952600 +0095270000972700009B280000A0280000A4260003A81F0011A51300219903 +00349B0010369D002133A4003430AA004A30AC00632FA9007B2CA700972AA7 +00BD26A000EA21A81FFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00 +A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF0094250000942600 +00952600009527000095270000982800009C290000A0290000A4270003A921 +0010A71500209B0500339B000E379D002034A4003232AA004931AD006230AA +007A2DA600952BA700BB27A000E922A920FF00A61FFF00A61FFF00A61FFF00 +A61FFF00A61FFF00A61FFF00A61FFF00A61FFF00A61FFF00A61FFF00A61FFF +009426000095260000952700009528000096280000982900009C2A0000A12A +0000A5280003AA22000FA917001F9E0700319B000C399E001E36A4003133AA +004732AD006031AB00792FA600942CA700B828A000E723AA21FF00A720FF00 +A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF +00A720FF00A720FF009526000095270000952800009628000096290000982A +00009D2B0000A22B0000A62A0002AB24000EAA19001EA00A00309B000A3B9E +001C38A4002F35AA004533AE005E32AC007730A600922DA700B629A000E525 +AB23FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF +00A821FF00A821FF00A821FF00A821FF009527000096280000962900009629 +0000972A0000992B00009D2C0000A32D0000A72C0001AC26000DAC1B001CA3 +0C002E9C00073C9F001A3AA3002D37AA004334AE005C34AD007531A700902F +A600B22BA000E126AC24FF00A822FF00A822FF00A822FF00A822FF00A822FF +00A822FF00A822FF00A822FF00A822FF00A822FF00A822FF00962800009629 +000096290000972A0000972B00009A2C00009E2D0000A42F0000A92F0001AD +29000CAE1E001BA70F002D9D02063D9F00173DA3002A39AA004036AF005A35 +AE007333A7008E30A600AF2CA100DE28AE26FF00A924FF00A924FF00A923FF +00A923FF01A923FF01A923FF01A923FF01A923FF01A923FF01A923FF01A923 +FF0196290000972A0000972B0000972B0000972C00009A2D00009F2F0000A6 +310000AB320000AF2B000BB121001AAB13002B9F03043DA000153FA300283B +AA003D38B0005737AF007135A9008C33A500AB2EA100DA29A91EFF0AA41CFF +0AA41CFF0AA41CFF0AA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41C +FF0BA41CFF0BA41CFF0B972A0000972B0000972C0000982D0000982D00009B +2F0000A1310000A7330000AD340000B02E0009B4240018AF160029A206023D +A1001142A400243EA900393AB000533AB1006E38AA008935A400A631A100D6 +2BA416FF149F14FF149F14FF149E13FF149E13FF149E13FF149E13FF149E13 +FF149E13FF149E13FF149E13FF149E13FF14972C0000982C0000982D000098 +2E0000992F00009C310000A2330000A9360000AF370000B2320008B6280016 +B31A0027A609003CA2000D45A5002142A900363DB0004F3CB3006B3AAC0086 +38A500A233A000CE2E9C08FF22990BFF1D990AFF1E990AFF1E990AFF1E990A +FF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E982D000098 +2E0000992F000099300000993000009D330000A3360000AA380000B13A0000 +B5360006B82C0015B81F0024AC0E0039A3000849A6001D46AA003140B0004B +3FB500673DAE00833BA5009E379A00C1339203FB2F8A05FF2C8806FF2D8607 +FF2E8507FF2E8507FF2E8507FF2E8507FF2E8507FF2E8507FF2E8507FF2E85 +07FF2E992F000099300000993100009A3100009A3200009E350000A5390000 +AC3B0000B33D0000B83B0005BB310013BD240022B3140035A400034DA70018 +4AAA002D44B0004542AD0060449A00794888008E467900A7437301E741760E +FF36740EFF36720FFF37710FFF37710FFF37710FFF37710FFF37710FFF3771 +0FFF37710FFF37710FFF379A3100009A3200009B3300009B3400009B340000 +A0380000A63B0000AD3E0000B5400000BB3F0003BE360011C22A001FBA1A00 +31AC070249A800134E9D0024509100365386004C57790066596A007F585D00 +A0575400CB516216FF3C6017FF3C5F17FF3D5E18FF3D5E18FF3D5E18FF3D5E +18FF3D5E18FF3D5E18FF3D5E18FF3D5E18FF3D9B3300009B3400009C350000 +9C3600009D370000A13A0000A73E0000AE400000B6430000BD430002C13C00 +0EC730001DC221002EAB1100468603035E7200136367002568590037674D00 +4D6845006A683D008B653700C361491CFF45451AFF484017FF4B3C14FF4E3C +14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E9C360000 +9D3700009D3800009D3900009E390000A13C0000A8400000AF430000B74500 +00BE470001C443000CCA38001AB32F00299325003F6C160059480201743700 +12752B002474230037761D0050761A006C7317009C711201FF6A1102FF6A10 +03FF690F04FF690F04FF690F04FF690F04FF690F04FF690F04FF690F04FF69 +0F04FF699D3800009E3900009E3A00009F3B00009F3C0000A23F0000A84200 +00AF450000B6480000BE4A0000BE49000BAC460019973F00277C3500395826 +00523719006911070080040614810009287E000C3F7B000F5F7900149C7500 +15F3680016F3670017F3660018F3660018F3660018F3660018F3660018F366 +0018F3660018F3660018F3669F3B00009F3C0000A03D0000A03E0000A03E00 +00A3410000A8440000AE470000B54A0000B14E0001A350000E954F001A844B +00256B4300364E38004B2E2C00600A1D0172001E1276002326740028427100 +2E6B6F0030A1670831FD560933FF540934FF540935FF530935FF530935FF53 +0935FF530935FF530935FF530935FF530935FF53A03E0000A03F0000A03F00 +00A0400000A1410000A3430000A8460000AD490000A54E00009A5300069056 +0010845700197455002460510032464B004428400058042F006B0036136C00 +3E276B0045486900486D64004BA25B0147F4510047FE500048FE4F0049FE4F +0049FE4F0049FE4F0049FE4F0049FE4F0049FE4F0049FE4F0049FE4FA14000 +00A1410000A1420000A1420000A1430000A3450000A74800009C4D00009253 +000289570009805B0010755F0017686100215761002E3D5C003C2254005003 +4902650050156400592D61005F4E5F00616D580062954F0669FF440568FF42 +0569FF410569FF410569FF410569FF410569FF410569FF410569FF410569FF +410569FF41A1420000A1430000A1440000A1440000A1450000A3470000964C +00008B520000825700047A5C00087262000D696700135E6C001C4E6E002737 +6C00341D6800460162035C006918580070305400784E50007A6C48007C9442 +0082F63A0080FF370081FF370081FF370081FF370081FF370081FF370081FF +370081FF370081FF370081FF37A1450000A1450000A1460000A1460000A147 +0000924B0000865000007D550001745B00036D610005676900095F70000E55 +760017467A0021317C002C1A7B003B0079054C00801A4800872F44008D493F +00926A3A009598360096E7310093FF2E0093FF2E0093FF2E0093FF2E0093FF +2E0093FF2E0093FF2E0093FF2E0093FF2E0093FF2EA1470000A1470000A148 +0000A14800008F4B0000834F00007954000070590000685F0000636700025E +7000055779000A4D8100113F87001B2D8B0024198E0030008F043D00981739 +00A02C3500A4483100AF6D2F00B89E2C00B0DB2901A8FF2501A8FF2501A8FF +2501A8FF2501A8FF2501A8FF2501A8FF2501A8FF2501A8FF2501A8FF25A148 +0000A1490000A14900008E4C0000814E0000775200006D570000655C000060 +6400005B6D00005678000150830005478C000A3A9400132B9D00191BA40024 +04AA012E00B7132D00C3282A00C5422600E0702600E8922200DAB82200D0F4 +1F01D0F51F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1 +F71F01D1F71FA14A0000A14B00008C4E00007F500000755200006C55000063 +5A00005D610000586A0000547500004F8100004A8D0000439800013AA50006 +2EB5000B20C4001313D6001D00E60B2501F9252013FF4E0D0CFF691118FF8D +0000FFA71813FFEA0A14FFEC0915FFED0815FFED0815FFED0815FFED0815FF +ED0815FFED0815FFED0815FFED08A14C00008B4F00007D520000735400006A +550000625900005B5F000056680000527200004C7E00004789000042950000 +3BA1000034B100002AC500031DD7000D10EB001700FA101E03FF281712FF4F +0408FF650D11FF840000FF9E1114FFD60113FFE30313FFE40313FFE40313FF +E40313FFE40313FFE40313FFE40313FFE40313FFE4038B5000007C54000071 +55000068570000625800005B5C000056630000506C00004B77000046820000 +408D00003A98000033A600002BB7000021C9000416DC000D05ED011900FD17 +1809FF320C0FFF510005FF660A0CFF820002FF9C0B0EFFC40112FFE80012FF +E80012FFE80012FFE80012FFE80012FFE80012FFE80012FFE80012FFE8007B +5400007056000067570000605800005A5A0000555F0000506700004A710000 +457C00003F86000038910000319C00002AAB000023BC000019CD00050EE000 +0D01F0081500FE1D1205FF340A0AFF520109FF690008FF800003FF970504FF +AF050BFFD7000BFFD6000BFFD6000BFFD6000BFFD6000BFFD6000BFFD6000B +FFD6000BFFD6006F560000655700005E590000585B0000545D00004F620000 +4A6B0000447600003E800000378A00003094000029A1000022AF00001BBF00 +0112D0000607E3000E00F40F1000FE220E03FF360807FF530005FF690004FF +7D0002FF940402FFA90303FFBB0103FFBA0103FFBA0103FFBA0103FFBA0103 +FFBA0103FFBA0103FFBA0103FFBA01645700005C590000575B0000535E0000 +4F6000004A660000447000003E7A0000378400002F8D00002898000021A500 +001AB3000014C200010BD3000600E6030E00F6160B00FF270901FF390503FF +560002FF690002FF7B0003FF920001FFA40101FFB40001FFB40001FFB40001 +FFB40001FFB40001FFB40001FFB40001FFB40001FFB4005B5A0000555C0000 +515F00004D61000049640000446A00003D750000377E00002F870000289100 +00219C00001AA8000013B500000DC4000204D5000800E80B0900F71C0700FF +2B0500FF3B0100FF570000FF6A0000FF7B0001FF8E0000FFA00000FFB00000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +545D00004F6000004B63000046660000426900003D6F0000377900002F8200 +00288B00002195000019A0000012AA00000DB7000006C4000300D7040600EB +120400F8210300FF2F0100FF420000FF5D0000FF6D0000FF7D0000FF8E0000 +FF9E0000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2004E6100004964000044670000406A00003C6D0000377300 +002F7C000028850000218E00001998000012A200000CAC000005B7000300C5 +020300DB0A0100EA180000F8250000FF310000FF4A0000FF5F0000FF6D0000 +FF7C0000FF8B0000FF9C0000FFA60000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<931F0000931F00009320000093200000932100009421000096210000992000 +009C1E00029F1700109A0B00209300052B970015299B002527A1003626A500 +4C26A6006225A4007923A5009322A800B71EA200E019A516FF02A014FF00A0 +14FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00 +A014FF00A014FF00931F000093200000932000009321000093210000942200 +0096210000992000009C1F00019F18000F9B0C001F9300042C9700142A9B00 +2428A1003527A5004A27A6006126A5007824A6009222A800B51FA200DF1AA5 +16FF02A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00 +A015FF00A015FF00A015FF00A015FF00932000009320000093210000932100 +009322000094220000972200009A2100009D1F0001A019000E9C0E001E9300 +022D9700132B9B002329A1003427A6004928A6006027A5007725A6009123A8 +00B420A200DE1BA617FF03A116FF00A116FF00A116FF00A116FF00A116FF00 +A116FF00A116FF00A116FF00A116FF00A116FF00A116FF0093200000932100 +0093210000932200009422000094230000972200009A2200009D200001A11A +000E9E0F001D9501022D9800112C9B00212AA1003229A6004729A7005F28A6 +007626A6008F24A800B221A300DC1CA718FF03A117FF00A117FF00A117FF00 +A117FF00A117FF00A117FF00A117FF00A117FF00A117FF00A117FF00A117FF +00932100009321000093220000942200009423000094230000972300009A22 +00009D210001A21C000DA011001C9603012C98000F2E9B00202CA100312AA6 +00462AA8005D29A7007427A6008E25A800B022A300DB1DA819FF04A218FF00 +A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF +00A218FF00A218FF0093210000942200009423000094230000942400009424 +0000972400009A2300009E220001A31E000CA213001B9905012B98000D309B +001E2DA0002F2BA600442BA9005B2AA8007328A6008C26A800AE23A400D91E +A91AFF04A319FF00A319FF00A319FF00A319FF00A319FF00A319FF00A319FF +00A319FF00A319FF00A319FF00A319FF009422000094230000942300009424 +00009424000094250000972500009B2400009F240001A420000AA315001A9B +08012A98000B329B001C2FA0002D2DA700422CA900592CA900712AA6008A28 +A800AC25A400D720AA1BFF05A41AFF00A41AFF00A41BFF00A41BFF00A41BFF +00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00942300009424 +000094240000942500009425000095260000982600009C260000A0260000A5 +220009A51800189E0A0029990108339B0019329F002B2FA7003F2EAA00572D +AA006F2BA6008829A800A926A500D621AC1CFF06A41CFF00A41CFF00A51CFF +00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51C +FF00942400009424000094250000942600009526000095270000982700009D +280000A1270000A5240008A81B0016A20D0027990105359C0017349F002831 +A7003C2FAB00542FAB006D2DA700862BA700A528A500D223A817FE0DA51EFF +00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61E +FF00A61EFF00A61EFF00942500009426000095260000952700009527000096 +280000992900009E2A0000A2290000A6260006AA1E0015A51100259A020336 +9C0013389F002534A6003932AC005131AC006A2FA800842DA600A12AA500CE +25A20DFC18A71FFF00A720FF00A720FF00A720FF00A720FF00A720FF00A720 +FF00A720FF00A720FF00A720FF00A720FF0095260000952700009528000096 +28000096290000972900009A2A00009F2B0000A42C0000A8290005AC210013 +A91500239D0400379D000F3BA0002238A6003534AC004D33AE006732AA0081 +30A6009E2CA500C8289C01FA22A821FF00A822FF00A822FF00A722FF00A722 +FF00A722FF00A722FF00A722FF00A722FF00A722FF00A722FF009528000096 +28000096290000962A0000972A0000972B00009B2C0000A02E0000A62F0000 +AA2D0004AE250011AD190021A20900349D000B3EA0001E3CA6003138AC0049 +36B0006335AB007D32A20097319600B42F8C00E32D8202FF298003FF2A7E03 +FF2B7D04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C +04FF2B96290000972A0000972B0000972C0000982C0000982D00009C2F0000 +A2310000A9330000AD320002B12A000FB11E001EA90F00319E000642A1001A +40A5002D3BAA00433AA000593F920070428300844076009D3E6D00C23D6C07 +FF356A07FF366808FF366708FF376709FF376709FF376709FF376709FF3767 +09FF376709FF376709FF37972B0000972C0000982D0000982E0000982E0000 +992F00009E320000A4340000AB360000B1370000B42F000DB624001CB01500 +2DA4050341A00014469100234B8800334E7E00465071005D52650075525C00 +93515300B34B5C13FF385F19FF33611DFF306320FF2D6422FF2C6422FF2C64 +22FF2C6422FF2C6422FF2C6422FF2C6422FF2C982D0000982E0000992F0000 +99300000993100009A320000A0350000A6380000AD3A0000B43B0000B83500 +0ABB2A0019B71C002A9B1000417B0304576A00125E5F002361540033624900 +4863410063633A007F603600A55C481DFF3E4218FF433D15FF463912FF4A37 +11FF4B3711FF4B3711FF4B3711FF4B3711FF4B3711FF4B3711FF4B99300000 +993100009A3200009A3200009B3300009C340000A2390000A83C0000B03E00 +00B7400000BC3C0008B8320016A42A00258821003A641300544301016D3300 +116F2900226F200034701A004B701800646D1700886C1201E8661104FF6310 +04FF630E05FF630E05FF630E05FF630E05FF630E05FF630E05FF630E05FF63 +0E05FF639A3200009B3300009B3400009C3500009C3600009D370000A33C00 +00A93F0000B1410000B8430000AF430008A03F00168E390023753000345324 +004E341700640F06007A0305137B00092678000C3C75000E58730013887100 +15D3660015ED620017ED610018ED600018ED600018ED600018ED600018ED60 +0018ED600018ED600018ED609C3600009D3700009D3800009E3900009E3A00 +009F3B0000A43E0000AA420000B2450000A6490000994A000C8C4800177D44 +0023653D0032493400472B29005C091B016D001C11700022246D00253C6A00 +2B626A002F9164002DDA57042EFF51042FFF510330FF500330FF500330FF50 +0330FF500330FF500330FF500330FF500330FF509E3900009E3A00009F3B00 +009F3C0000A03D0000A03E0000A4410000A84400009C4A0000924E0005884F +000E7D5000186E4E00215A4B002F42450040253B0054042C01650032126600 +3A2564004142640045655F004992580046D14E0045F9490046F9490047F948 +0047F9480047F9480047F9480047F9480047F9480047F9480047F9489F3D00 +00A03E0000A03E0000A03F0000A0400000A1400000A1440000954A00008B4F +0001825200077955000E6F5800166259001F5159002B395500391E4D004C02 +43025F004B145E00542A5C005A485A005C6654005D884B005EBF440161FF3E +0162FF3E0163FF3D0163FF3D0163FF3D0163FF3D0163FF3D0163FF3D0163FF +3D0163FF3DA03F0000A1400000A1410000A1420000A14200009B4300008F49 +0000854E00007C530003745700076C5C000C636100125864001B4966002631 +640031195F0043005B045600641852006B2E4E0071494B007365440075863E +007AC838007AFF32007BFF32007BFF32007BFF31007BFF31007BFF31007BFF +31007BFF31007BFF31007BFF31A1420000A1430000A1440000A14400009A46 +00008C490000814D0000775200006F560002675C0004616300085A69000E50 +6F0016417100202C73002A1571003A00720647007A1A4100802E3D0085453A +00896336008D8732008FC82E008BFF29008CFF29008CFF29008CFF29008CFF +29008CFF29008CFF29008CFF29008CFF29008CFF29A1450000A1450000A146 +000099470000894A00007E4C0000745000006B550000645B00005E62000159 +6A00045272000A487900113A7E001A278200231284002F0087063800901833 +00962C2F009A452C00A1652B00A9912900A5C427009BFF21009BFF21009BFF +20009BFF20009BFF20009BFF20009BFF20009BFF20009BFF20009BFF20A147 +0000A147000098490000874C00007B4E0000724F000069530000615900005B +60000057680000527200014B7C00054284000C358B00132592001A13970025 +009D032C00A9152900B2282500B4412200BF652300CB8B2000C5B42000BBFB +1C00B8FF1B00B8FF1B00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9 +FF1B00B9FF1BA1490000984B0000854E0000795000006F5100006852000060 +570000595D000055660000507000004B7B0000458700013D910004329B0008 +27A7000D19B1001709BF001F00CC102000DC231D01F13B1C00F0611A08FA86 +0F00FBA91613FDF90A12F6FF0A12F7FF0912F7FF0912F7FF0912F7FF0912F7 +FF0912F7FF0912F7FF0912F7FF09984C0000844F0000775200006D53000065 +5500005F560000585C0000536400004E6E0000497A0000438500003D910000 +369D00002EAC000027C000011BD100080FE5001100F50A1900FF211511FF45 +0008FF5B0709FF770409FF950309FFB90511FFE80011FFE80011FFE80011FF +E80011FFE80011FFE80011FFE80011FFE80011FFE80082510000755400006B +550000635700005C590000585B0000526200004D6B00004876000042800000 +3B8B0000349500002DA2000026B200001EC4000114D5000907E8001200F813 +1300FF26100BFF460009FF5F0008FF760006FF910304FFAB0409FFD00109FF +CE0109FFCD0109FFCD0109FFCD0109FFCD0109FFCD0109FFCD0109FFCD0174 +55000069560000615800005A5A0000565C0000525E00004C66000047700000 +417A00003B850000338E00002C9A000025A700001EB6000016C700020CD800 +0900EA051100FA190E00FF2B0B08FF490005FF600004FF740002FF8D0302FF +A50303FFB90103FFB90003FFB90003FFB90003FFB90003FFB90003FFB90003 +FFB90003FFB900685700005F580000595B0000545D0000505F00004C620000 +466A0000407500003A7F0000328800002B920000249E00001DAB000016B900 +000FC9000305DB000A00EE0C0C00FC1F0A00FF2F0603FF4C0001FF610001FF +730002FF8A0001FFA10101FFB30000FFB30000FFB30000FFB30000FFB30000 +FFB30000FFB30000FFB30000FFB3005E590000575B0000525E00004E610000 +4A63000046660000406F00003A790000328200002B8C0000239600001CA100 +0015AE00000FBB000008CA000401DD040900F0140700FD240500FF330201FF +4C0000FF630000FF740000FF880000FF9C0000FFAF0000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200565C0000515F0000 +4C6200004865000043680000406B000039740000327D00002B860000238F00 +001C99000015A400000EAF000008BC000201CA000600E10B0400F01A0300FD +290100FF360000FF550000FF690000FF770000FF890000FF9D0000FFA90000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4F6000004A63000045670000416A00003D6C0000396F0000327700002B8000 +00238900001C930000159C00000EA6000007B0000101BC010300CF060100E2 +100000EF1D0000FC2A0000FF370000FF550000FF690000FF750000FF860000 +FF9B0000FFA40000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20048650000436800003E6B00003A6E000036710000327300 +002B7A0000238300001C8C0000159500000E9E000009A6000002B0000400BC +010300CE050100E1100000EE1D0000FC290000FF350000FF530000FF670000 +FF720000FF830000FF960000FFA00000FFAF0000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<901A0000911A0000911B0000911B0000911B0000911C0000931C0000951B00 +00971800019811000D9106001D90000922940017209800251E9D00351DA000 +4A1EA100601DA000751CA1008C1AA400AB18A100CF139E06F70A9B0CFF009B +0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF00 +9B0CFF009B0CFF00901A0000911A0000911B0000911B0000911C0000921C00 +00931C0000951B0000971900009812000C9307001C90000823940016219800 +241F9E00341EA100491FA1005F1EA000741DA1008B1BA400AA19A100CE149E +05F70C9B0CFF009B0CFF009B0CFF009B0CFF009B0DFF009B0DFF009B0DFF00 +9B0DFF009B0DFF009B0DFF009B0DFF00911A0000911B0000911B0000921C00 +00921C0000921D0000931D0000961C0000971A00009914000C9408001B9000 +062494001422980023209E00331FA1004820A2005E1FA100731EA2008A1CA5 +00A91AA200CE159E05F70D9C0DFF009C0DFF009C0DFF009C0DFF009C0DFF00 +9C0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0DFF00911B0000911C00 +00921C0000921D0000921D0000921E0000931E0000961D0000981B00009A15 +000B960A001A9100052594001323980022219E003120A2004621A3005C20A1 +00711FA200881DA500A81BA300CC169F04F70F9C0EFF009C0EFF009C0EFF00 +9C0FFF009C0FFF009C0FFF009C0FFF009C0FFF009C0FFF009C0FFF009C0FFF +00911C0000921C0000921D0000921D0000921E0000921E0000941E0000961D +0000981C00009B16000A980C00199201042595001224980020239E003021A2 +004422A3005B22A2007020A200871EA600A61CA300CB179F04F6109D10FF00 +9D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF +009D10FF009D10FF00921C0000921D0000921E0000921E0000921F0000931F +0000941F0000971E0000991D00009C1800099A0E0018930303259500102698 +001F249E002E23A2004223A4005923A3006F21A3008620A600A41DA400CA19 +9F02F6139E11FF009E11FF009E11FF009E11FF009E11FF009E11FF009E11FF +009E11FF009E11FF009E11FF009E11FF00921D0000921E0000921E0000931F +0000931F00009320000094200000971F0000991E00009D1A00079C10001795 +04022595000E2898001D269E002C24A3004025A5005724A4006D23A3008421 +A600A21FA500C81A9E01F5159F12FF009F13FF009F13FF009F13FF009F13FF +009F13FF009F13FF009F13FF009F13FF009F13FF009F13FF00921E0000931F +0000931F000093200000932000009321000095210000972000009A1F00009E +1C00069E1300159706012595000B2A98001B289D002A26A3003E26A5005426 +A5006B24A4008223A700A020A600C71C9E00F417A014FF00A014FF00A014FF +00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014FF00A014 +FF00931F000093200000932000009321000093210000932200009522000098 +2200009B2100009E1E0005A0160014990900249500082C9800182A9D002828 +A3003B28A6005228A6006926A5008024A7009E22A700C51E9F00F219A116FF +00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116 +FF00A116FF00A116FF00932000009321000093210000942200009422000094 +23000095230000982300009B2200009F200004A31900129D0C00229500052F +9900152D9D00252BA300382AA7004F2AA8006628A6007E26A7009A24A800C3 +209F00EF1BA318FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218 +FF00A218FF00A218FF00A218FF00A218FF0093220000942200009423000094 +230000942400009424000095240000982400009C240000A0230002A41C0010 +A010002096010131990012309C00222EA300352CA8004B2CA900632BA7007B +28A6009726A800BF229F00EC1DA51BFF00A11CFF00A01DFF009F1EFF009E1F +FF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009423000094 +2300009424000094240000942500009426000096260000992600009D260000 +A1250001A620000EA514001D9A05012F99000D349C001F31A200312FA80047 +2EAB00602DA800782B9C008E2C9300AA2C8A00CE2A7D00FE267901FF267700 +FF277501FF287401FF287401FF287401FF287401FF287401FF287401FF2874 +01FF2894240000942500009425000095260000952700009527000097280000 +9A2900009F290000A3280001A823000BA819001BA00A002D9A0009389D001B +35A2002D329F004034960054388A00683B7E007C3A730094386B00B3376500 +F2356405FF316205FF326105FF336005FF346005FF346005FF346005FF3460 +05FF346005FF346005FF349526000095270000952700009628000096290000 +96290000982A00009B2B0000A12C0000A62C0000AA280009AC1E0018A61000 +299D0305389500133F8800214580003047760041496B00564C60006D4C5900 +884B5100A5464E03F3426C29FF1E6D2CFF1D6C2CFF1D6C2CFF1D6B2CFF1D6B +2CFF1D6B2CFF1D6B2CFF1D6B2CFF1D6B2CFF1D962800009629000096290000 +972A0000972B0000972B0000992C00009D2E0000A3300000A9310000AD2D00 +07B1240015AA1700268F0E003B72020450640012575900215A4F00305B4600 +435D3E005D5E3800775B340096573606FE503F17FF3D3A14FF413611FF4533 +0EFF48320EFF48320EFF48320EFF48320EFF48320EFF48320EFF48972A0000 +972B0000972C0000982D0000982D0000982E00009A2F00009F320000A63400 +00AD360000B1330004A92D0013982600217E1E00355C11004E3E0102663000 +1069270020691E00316B1800466B16005E6816007B661300B8630F03FF5E0D +03FF5E0C03FF5E0B04FF5F0B04FF5F0B04FF5F0B04FF5F0B04FF5F0B04FF5F +0B04FF5F982D0000982E0000992E0000992F0000993000009A3100009C3300 +00A2360000A8390000B03B0000A23C0006953900148633001F6E2C00304E21 +00493016005F0E0600740305127500092573000B396F000D536C00127A6C00 +15B6630015E95C0016E85B0017E85B0018E85A0018E85A0018E85A0018E85A +0018E85A0018E85A0018E85A993000009A3100009A3200009B3300009B3400 +009B3400009E370000A53B0000A73E00009C4300009144000A85420015763E +00205F39002F453100432827005708190168001B116A002023670023396400 +295B64002D8460002EB756002BF84E002CF84D002DF74D002EF74C002EF74C +002EF74C002EF74C002EF74C002EF74C002EF74C9B3300009B3400009C3500 +009C3600009D3700009D3800009F3A00009E3F0000954500008B490003814A +000D76490016684800205445002C3D40003C2237004F03290160002F125F00 +37235E003D3D5D00415E5A004582540045B44A0043F4420044F4420044F441 +0045F4410045F4410045F4410045F4410045F4410045F4410045F4419D3700 +009D3800009E3900009E3A00009F3B00009F3C0000984000008E460000854B +00007C4E00067350000D695100155C53001E4B520028344F00351B47004701 +3E035800461457004F2856005644540058604F00597D47005AA740005CFE38 +005DFE38005EFE37005EFE37005FFE37005FFE37005FFE37005FFE37005FFE +37005FFE379F3B00009F3D0000A03D0000A03E0000A03F0000964200008946 +0000804B0000774E00026E5200066756000B5E5A0011535D001A435E00242D +5D002E155800400055054F005E184C00662D47006B4544006E5F3F006F7B3A +0072A8350074FF2E0075FF2D0075FF2D0075FF2D0075FF2D0075FF2D0075FF +2D0075FF2D0075FF2D0075FF2DA03F0000A0400000A1410000A14100009444 +0000864700007C4A0000734E00006A520002635700045C5D00075563000D4B +6700163C69001F276B002810690038006B084100741B3A007A2D37007E4334 +00825E3100857B2D0088AF2B0086F9260085FF250085FF250085FF240085FF +240085FF240085FF240085FF240085FF240085FF24A1420000A1430000A144 +000092470000844A0000794B0000704D00006751000060570000595D000054 +6500044D6C00094471001135760019227900220D7A002E007F09330088192D +008E2B2B0091432800975E27009C8126009CB2240095F31E0093FF1D0093FF +1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1CA145 +0000A146000090490000814C0000764D00006D4E0000665000005E55000057 +5B0000536400004D6D0001467500063D7D000C2F8300131E87001C0C8C0025 +00940628009F162400A6282100A7401E00AE5D1E00B7821E00B7A91E00AEE5 +1A00A8FF1800A8FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9 +FF1700A9FF17A14800008F4B00007F4D0000734F00006A500000635100005D +540000565A0000516200004C6B00004676000040800002378900062C92000B +1F9A001110A2001A01AD021F00BA131C00C5231900D0391700D1591600DD7B +1400E3A2140AEFF60E02D2FF1102D3FF1102D3FF1002D3FF1002D3FF1002D3 +FF1002D3FF1002D3FF1002D3FF108E4C00007D4F0000715100006752000060 +5400005A56000055590000506100004A6A0000457500003F800000388B0000 +3196000029A3000021B2000216C100090AD3001100E40B1400F61F1207FF38 +080AFF570108FF6F0006FF8A0204FFA8050CFFE7000BFFE2000AFFDC000AFF +DC000AFFDC000AFFDC000AFFDC000AFFDC000AFFDC007B5100006F53000065 +5500005D570000585A0000545C00004F610000496A0000447500003E7F0000 +378900002F930000289F000021AD00001ABD000011CE000506E1010D00F30F +0F00FE230C02FF370705FF560004FF6C0003FF840102FFA00302FFB80002FF +B80002FFB80002FFB80002FFB80002FFB80002FFB80002FFB80002FFB8006D +560000635800005B5A0000565C0000525E00004E61000049650000436F0000 +3D790000368300002E8C00002797000020A3000019B1000012C000010AD000 +0601E5040C00F5160A00FF280801FF3A0302FF580000FF6C0001FF810001FF +9C0100FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200615800005A5A0000545D0000506000004B62000047650000 +436A00003C740000357D00002E860000279000001F9B000018A7000012B300 +000BC2000103D2000700E70C0700F61C0500FF2C0300FF3C0000FF5A0000FF +6E0000FF810000FF980000FFAE0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200585B0000535E00004E61000049640000 +45670000406A00003C6E0000357800002E810000268A00001F940000189E00 +0011A900000BB4000004C1000400D4050400E9120200F6220100FF2F0000FF +490000FF620000FF700000FF830000FF9B0000FFA80000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200515F00004C620000 +47660000426900003E6C00003A6E0000357200002E7B0000268400001F8D00 +001797000010A0000009AA000102B5000400C3030200D7090000E8150000F5 +230000FF2F0000FF480000FF600000FF6E0000FF800000FF960000FFA30000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4A63000045670000406B00003B6E000037700000327200002E760000267E00 +001F87000018900000109900000BA1000006A9000201B4000400C2030200D6 +090000E8150000F5220000FF2F0000FF450000FF5E0000FF6D0000FF7D0000 +FF900000FF9F0000FFAF0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200436900003D6C0000386F0000337200002F7400002B7600 +00267900001F8100001A89000015910000109800000CA1000006A9000201B4 +000400C1020200D5090000E7140000F4210000FF2E0000FF420000FF5C0000 +FF6C0000FF7A0000FF8B0000FF9D0000FFA90000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8D1400008E1500008E1500008E1600008F1600008F1700008F170000911600 +0092130000920D000A8B0201188D000B199000171893002416970033169A00 +47169B005D159C0071149D0087139E00A1109D00BF0C9A00E1099805FF0097 +04FF009704FF009704FF009704FF009704FF009704FF009704FF009704FF00 +9704FF009704FF008E1500008E1500008E1600008F1600008F1700008F1700 +008F1800009116000092140000920E00098D0401178D000A1A900016199300 +2317980032169B0046179C005C169C0070159D0086149F00A0129D00BF0D9B +00E10A9905FF009805FF009805FF009805FF009805FF009805FF009805FF00 +9805FF009805FF009805FF009805FF008E1500008E1600008F1700008F1700 +008F1800008F180000901800009117000093150000930F00088E0501178D00 +091B9000151A93002218980031179C0045189D005B179D006F169E0085159F +009F139E00BF0E9C00E20B9906FF009805FF009805FF009805FF009806FF00 +9806FF009806FF009806FF009806FF009806FF009806FF008E1600008F1700 +008F1700008F18000090180000901900009019000092180000931600009411 +0007900600168E00071D9100141B94002119990030189C0044199D0059189D +006E179E008316A0009E149F00BF109C00E20C9A08FF009906FF009906FF00 +9906FF009906FF009906FF009906FF009906FF009906FF009906FF009906FF +008F1700008F1800008F180000901800009019000090190000901A00009219 +00009417000095120006910800168E00061E9100131C9400201B99002E1A9D +00421A9E00581A9E006C199F008218A1009C15A000BD119D00E20D9B09FF00 +9908FF009908FF009908FF009908FF009908FF009908FF009908FF009908FF +009908FF009908FF008F180000901800009019000090190000901A0000911A +0000911A0000931A00009518000096140005930A00158E01041F9100111E95 +001F1C99002D1B9D00401C9F00561B9F006B1A9F008019A1009B17A100BC13 +9E00E20F9C0BFF009A09FF009A09FF009A09FF009A09FF009A09FF009A09FF +009A09FF009A09FF009A09FF009A09FF009019000090190000901A0000911A +0000911A0000911B0000911B0000931B00009519000097160004950C00138F +02032092000F2095001D1E9A002B1C9E003E1DA000541DA000691CA0007E1A +A2009919A200BB149E00E2109D0CFF009B0AFF009B0AFF009B0BFF009B0BFF +009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF0090190000901A +0000911A0000911B0000911B0000911C0000921C0000941C0000961A000098 +170003970E00129003012192000D2295001B209A00291E9F003C1EA100521F +A100671DA0007C1CA300971AA400B9169F00E2129E0EFF009B0CFF009B0CFF +009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0C +FF00911A0000911B0000911B0000921C0000921C0000921D0000921D000094 +1D0000971C000099190002991100109205002092000A24950019229A002820 +A0003920A2004F20A200651FA1007A1EA300941CA500B718A000E014A010FF +009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0E +FF009C0EFF009C0EFF00911C0000921C0000921D0000921D0000921E000092 +1E0000931F0000951E0000971D0000991B00019B14000F9608001F92000826 +960016249A002522A0003622A3004C22A3006221A2007820A400921EA600B5 +1BA100DE16A212FF019D10FF009D10FF009D10FF009D10FF009D10FF009D10 +FF009D10FF009D10FF009D10FF009D10FF00921D0000921D0000921E000092 +1F0000931F0000932000009320000095200000981F00009A1D00009D17000D +990C001C92000429960013279A002225A0003324A4004925A5005F24A30076 +22A4008F20A700B21DA000DB199B0FFF0A9917FF009818FF009719FF00971A +FF00961BFF00961BFF00961BFF00961BFF00961BFF00961BFF00921E000093 +1F0000931F0000932000009321000093210000932100009621000099210000 +9B1F00009F1A000B9D10001A9503022897000F2A99001F28A0003027A50045 +27A6005C269E007027950085288F009E288800BE277A00E5238F24FF008E25 +FF008921FF05831BFF0C7E16FF117E16FF117E16FF117E16FF117E16FF117E +16FF1193200000932000009321000093210000942200009422000094230000 +96230000992200009C210000A11E0008A11400189906002897000B2E9A001C +2C9F002C2A96003C2E8D004F32830062337900743370008B336800A7326100 +D4305F03FF2C5D04FF2D5C04FF2D5C05FF2E5B06FF2D5B06FF2D5B06FF2D5B +06FF2D5B06FF2D5B06FF2D9321000094220000942300009423000094240000 +9424000094250000962500009A2500009D240000A2210006A51900159E0C00 +25980106318B0013388100203D77002D406F003C42650050455C0066455600 +7F444F009A414900BD3C6423FF1E6424FF1E6325FF1E6225FF1E6225FF1E62 +25FF1E6225FF1E6225FF1E6225FF1E6225FF1E942300009424000094240000 +94250000942500009526000095270000972700009B280000A0280000A42500 +04A81E00129D150022840C00356B0205485E00114F54001F534A002D554200 +3F573B00575936006F5632008A522F00B74E3D16FF383712FF3D330FFF402F +0CFF432D0AFF462D0AFF462D0AFF462D0AFF462D0AFF462D0AFF4694250000 +942600009526000095270000962800009628000096290000992A00009D2B00 +00A22C0000A62A00029C2700108D22001E761B0030560F00493A01025F2D00 +0F6324001F631C002F6516004265140058631400726113009B5F0C01FD590B +02FD590902FD590802FD5A0802FD5A0802FD5A0802FD5A0802FD5A0802FD5A +0802FD5A952700009628000096290000962A0000972A0000972B0000972C00 +009A2D00009F2F0000A0320000973600048C3300117E2E001D6728002E491F +00452D14005A0D05006D0205116F0009246D000B3769000D4E6600116F6600 +14A0600014E6560016E5550017E4550018E4540018E3540018E3540018E354 +0018E3540018E3540018E354972A0000972B0000972C0000982D0000982E00 +00982E0000992F00009C3100009A370000933E0000893F00087D3C00136F39 +001F5834002D402D003F2524005307180163001A1164001E22610021365E00 +26555E002B795A002DA352002AED48002BED48002CED47002DED46002DED46 +002DED46002DED46002DED46002DED46002DED46982D0000982E0000992F00 +00993000009A3100009A3200009B330000953A00008D400000844500027A44 +000B6F4300156142001F4D40002A373C00371F34004B0327025A002C125800 +332356003B3A57003F58540042774E0043A0450041E13C0041EC3B0042EC3A +0042ED3A0043ED390043ED390043ED390043ED390043ED390043ED399A3100 +009A3200009B3300009B3500009C3500009C360000913D0000884200007F47 +0000764900056D4A000D634B0014564C001C454C00252F4900301842004301 +3A03520042144F004C274F0053404C00545A48005575430056983B0058DD33 +0058F8310059F931005AF931005AFA30005AFA30005AFA30005AFA30005AFA +30005AFA309C3600009D3700009D3800009E3900009D3A00008F4000008443 +00007B470000724A0001694D00066150000B595400104E5600183E57002128 +56002B1251003C004F0648005A184400622C3F0066413D00685A39006A7436 +006C98310070E52A006FFF29006FFF290070FF280070FF280070FF280070FF +280070FF280070FF280070FF289E3B00009F3C0000A03D00009D3E00008D43 +000081460000774700006E4A0000664E00015F52000458580006505D000C46 +6000143762001D226300260C6100350065093B006F1B3300742C310078402E +007C5A2B007F742900819B270081DE23007FFF21007FFF21007FFF21007FFF +20007FFF20007FFF20007FFF20007FFF20007FFF20A03F0000A04000009D41 +00008B4600007E480000744900006B4A0000644E00005C5200005659000050 +5F0003496600083F6B00102F6E00181D7000210871002D00790A2D00821A28 +00872A26008A412400905A22009477210095A0200091D81C008DFF19008EFF +19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19A142 +00009C440000894800007B4A0000714C0000684D0000614E00005B51000054 +5800004F5F000049680001426F00053775000C297B0013187E001C06830025 +008C092400961720009B281D009D3E1A00A3581A00A8771A00AD9E1900A7CE +18009FFF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0 +FF1300A0FF139C460000874A0000784C00006D4E0000654F00005E50000059 +520000535700004D5E000048670000427100003B7A0002318100072589000C +168E00150896001B00A1071B00AD141800B5241500BA381300BD531100C473 +1100CC960F00CBC71200BEFF0F00BEFF0E00BEFF0E00BFFF0E00BFFF0E00BF +FF0E00BFFF0E00BFFF0E00BFFF0E854C0000764F00006B500000625200005B +53000056560000525800004C5E000047660000417100003A7B000033840000 +2B8E00002399000219A400070DAE000E01BC021300CC0F1000DA200E00E832 +0C00EE4D0900F16B0802F7890502FDAE060AFAFF0008F1FF0108F2FF0108F2 +FF0108F2FF0108F2FF0108F2FF0108F2FF0108F2FF01745100006853000060 +55000059570000545A00004F5D00004B6000004667000040710000397C0000 +328600002A910000239C00001CA9000015B700000EC7000204D9000900ED0D +0A00FC1F0800FF300502FF4D0000FF640000FF780001FF960000FFB10000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20066 +5500005D580000575B0000525E00004D61000049640000456700003F6E0000 +39780000318100002A8B0000239500001BA0000014AC00000EB9000007C700 +0400DB050700EF140500FC250400FF340000FF4F0000FF670000FF7B0000FF +940000FFAC0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2005B5A0000555C0000506000004B6300004666000042690000 +3E6C000038730000317C00002A850000228E00001B98000014A300000DAD00 +0006BA000200C8010500E00B0200EE1A0100FC290000FF380000FF570000FF +6B0000FF7C0000FF930000FFA60000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200535D00004E6100004964000044680000 +3F6B00003B6E00003770000031760000297F0000228800001B920000139B00 +000CA4000004AE000300BA010300CB050100E00E0000ED1B0000FB290000FF +360000FF550000FF6A0000FF790000FF8E0000FFA10000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2004C62000047660000 +416A00003C6D000038700000337200002F74000029790000228200001B8B00 +00139400000E9C00000AA4000003AD000300BA010400CA040100DF0D0000ED +1B0000FA280000FF340000FF540000FF690000FF760000FF8A0000FF9E0000 +FFAF0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +446700003F6B00003A6E000034710000307300002B75000028770000227C00 +001C840000188C0000139400000E9B00000AA4000004AD000300B9010400C9 +040100DE0D0000EC1A0000FA270000FF330000FF520000FF660000FF730000 +FF860000FF9C0000FFAA0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2003C6D000037700000317300002C75000028770000247800 +0023790000217D00001D840000188B0000139300000F9B00000AA4000004AD +000300B9010400C8040100DE0C0000EB190000F9260000FF320000FF4F0000 +FF640000FF710000FF830000FF990000FFA30000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8A0F00008A0F00008A1000008B1000008B1100008B1100008C1100008C1100 +008D0F00008C0900068701021289000C118A0017108C00220F9000300E9400 +430D9600580C96006D0C9800820A980098089600AF069500CB029501F60093 +00FF009300FF009300FF009300FF009300FF009300FF009300FF009300FF00 +9300FF009300FF008A0F00008B1000008B1000008B1100008C1100008C1200 +008C1200008D1200008E1000008D0A00068802021289000B128B0016118D00 +211091002F0F9500420E9600570E97006C0D9800810C9900970A9700AF0796 +00CB039501F5019301FF009301FF009301FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF008B1000008B1000008B1100008C1200 +008C1200008C1200008D1300008D1300008E1000008D0C0005890302128900 +0A148B0015128D00211191002E10950041109700560F97006B0E9900800D9A +00970B9800B0089700CB049601F4029401FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF009401FF009401FF008B1100008C1100 +008C1200008C1200008D1300008D1300008D1400008E1400008F1100008E0D +00048A0401128A0009158C0014148E00201292002D11960040119800551098 +00690F99007F0E9B00960C9A00B0099800CB069600F3029501FF009501FF00 +9501FF009501FF009501FF009501FF009501FF009501FF009501FF009501FF +008C1200008C1200008D1300008D1300008D1400008D1400008E1400008E14 +0000901200008F0E00038C0500128A0007168D0013158F001F1493002C1297 +003E1299005412990068119A007D109C00950E9B00AF0B9900CC079700F203 +9501FF009501FF009501FF009501FF009501FF009501FF009501FF009501FF +009501FF009501FF008C1200008D1300008D1400008D1400008E1500008E15 +00008E1500008F15000090130000911000028D0600118A0006188D00121690 +001E1594002B1498003D149A0052139A0067129B007C129C0093109C00AE0C +9A00CC089800F2059602FF009602FF009602FF009602FF009602FF009602FF +009602FF009602FF009602FF009602FF008D1300008D1400008E1500008E15 +00008E1600008E1600008F1600008F17000091140000921200018F0800108B +0004198E00101890001C179400291598003B159B0050159B0065149C007A13 +9D0092119D00AE0E9B00CC0A9800F3079703FF009704FF009704FF009704FF +009704FF009704FF009704FF009704FF009704FF009704FF008E1400008E15 +00008E1600008E1600008F1700008F1700008F180000901800009216000093 +130001910B000E8B00021B8E000E1A91001B1895002817990039179C004E17 +9C0063169D0078159E0090139F00AD109D00CC0C9900F4089805FF009805FF +009805FF009805FF009805FF009805FF009805FF009805FF009805FF009805 +FF008E1600008F1600008F1700008F1700008F180000901800009019000090 +1900009317000094150000930D000D8C02011C8F000C1C9100191A95002619 +9A0037199D004C199D0061189D0076179F008D15A000AB129E00CC0E9B00F5 +0A9906FF009906FF009906FF009906FF009906FF009906FF009906FF009906 +FF009906FF009906FF008F1700008F1800008F180000901900009019000090 +190000901A0000911A000093190000951700009510000B8F04001B8F00091E +9200171D9600241B9B00341A9E00491B9F005F1A9F007419A0008B18A200A9 +159F00CC109D04F4099A08FF009A08FF009A08FF009A08FF009A08FF009909 +FF009909FF009909FF009909FF009909FF0090180000901900009019000090 +1A0000911A0000911B0000911B0000921B0000941A00009618000097130009 +930800198F0006219300141F9600221D9C00311C9F00461DA0005C1DA00071 +1BA000881AA200A6189A00C6169000EC139212FF009114FF009015FF008F16 +FF008F16FF008E17FF008E17FF008E17FF008E17FF008E17FF00901A000091 +1A0000911B0000911B0000911C0000921C0000921D0000921D0000951C0000 +971A000099160007960C0017910204229300112296001F209C002E1FA00042 +209F00582095006A228D007D23890094248500B1237800CF20881EFF02861F +FF03851FFF038520FF038420FF038420FF038420FF038420FF038420FF0384 +20FF03911B0000911C0000921C0000921D0000921D0000921E0000921E0000 +931F0000961E0000981D00009B1900059A1000149304012394000D2597001C +23960029248E00382886004A2C7B005C2C72006E2C6C00842D65009D2D5E00 +C12B5A01FD275801FD295701FD2A5602FD2A5503FD2A5503FD2A5503FD2A55 +03FD2A5503FD2A5503FD2A921D0000921D0000921E0000921F0000931F0000 +93200000932000009420000096200000991F00009C1C00039E140012970800 +228F00072B8400123179001E3570002A396700383B5F004A3D57005F3E5200 +773E4D00903C4800AF375010FF2A4E11FF2A4D11FF2A4C11FF2B4C12FF2B4B +12FF2B4B12FF2B4B12FF2B4B12FF2B4B12FF2B921F0000931F000093200000 +9320000093210000932100009422000094220000972200009A2100009D2000 +01A119000F9112001F7A09003064020541580011474E001D4B46002B4E3E00 +3C5037005252320068503000814D2C00A248350EFD39320EFF3A2E0BFF3E2B +09FF402807FF432706FF442706FF442706FF442706FF442706FF4493210000 +93210000932200009422000094230000942300009424000094240000972400 +009B2400009A2400019223000E841F001C6D18002D510E0043370102582A00 +0F5C22001D5D1A002D5F14003F5F1200535D11006B5B11008A5A0A00EA5608 +00FA540600FB550500FB550400FB550300FC550300FC550300FC550300FC55 +0300FC55942300009423000094240000942500009425000095260000952600 +009527000099270000952B00008D2F0003842D000F762A001B6025002B451D +00402A1300550C0400660205116900092267000B3463000D4A600010685F00 +138F5B0015CD520015E14F0016E14E0017E04D0018E04D0018E04D0018E04D +0018E04D0018E04D0018E04D94250000952600009527000095270000962800 +009629000096290000972A0000903000008937000081390007763600126734 +001D5230002A3B2A003B2222004E0616015D0018115D001D225A0020345800 +234F5700297054002C934C002BC844002AE742002BE741002BE740002CE740 +002CE740002CE740002CE740002CE740002CE7409628000096290000962A00 +00972B0000972B0000982C0000962E00008C330000853B00007E400000743F +000B693E00155A3D001E473B0027313700321C30004602250254002A125100 +31234F0038384F003C534E003E6E480040903F003FC138003EEB35003FEB34 +0040EA340040EA330041EA330041EA330041EA330041EA330041EA33972B00 +00982D0000982D0000992E0000992F0000953200008B380000823D00007942 +0000704400056745000C5D4600145047001B3F4700222A44002C153D003E01 +36044B003E15470048274600503D430051554100526E3D00538D370053BB2F +0054F22B0055F32B0055F32B0056F32B0056F32A0056F32A0056F32A0056F3 +2A0056F32A993000009A3100009A3200009B33000095360000893D00007F40 +0000754300006D460000654800065C4B000A544F000F485100163851001E24 +5000280F4B0038004A07410055193D005E2B3800623E350064553100656D30 +00678C2D0069BC270069FF250069FF24006AFF24006AFF24006AFF24006AFF +24006AFF24006AFF24006AFF249C3500009C3600009D370000953C00008741 +00007B440000724500006A460000624A00015B4E0003545300054C57000A41 +5A0012315C001A1E5C002409590032005F0B3400691B2D006F2B2C00733E29 +00775626007A6E25007A8D23007CC01F0079FE1D0079FE1D0079FE1D007AFE +1C007AFE1C007AFE1C007AFE1C007AFE1C007AFE1C9E3A00009F3C00009440 +000085440000784600006E47000066480000604A0000594E0000525400004C +5B0001446000073A64000F2A670016186900200469012B00720C28007B1A23 +0080292200833F1F0089561E008D701D008E911C008DC11A0088FF150088FF +150089FF150089FF150089FF140089FF140089FF140089FF140089FF14A03F +00009443000082470000754900006B4A0000634B00005D4C0000584E000051 +5400004B5B0000456300003D690005326F000B247300121276001B01790024 +00850B1F008E181C0093271900953C16009A5415009E6F1500A3911500A1BC +150099FB0F0099FF0F0099FF0F0099FF0E0099FF0E0099FF0E0099FF0E0099 +FF0E0099FF0E93460000804A0000724B0000684C0000604E00005A50000054 +510000505300004A5A0000446300003D6B0000367300022B7A00081E80000E +0E840016038C011A00980A1700A2161400A9241100AB370E00AE4E0D00B26A +0C00BB8C0B00BCB30D00B1EC0A00AEFC0900AEFC0900AEFC0900AEFC0900AE +FC0900AEFC0900AEFC0900AEFC097E4C0000704D0000654F00005D51000057 +530000525500004D580000495A0000436300003C6C0000367500002E7E0000 +258600031B8F00060F97000D03A0001200AD070F00BB120C00C4200900CA32 +0700CB490400D3650300DA840300DFA20303E9F30102D3FA0202D3FA0202D3 +FA0202D3F90202D3F90202D3F90202D3F90202D3F9026D500000635200005A +540000545700004F5A00004A5D000046600000426300003C6D000035770000 +2D800000268A00001E95000017A0000010AC000107B9000601C9020800E00D +0600F01D0400FD2D0200FF3F0000FF5F0000FF730000FF8B0000FFA70000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20060 +55000058580000525B00004D5F000048630000446700003F6B00003C6D0000 +357700002D800000268900001E930000179D000010A700000AB2000002BF00 +0400D3050300E7130100F5220000FF300000FF4C0000FF630000FF730000FF +8A0000FFA20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200565C0000505F00004B63000046660000416A00003C6D0000 +386F0000347100002D7A0000258300001E8C0000179600000F9E000008A800 +0101B2000400C0020200D4080000E6130000F4220000FF2F0000FF480000FF +610000FF710000FF870000FF9F0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2004F60000049640000436800003E6C0000 +396F000035710000307300002C750000257D00001E860000168F0000119700 +000D9F000007A7000101B2000400BF020200D3070100E6130000F3210000FF +2E0000FF450000FF5F0000FF6F0000FF830000FF9C0000FFB00000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20047660000416A0000 +3B6D000036700000317300002C75000028770000257800001F8000001B8700 +00168F0000119700000D9F000008A7000101B1000400BF020300D2070100E5 +120000F2200000FF2D0000FF420000FF5D0000FF6E0000FF800000FF9A0000 +FFAA0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +3E6B0000396F0000337200002E750000297700002578000023790000237900 +001F7F00001B870000168E0000129600000D9E000008A7000102B1000400BE +020300D1060100E4120000F11F0000FE2C0000FF3F0000FF5B0000FF6C0000 +FF7D0000FF930000FFA30000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20036700000307300002A7600002578000023790000237900 +0023790000237900001F7F00001B870000178E0000129600000D9E000008A7 +000002B1000400BE020300D0060100E3110000F01E0000FD2B0000FF3C0000 +FF590000FF6B0000FF7A0000FF8D0000FF9F0000FFAF0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8409000084090000850A0000860A0000860B0000860B0000870C0000870C00 +00870B0000850600038200040B84000C0A850016098600200889002D078E00 +3E05900052049000670391007C01920090019000A4018F00BC009000E2008F +00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF00850A0000850A0000860B0000860B0000870C0000870C00 +00880C0000880D0000880B0000860700028300030C84000C0B8600150A8700 +200989002C088F003D06900051059100660492007B0392008F029100A40190 +00BB009000E0008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF008F00FF008F00FF00850A0000860B0000870B0000870C00 +00880C0000880D0000890D0000890E0000890C0000870800028401020C8500 +0B0C8600140B87001F0A8A002B098F003C07910050069200650693007A0493 +008F039200A3029100BB019100DF009000FF009000FF009000FF009000FF00 +9000FF009000FF009000FF009000FF009000FF009000FF00860B0000870C00 +00870C0000880D0000890D0000890E0000890E00008A0E00008A0D00008909 +00028501010D86000A0D8700130C88001E0C8B002A0B8F003B0992004F0793 +0064079400790694008E049300A3039200BA019200DD009000FF009000FF00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +00870C0000880D0000880D0000890E0000890E00008A0F00008A0F00008A0F +00008B0E00008A0B00018602010D8600080F8800120E89001D0D8C00290C90 +003A0A93004E09930063089500780796008D059500A3039300BA019200DC00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +009100FF009100FF00880D0000890E0000890E00008A0F00008A0F00008A10 +00008B1000008B1000008C0F00008B0C00018703000D870007108900110F8A +001C0E8D00280D9100390C94004D0B9500620A9600760997008C079600A205 +9400BA029300DB009200FF009200FF009200FF009200FF009200FF009200FF +009200FF009200FF009200FF009200FF00890E00008A0F00008A0F00008B10 +00008B1000008B1100008B1100008C1100008D1000008D0E00008905000C87 +000612890010118B001B108E00270F9200370E95004B0D9600600C9600750B +98008B099700A2079500BA049400DB019300FF009300FF009300FF009300FF +009300FF009300FF009300FF009300FF009300FF009300FF008A0F00008B10 +00008B1000008B1100008C1100008C1200008C1200008D1300008D1200008E +0F00008C08000B880004148A000E138C0019128E0026109300350F9600490F +97005E0E9800730D9900890C9900A1099700BB069600DB039401FF009401FF +009401FF009401FF009401FF009401FF009401FF009401FF009401FF009401 +FF008B1000008B1100008C1200008C1200008D1300008D1300008D1400008D +1400008E1300008F1100008E0A0009890102158B000C158D0018138F002412 +940033119700471198005D109900710F9A00870E9B00A00B9900BB089700DB +049501FF009501FF009501FF009501FF009501FF009501FF009501FF009501 +FF009501FF009501FF008C1200008C1200008D1300008D1400008D1400008E +1400008E1500008E1500008F15000090120000900D00078B0301158B000A17 +8E0016159100231495003113990045139A005A139A006F129B0085119C009E +0E9B00BB0A9900DC069602FF009502FF009303FF009204FF009105FF009006 +FF009006FF009006FF009006FF009006FF008D1300008D1400008E1400008E +1500008E1600008E1600008F1600008F1700009016000092140000920F0005 +8D0500148C0008198F0014189100201796002F159A0042169B0058159B006C +149C008213990099149300B5138B00D4108A0CFF028A0FFF008810FF008710 +FF018711FF018611FF028611FF028611FF028611FF028611FF028E1500008E +1500008E1600008F1700008F1700008F1800008F1800009018000091180000 +9316000094120003910900138D00051C8F00111B92001E1997002C189B003F +189600531B8D00641D8500751E81008A1F7F00A41F7400C01C6C00F4167812 +FF0C720DFF106E09FF126A07FF146804FF166704FF166704FF166704FF1667 +04FF168F1700008F1700008F180000901800009019000090190000901A0000 +901A0000921A00009418000096150002940C00108D01011E90000E1E93001B +1C8D00261E850034237D004526730056256C00682667007C27610094285B00 +B3275600E8245300F9245200F8265100F9265001F9274F01F9274F01F9274F +01F9274F01F9274F01F927901800009019000090190000901A0000911A0000 +911B0000911B0000911C0000931C0000951A0000971800019711000E910400 +1E870007257C00112A72001C2E680027316000333359004436520059374E00 +6F374B0088364600A7324200E9324609FF2B450BFF2A450CFF2A440CFF2A44 +0DFF2A440DFF2A440DFF2A440DFF2A440DFF2A911A0000911B0000911B0000 +911C0000921C0000921D0000921D0000921E0000941E0000961D0000981B00 +009716000C8810001B7107002C5E0105395200103F49001B43410028463B00 +384934004C4B2F00624A2D0079472A0095432800D5412E0BFC362A08FB3A27 +06FA3D2404F93F2203F9412203F9412203F9412203F9412203F941921C0000 +921D0000921D0000921E0000921E0000931F0000931F000093200000942000 +00971F0000912000018920000B7B1C0019651600294B0C003D3301024F2800 +0E5520001C5718002A5912003B590F004F570F0065560F0080540A00C35307 +00F24E0500F24F0400F24F0300F24F0200F2500200F2500200F2500200F250 +0200F250921E0000931F000093200000932000009321000093210000932200 +0094220000952300008C260000852A00027C29000D6E26001959220028401B +003B2711004F0B04005F0205106200092161000B325C000D47590010635800 +1384540015B34D0015DC480016DC470017DB470017DB460018DB460018DB46 +0018DB460018DB460018DB4693210000932100009422000094230000942300 +00942400009424000091260000882B000082310000793300066F310011602F +001C4C2C002736270036202000480515015600171157001B2153001E325100 +2149510026684E00298545002AB03F0029E03C002AE13B002AE13A002BE23A +002BE23A002BE239002BE239002BE239002BE2399423000094240000942500 +009425000095260000952700008F2A0000852F00007E350000773B00006D39 +000A623800155338001D413700232C33002C192C00400223034D0028134A00 +2E23470035364800394D47003B6742003D8439003CAC33003CE82F003DE82E +003DE82E003EE82D003EE72D003EE72D003EE72D003EE72D003EE72D952600 +00952700009628000096290000962A00008E2E0000843500007B390000733D +00006B3F0004623F000D574000134A4200183941001E263F00281238003901 +330544003B153F0044263E004C3B3B004D5039004E6736004F8332004FA92C +0050EA250050EB250051EC250051ED250052EE240052EE240052EE240052EE +240052EE24972A0000972B0000982C0000982D00008D330000833A0000783D +0000703F00006841000060430005584600094E49000D434C0013334C001A21 +4A00240C4500340046083A0051193600592A31005D3C2E0060512A0061682A +006282290064A9240063FF200064FF200064FF200065FF200065FF1F0065FF +1F0065FF1F0065FF1F0065FF1F992F0000993000009A3100008D380000813E +0000754100006C420000654300005E460001574A0001504E0003475300073C +55000F2C5600171A5600210653002F005A0C2E00641B2900692927006D3B25 +00725221007569200075831F0076A91C0074F4190074FF180074FF180075FF +180075FF180075FF180075FF180075FF180075FF189B3400009C3600008D3D +00007E4200007244000069450000614600005B480000554A00004F50000048 +560000405B0004345E000C256100141461001E01620129006C0D2300741A1F +0079281E007D3B1B0082521900876B18008785180088AC160084EC120084FF +100084FF100084FF100085FF100085FF100085FF100085FF100085FF109E3A +00008B4100007C4500006F470000664800005E490000584B0000534D00004E +50000047570000405E0000386400032D68000A1E6C00110E6E001A00730320 +007E0D1B00861917008B2715008E391200924F100095681000998510009CAC +100096E10C0093FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094 +FF0A0094FF0A8A450000794800006C490000634B00005B4C0000554E000050 +5000004B530000465700003F5E000039660000306D0002257200071877000E +097C001500840317008F0D130099170F009E250C00A0350900A24A0700A664 +0700AC830600B0A30500A9D00500A5FB0500A5FB0400A5FB0400A5FB0400A5 +FB0400A5FB0400A5FB0400A5FB04764A0000694C0000604E00005850000052 +5200004D55000048580000445B00003F5F000038670000306F000029770000 +1F7E00041385000A078C000F0095030F00A20B0B00AD150700B5220500B731 +0200B7460000C0600000C67F0000CA990000C8C80000BDF20000BDF20000BE +F20000BEF30000BEF30000BEF30000BEF30000BEF300674F00005D51000056 +530000505600004A5A0000455D0000416100003D6400003869000030710000 +297A0000218300001A8C000010950003069C000800A8020800B9080400C912 +0100D51F0000E52D0000FC3F0000F55B0000F7710000F88A0000FBAA0000F2 +DC0000F3DA0000F3D80000F4D60000F4D60000F4D60000F4D60000F4D6005B +540000535800004D5C000048600000436400003E680000396B0000356E0000 +30730000297D0000228700001A900000139900000BA2000004AB000300B801 +0400C7040100DE0C0000EC1A0000FB280000FF360000FF570000FF6C0000FF +7F0000FF9C0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200515D00004B62000045670000406A00003B6E000036700000 +327300002E75000029780000218100001A8A0000149200000F9A00000BA200 +0005AB000200B7010400C7040100DD0C0000EB190000FA270000FF340000FF +550000FF6B0000FF7D0000FF990000FFAE0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20049640000436800003D6C0000386F0000 +337200002E7400002A76000026780000227B00001E820000198A0000159200 +00109A00000BA2000005AB000200B7000400C6030200DC0B0000EB190000F9 +260000FF330000FF530000FF690000FF790000FF930000FFA80000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200416A00003B6E0000 +357100002F7400002A760000267800002379000023790000227B00001E8200 +00198A000015910000109900000BA2000005AB000201B6000400C5030200DB +0B0000EA180000F8260000FF320000FF510000FF670000FF760000FF8D0000 +FFA20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +386F0000327300002C75000027770000237900002379000023790000237900 +00227A00001E8200001989000015910000109900000BA1000005AA000201B6 +000400C4030200D90A0000E9170000F7250000FF310000FF4F0000FF650000 +FF730000FF880000FF9E0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002F74000029770000237800002379000023790000237900 +002379000023790000227A00001E8200001989000015910000109900000BA1 +000006AA000201B5000400C3030200D80A0000E9160000F6240000FF300000 +FF4C0000FF620000FF700000FF840000FF9C0000FFAB0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<7A0400007B0400007C0400007C0500007D0500007E0600007F0600007F0600 +00800700007D0300007C0005047E000C037F00150380001E02810029028600 +390089004C008A0061008B0075008C0089008B009B008A00B0008A00D0008A +00FF008900FF008900FF008900FF008900FF008900FF008900FF008900FF00 +8900FF008900FF007B0400007C0500007D0500007E0600007E0600007F0600 +008007000081070000810700007E0400007D0004057F000C04800014038100 +1D0382002902870038008A004B008B0060008C0074008D0088008C009A008B +00B0008B00CF008B00FF008A00FF008A00FF008A00FF008A00FF008A00FF00 +8A00FF008A00FF008A00FF008A00FF007C0500007D0500007E0600007F0600 +008007000081070000810800008208000083080000800500007D0003068000 +0B058100130481001D0483002803880037018B004A018B005F018D0074008E +0087008D009A008C00AF008C00CE008C00FF008B00FF008B00FF008B00FF00 +8B00FF008B00FF008B00FF008B00FF008B00FF008B00FF007E0600007F0600 +00800700008107000082080000820800008308000084090000840900008106 +00007E00020781000A068200130582001C0584002704880036028C0049018C +005E018E0073018E0087008E0099008D00AF008D00CE008D00FF008C00FF00 +8C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF +0080070000810700008208000082080000830900008409000084090000850A +0000850A0000830700007F000108810009088200120783001B068500260689 +0035038D0048028E005D028F0072018F0086008F0099008E00AE008E00CD00 +8E00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF +008D00FF008D00FF0081080000820800008309000084090000850A0000850A +0000860A0000860B0000860B00008508000081010009820008098300110884 +001A08860025078A0034058E0046038F005C02900070019100850090009800 +8F00AE008F00CC008F00FF008E00FF008E00FF008E00FF008E00FF008E00FF +008E00FF008E00FF008E00FF008E00FF008309000084090000850A0000850A +0000860B0000860B0000870C0000870C0000880C0000870A00008303000883 +00060B8400100A85001909870024088B0033078F00450490005A0491006F03 +92008401910098019000AD019000CA009000FF008F00FF008F00FF008F00FF +008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00850A0000860A +0000860B0000870B0000870C0000880C0000880D0000890D0000890E000089 +0B0000860500078400050D85000E0C8600180B8800230A8C00310990004306 +9100590692006D0593008204930097039100AD029100C9009100FE009000FF +009000FF009000FF009000FF009000FF009000FF009000FF009000FF009000 +FF00860B0000870C0000880C0000880D0000890D0000890E0000890E00008A +0F00008A0F00008A0D0000880700058500030E86000C0E8800170D8900220C +8D002F0B910042099300570893006C0795008106950096049300AC029200C7 +009200FA009100FF009100FF009100FF009100FF009100FF009100FF009100 +FF009100FF009100FF00880D0000890D0000890E00008A0E00008A0F00008A +0F00008A1000008B1000008B1000008C0E00008A0A00048702020F87000B10 +8900150F8B00200E8E002E0D9200400B9400550A95006A0A96007F08960095 +069500AC049400C7019100F4008D00FF008B01FF008A01FF008902FF008902 +FF008803FF008803FF008803FF008803FF00890E00008A0F00008A0F00008B +1000008B1000008B1100008C1100008C1200008C1200008D1000008D0C0003 +89030110880008128A0013118C001F108F002C0F94003D0E9600530D960067 +0C93007A0E8E008E0F8A00A50F8300BF0C7E00E609810AFF01800AFF017E0A +FF027D0AFF037C0AFF037C0AFF037C0AFF037C0AFF037C0AFF038B1000008B +1000008B1100008C1100008C1200008C1200008D1300008D1300008D140000 +8F1200008F0F00018B06000F890006158B0011148D001D139100291193003A +128C004C1684005E177D006F18790081197600981A6F00B2186800DB136A05 +FE0F6703FE116402FD126201FD136100FD136000FC146000FC146000FC1460 +00FC148C1200008C1200008D1300008D1300008D1400008D1400008E150000 +8E1500008E16000090140000911100008F09000C890003188D000E168C001A +16840024197C002F1D74003F206C004F1F65006120610075225D008B235700 +A7225300D0215000F5204E00F4214D00F4224C00F5224B00F5234B00F5234B +00F5234B00F5234B00F5238D1300008D1400008E1500008E1500008E160000 +8F1600008F1700008F1700008F1800009116000092140000920D000A8C0301 +187E000720740010246A001A286100232B59002E2C52003D2E4D0052304900 +68314700803044009E2E3F00C82D3F04FD2A3E05FD2A3D05FD2A3C06FE2A3C +06FE2A3C06FE2A3C06FE2A3C06FE2A3C06FE2A8E1500008E1600008F170000 +8F1700008F180000901800009019000090190000901A000092190000941700 +008E1400087F0E001769060028580005324D000F384300193C3C00253F3600 +34412F0047432B005C432900714127008B3E2400B33C2807F6342504F33722 +03F1392002EF3B1E01EE3C1D00ED3D1D00ED3D1D00ED3D1D00ED3D8F180000 +901800009019000090190000901A0000911A0000911B0000911B0000911C00 +00931B00008A1D0000801C0009731900165E130025460A0036300102472500 +0D4D1E001A5016002852100038530C004A510B005F4F0B00774E0800AA5106 +00E8470400E7480300E6480200E5480201E4480202E3480202E3480202E348 +0202E348901A0000911A0000911B0000911C0000921C0000921D0000921D00 +00921E00008D1F0000852200007E2600017425000C66230018521F00253C18 +0035251000490A04005801050F5B0009205A000B3055000D435200105D5000 +137B4C0015A0460014D8410015D8400016D83F0017D83F0017D93E0018D93E +0018D93E0018D93E0018D93E921C0000921D0000921D0000921E0000931F00 +00931F0000932000008B230000822700007B2C0000732E0005682D0010592B +001B46280023322400301D1D0042041301500016114F001A214C001D314A00 +2045490024604700277B3E00299F390027E1360028E2350029E2340029E234 +002AE233002AE233002AE233002AE233002AE233931F000093200000932000 +00932100009322000094220000882600007F2C000078300000703500006734 +000A5B3300144D33001A3C32001F292F00281729003A012103460026134200 +2B234000313440003649400037603B00387A3300399C2E0039DE29003AE729 +003BE728003BE628003BE627003CE627003CE627003CE627003CE627932200 +0094230000942300009424000094250000872B00007E300000753500006D38 +0000653A00035C3A000C513C0012453D0015353D001A233A00231034003400 +30063D00381639004026360047383300494B31004A612F004B7A2C004B9B28 +004CD020004DE41F004DE51F004EE61F004EE61E004EE71E004EE71E004EE7 +1E004EE71E94250000952600009527000093280000862F00007C360000723A +00006A3C0000633D00005B3F0003534200074A45000A3F47000F2E4700161D +4500210A3F002F00420933004C192F0053282B00583928005C4D23005D6323 +005E7A24005E9A22005FD81B0260FF190260FF190260FF190161FF190161FF +190161FF190161FF190161FF1996290000972A0000932D0000853500007A3B +00006F3D0000663F00005F41000059420000534600004C4A0000444F000338 +50000B28510014174F001E044D012B00550D29005E1B240063282300673820 +006C4E1B0070651B00707C1A00709A180070D2140070FD130070FD130070FD +130071FD130071FD130071FD130071FD130071FD13982E000094320000853B +0000773F00006C410000634200005C44000056450000514700004B4C000044 +5100003C57000130590009215A0012105B001C005C032400660F1F006E1B1B +0073271A00763817007C4D140081661300827D1200829C110081CF0E0080FF +0C0080FF0B0080FF0B0080FF0B0081FF0B0081FF0B0081FF0B0081FF0B9537 +0000833F000075420000694400006046000059470000534900004E4B00004A +4D0000435200003C590000345E0001286200081A65001009670019006C051B +00770F16007F1A13008427100087370D008A4A0B008E620A00917C0900969C +0A0092CA08008FFF05008FFF050090FF040090FF040090FF040090FF040090 +FF040090FF048243000072460000664700005D490000564B0000504D00004B +50000046520000425400003B5A0000346100002B670001206C00071370000E +04740015007D061300880F0E0090190A009625070098340400994602009C5E +0100A27B0100A7980000A3BF01009EFD01009EFD01009EFD01009EFD00009E +FD00009EFD00009EFD00009EFD0070490000634A00005A4C0000534F00004D +51000048540000435700003E5A00003A5D0000336300002B6A000024710000 +197700050D7C000B0183000F008D070B00980E0600A2170200A8230000AA31 +0000AB430000B15B0000B7780000BC930000BAB60000AEF50000AEF80000AE +F80000AEF80000AEF80000AEF80000AEF80000AEF800614D00005850000051 +5300004A560000455A0000405D00003B60000036630000326600002C6C0000 +247400001C7C000013830003088B000700920109009C060600A80A0300B411 +0100BF1B0000C6290000CA3A0000D2520000D86C0000DC870000E0A50000D9 +F30000D1F70000D1F70000D1F70000D2F80000D2F80000D2F80000D2F80055 +5400004E580000485C0000426000003D64000038680000336B00002E6E0000 +2B700000247700001D80000017880000129100000D99000007A1000201AC00 +0500BB030300CE070100E3120000F2200000FF2E0000FF480000FF630000FF +740000FF8F0000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2004C5D000046620000406700003A6C00003570000030740000 +2B7600002777000023780000207E00001C850000178D0000139500000E9D00 +0009A5000002AF000400BC010300CF060100E3110000F11F0000FF2D0000FF +440000FF600000FF720000FF8A0000FFA40000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200446800003D6C00003770000031730000 +2C75000027770000237900002379000023790000207D00001C850000178D00 +00139500000E9C000009A5000003AF000300BC010300CE050100E2100000F0 +1E0000FE2C0000FF410000FF5E0000FF6F0000FF860000FF9F0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2003B6E000034710000 +2E740000287700002378000023790000237900002379000023790000207D00 +001C850000188C0000139400000E9C000009A5000003AF000300BB010300CD +050100E2100000EF1E0000FD2B0000FF3D0000FF5C0000FF6E0000FF820000 +FF9D0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +317300002B7600002578000023790000237900002379000023790000237900 +0023790000217D00001C850000188C0000139400000E9C00000AA5000003AE +000300BB010300CC050100E10F0000EE1D0000FC2A0000FF3A0000FF590000 +FF6C0000FF7E0000FF9A0000FFAC0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002877000023790000237900002379000023790000237900 +00237900002379000023790000217D00001C840000188C0000139400000E9C +00000AA4000003AE000300BA010300CB050100E00E0000ED1C0000FB290000 +FF370000FF560000FF6B0000FF7B0000FF920000FFA50000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<72000000720000007300000073000000740100007501000075010000760100 +0076020000760100007600050177000C007800140079001C007A0026007E00 +3400820045008200590083006C0085007F00850091008400A4008400BD0084 +00F1008300FF008300FF008300FF008300FF008300FF008300FF008300FF00 +8300FF008300FF007300000073000000740000007501000075010000760200 +00760200007702000078020000770100007700040179000B00790013007A00 +1B007B0026007E003300830045008300590084006C0086007F008600910085 +00A4008400BD008500F0008400FF008400FF008400FF008400FF008400FF00 +8400FF008400FF008400FF008400FF00740000007401000075010000760200 +00770200007702000078030000780300007903000078020000780004017A00 +0B007B0012007B001B007C0025007F003200840044008500580085006B0087 +007F00870091008600A4008500BD008600ED008500FF008500FF008500FF00 +8500FF008500FF008500FF008500FF008500FF008500FF0075010000760100 +0077020000770200007803000079030000790300007A0400007A0400007A03 +0000790003027B000A017C0012007C001A017D002401800031008500430086 +00570087006B0088007E00880091008700A4008600BD008700ED008600FF00 +8600FF008600FF008600FF008600FF008600FF008600FF008600FF008600FF +00770200007702000078030000790300007A0300007A0400007B0400007B04 +00007C0500007B040000790002037C0009027D0011017D0019017E00230181 +003000860042008700560088006A0089007E00890091008800A4008800BC00 +8900EB008700FF008700FF008700FF008700FF008700FF008700FF008700FF +008700FF008700FF0078030000790300007A0400007B0400007B0400007C05 +00007D0500007D0500007E0600007E0500007A0001047D0008037E0010027E +0019027F00220282002F008700400089005500890069008B007D008B009000 +8A00A4008900BC008A00EB008900FF008900FF008900FF008900FF008900FF +008900FF008900FF008900FF008900FF007A0400007B0400007C0500007D05 +00007D0500007E0600007F0600008007000080070000800600007C0101047D +0007047F000F03800018038100220283002E0189003F008A0054008B006800 +8C007D008C0090008B00A3008A00BC008B00E9008A00FF008A00FF008A00FF +008A00FF008A00FF008A00FF008A00FF008A00FF008A00FF007C0500007D05 +00007E0600007F060000800700008007000081070000820800008308000082 +0800007F0300037E00060680000E05810017048200200484002D038A003D01 +8C0052018C0067018D007B008E008F008D00A2008C00BB008C00E6008B00FF +008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00 +FF007E0600007F070000800700008108000082080000830800008409000084 +090000850A000084090000810500027F00040882000C078200150683001F06 +86002B058B003C038D0050028E0065018F007A008F008E008E00A2008D00BA +008E00E3008C00FF008C00FF008C00FF008D00FF008D00FF008D00FF008D00 +FF008D00FF008D00FF00810700008208000083080000840900008409000085 +0A0000850A0000860B0000860B0000870B0000840700018101030A83000B09 +8400140885001E0787002A078C003A048F004E038F0064029000790091008D +009000A1008B00B6008800DC008500FF008300FF008100FF008000FF008000 +FF007F00FF007F00FF007F00FF007F00FF008409000085090000850A000086 +0B0000860B0000870C0000870C0000880C0000880D0000880C000087090001 +8301010B8400090B8500120A86001D0A890028098D00380790004C058F0061 +06890072098500840A8000970A7B00AD097700CC067905FF007705FF027505 +FF027405FF037405FF037305FF047305FF047305FF047305FF04860B000086 +0B0000870C0000880C0000880D0000890D0000890E0000890E00008A0F0000 +8A0E00008A0B00008603000B8500060E8700100D88001B0C8A00270B880034 +0D820044107B0056127500671470007A156D008E156800A6136400C8106200 +FD0D6000FD0E5F00FC0F5E00FC0F5D00FC105C00FB105C00FB105C00FB105C +00FB10880C0000880D0000890E0000890E00008A0F00008A0F00008A100000 +8B1000008B1000008C1000008C0D0000890700098600041188000E10830017 +127A00211572002B186B00381A6400471B5E005A1C5A006E1D5700831E5300 +9D1E4F00BF1D4D00F11B4B00F11C4A00F11D4800F11D4800F11E4700F11E47 +00F11E4700F11E4700F11E8A0E00008A0F00008A1000008B1000008B110000 +8C1100008C1200008C1200008C1200008D1200008E1000008D0A0006830201 +147700071B6D000F1F620018225900212551002A274B00372947004B2B4400 +612B4100782B400093293C00B6283A01F9273902FA273802FB283702FB2836 +02FC283602FD293602FD293602FD293602FD298B1000008B1100008C120000 +8C1200008D1300008D1300008D1400008D1400008E1500008E150000901200 +0085120005760D0014610400235200052B47000E303E001835360023383000 +313B2B00423C2700563C25006A3B230082392100A2372100E8341F00E9351D +00E7351C00E5361B00E4361A00E4361A00E4361A00E4361A00E4368D130000 +8D1300008D1400008E1500008E1500008E1600008E1600008F1700008F1700 +008B180000821A0000791A00066A17001357110021420900302E01033F2300 +0C461B0019481400264B0E00354C0A00454B08005949080071480600954C05 +00CF420300D8400201D7400201D6400202D6400203D63F0203D63F0203D63F +0203D63F8E1500008E1600008F1700008F1700008F18000090180000901900 +0090190000881C00007E200000772300006D22000A5F2000154C1C00213816 +002F220E00410903005001040F5300081F52000B2E4E000D404A0010584700 +1372440015923F0014C73A0015D7390016D7380016D7380017D8370017D837 +0017D8370017D8370017D8378F1800009018000090190000901A0000911A00 +00911B0000911B0000851F00007C240000742800006C2A00036129000F5227 +0018412500202E21002B1B1B003B031201490015104700192144001C304200 +1E42410021594000247237002792330027C8310027E02F0027E12E0028E22E +0028E22E0028E32D0029E32D0029E32D0029E32D911A0000911B0000911C00 +00921C0000921D00008F1E00008223000079280000712C00006A3000006130 +0009552F0013472F0017372E001B272B002415250033011F033F0024133B00 +292338002E32370032453700335A330035712D003690290038C1250037E623 +0038E5230038E4220039E3220039E3210039E2210039E2210039E221921D00 +00921E0000931F0000931F00008C22000080280000772D00006E3100006734 +0000603600025636000B4C38000F4039001231390016203600200E2F002E00 +2D063600351632003C252F0041352C0044472900465C280047722700489024 +0049BA1C0049E31A004AE319004AE419004BE419004BE519004BE519004BE5 +19004BE5199321000093210000942200008B2500007F2D0000753200006C36 +0000643800005D3A0001573C00014F3F0003474200053B43000B2B4200131A +40001D083A002B003F0B2D00481929004D2726005236230056491E00595E1D +005A731F005A901E005BBC17005BF815005BF815005CF915005CF914005CF9 +14005DF914005DF914005DF91494240000942500008A2A00007E3200007237 +0000693A0000603C0001593E0000543F00004F41000048460000404A000034 +4C0007244C0011134A001B0247022700510E2300581A1F005C261E0061351B +00664917006A6015006C7615006C8F14006CB910006BF80E006CF80E006CF7 +0D006CF70D006DF70D006DF70D006DF70D006DF70D962800008A2F00007D37 +0000703C0000663E00005D40000056410000514300004C450000474800003F +4D0000375200002C5400061D55000F0C5400190057041F00610F1A00681B17 +006C2616007035130075490F007A600D007C760C007D8F0B007DB809007CFE +06007DFE06007DFE06007DFE05007DFE05007DFE05007DFE05007DFE058B34 +00007C3D00006E3F0000634100005A430000534500004E470000494A000044 +4C00003F4F0000375400002F590000245C0006165E000E0660001700660716 +0071101100791B0E007E270B008134080084460500865C04008A7403008F90 +02008EB702008BFE01008BFF01008CFF00008CFF00008CFF00008CFF00008C +FF00008CFF00794100006B4300006045000058470000514900004B4C000046 +4F0000405100003C530000375600002E5C0000276100001C6500050E69000C +016D01120076080E0081110900891B05008E26010090320000924300009359 +0000977100009D8F00009CB1000096EE000096FF000096FF000096FF000096 +FF000096FF000096FF000096FF00694600005D480000554B00004E4E000048 +510000425400003D57000038590000335B00002E5E0000276400001F6A0000 +146F00050774000B007B030B00840808008E0F0500961702009B2000009E2C +00009F3C0000A2520000A66C0000AD8A0000AEAB0000A5DD0000A3FB0000A3 +FB0000A3FB0000A3FB0000A3FB0000A3FB0000A3FB005B4C0000524F00004B +520000455600003F5A0000395D0000346000002F6200002B65000027670000 +1F6E000018750000117A0004088000080086000B0090050800990A0500A410 +0200AC190000B3250000B5340000B8490000C0640000C5820000C89D0000C3 +D30000B9F50000B9F50000BAF50000BAF50000BAF50000BAF50000BAF50050 +53000049570000425C00003C60000036640000316700002C6A0000276D0000 +246F0000227000001E770000197F0000148600000E8E000207940005019C01 +0700A8040400B7080200C7100000D41C0000E32A0000FB3B0000F9570000F9 +6F0000FA890000FEAD0000F7CE0000F9CC0000F9CA0000FAC80000FAC70000 +FAC70000FAC700475D00004063000039680000336C00002E6F000029730000 +247500002377000023780000237900001F8000001A88000016900000119800 +000CA0000006A9000101B4000400C2030200D80A0000E9170000F8260000FF +330000FF540000FF6B0000FF7F0000FF9D0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2003E6B000037700000307300002A760000 +2578000023790000237900002379000023790000237900001F8000001A8800 +00168F0000119800000CA0000007A9000101B4000400C2020200D7090000E9 +160000F7250000FF320000FF510000FF690000FF7B0000FF9A0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200347100002D750000 +27770000237900002379000023790000237900002379000023790000237900 +001F8000001A870000168F0000119700000C9F000007A8000101B3000400C1 +020200D6090000E8150000F6240000FF310000FF4F0000FF670000FF780000 +FF930000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +2A760000247800002379000023790000237900002379000023790000237900 +0023790000237900001F8000001B870000168F0000119700000C9F000007A8 +000101B2000400C0020200D4080000E7140000F5220000FF300000FF4C0000 +FF640000FF740000FF8C0000FFA40000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +00237900002379000023790000237900001F8000001B870000168F00001197 +00000D9F000007A7000101B2000400BF020200D3080000E6130000F4210000 +FF2F0000FF480000FF610000FF710000FF860000FF9E0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<6B0003006B0002006C0002006C0002006D0002006D0001006E0001006E0001 +006E0001006F0001007000050070000B007100130072001B00730024007400 +300078003E007A0051007C0063007D0075007E0087007D0099007C00AD007C +00CD007C00FB007C00FB007C00FB007C00FB007C00FB007C00FB007C00FB00 +7C00FB007C00FB006C0002006C0002006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100040071000B00720012007300 +1A007400230075002F0079003E007C0050007D0062007E0075007F0088007E +0099007D00AD007D00CD007D00FD007D00FD007D00FD007D00FD007E00FD00 +7E00FE007E00FE007E00FE007E00FE006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100010071000100720004007200 +0A0073001100740019007500220077002E007B003D007D0050007E00620080 +00750081008800800099007F00AD007F00CD007F00FF007F00FF007F00FF00 +7F00FF007F00FF007F00FF007F00FF007F00FF007F00FF006E0001006E0001 +006F0001007000010070000100710001007100010072000000720000007200 +0000730003007400090074001100750019007600220078002D007C003C007E +004F007F0062008100740082008800810099008000AD008000CE008000FF00 +8000FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF +006F0001007000010070000100710001007200000072000000730000007300 +00007300000074000000740002007500090076001000770018007800210079 +002C007D003B0080004E00810061008200740083008800820099008100AD00 +8100CE008100FF008100FF008100FF008100FF008100FF008100FF008100FF +008100FF008100FF0071000100710001007200000072000000730000007400 +000074010000750100007501000076010000750001017600080077000F0078 +001700790020007A002B007F003A0081004E00820061008300740085008700 +840099008300AD008300CE008200FF008300FF008300FF008300FF008300FF +008300FF008300FF008300FF008300FF007200000073000000730000007401 +00007501000075010000760200007702000077020000780200007601010178 +00070179000E007A0016007A001F007C002A008000390083004C0084006000 +8500730086008700850099008400AD008500CE008400FF008400FF008400FF +008400FF008400FF008400FF008400FF008400FF008400FF00740000007501 +0000750100007602000077020000770200007803000079030000790300007A +03000078010101790006017B000D007B0015007C001E007D00290082003800 +85004B0085005F008700730088008600870099008600AD008600CE008500FF +008600FF008600FF008600FF008600FF008600FF008600FF008600FF008600 +FF0076010000770200007702000078030000790300007A0300007A0400007B +0400007B0400007C0500007A0300007A0004027C000C017D0014017D001D01 +7F002801830036008700490087005E008800720089008600890098008800AD +008800CD008700FF008700FF008600FF008500FF008400FF008400FF008300 +FF008300FF008300FF0078030000790300007A0400007B0400007B0400007C +0500007D0500007E0600007E0600007F0600007D0400007B0003047E000A03 +7E0013027F001C0280002602840035008900480089005D008A0071008B0085 +00860095008200A8007F00C4007C00FE007A00FF007800FF007700FF007700 +FF007600FF007600FF007600FF007600FF007B0400007B0400007C0500007D +0500007E0600007F0600008007000081070000810700008208000080060000 +7D0001067F0009058000110481001A0382002503860033018B004601850058 +02800069057C007B0677008D067300A1056F00B9046F01EB026F02FF016E02 +FF016D02FF026C02FF026C02FF026B02FF036B02FF036B02FF037E0600007F +06000080070000810700008108000082080000830800008409000084090000 +850A0000840800007F020006800007088200100683001906830023067D002E +0878003D0B72004E0D6C005F0F680072116500861161009B105E00B70D5E00 +ED0A5E02FC095C02FB0A5A01F90B5900F80C5800F80C5700F70D5700F70D57 +00F70D8107000082080000830800008409000085090000850A0000860A0000 +860B0000860B0000870C0000860A0000830500048200050A83000D0A7A0015 +0D71001E1069002713620032165C004017570052185400671A51007C1A4F00 +931A4C00B1194A00E0174800ED174600EC184500EC194400EC194400EC1A43 +00EC1A4300EC1A4300EC1A84090000850A0000860A0000860B0000870C0000 +870C0000880C0000880D0000890D0000890E0000890C0000870800027B0201 +0F6F00061665000E1A5A00161D51001F214A00272444003326400045273E00 +5B273C0070263A0089253800A8243600DA233500F3243300F4243200F52532 +00F5253100F6253100F6253000F5253000F525870B0000870C0000880D0000 +890D0000890E00008A0E00008A0F00008A0F00008A1000008B100000881000 +007D1000016E0B00105A03001F4D00062542000E2A3800162F310021322B00 +2D3426003D3523005035210064341F0079331D0095311D00C32F1D00DF2E1B +00DD2E1A00DC2F1900DC2F1800DB2F1700DB2F1700DB2F1700DB2F890E0000 +8A0E00008A0F00008A1000008B1000008B1100008B1100008C1200008C1200 +00841500007B1700007118000363150010510F001D3D07002B2B0103382000 +0C3E19001741120024440C003245070040450600544205016A400301864102 +00B4400200CF380201D0380202D0370203D1370203D1370104D1360104D136 +0104D1368B1000008B1100008C1200008C1200008D1300008D1300008D1400 +008C14000081190000781C0000701F0000661F0007581D00124719001D3413 +0029200D00390803004901040E4C00081E49000B2D45000D3D420010523E00 +126A3B001587370015B2340014D4320015D4310016D4310016D4300017D430 +0017D4300017D4300017D4308D1300008D1400008D1400008E1500008E1600 +008E1600008A1800007E1C0000752100006D240000662700015A26000C4D24 +00143D22001C2B1D002619180033031101410014103F0018203C001B2F3900 +1D3F38001F53360022692F0024862C0028B42C0025E02A0025E1290026E229 +0026E3280027E3280027E4280027E4280027E4288E1600008F1700008F1700 +008F18000090180000871B00007B200000722500006A290000632C00005B2C +0006502C000F432C0012342A0018242700201322002D011D04380022133400 +272231002B312F002E412D002F542900326A27003386240036AE220034E91F +0034E81E0035E61E0036E61D0036E51D0036E51D0036E41C0036E41C901900 +00901A0000911A0000911B0000851F00007A250000702A0000672D00006030 +000159310002513200064734000A3C35000D2E3400131E32001C0D2B002900 +2B072F0032162B00382428003C3325003F43230042572100446C2000458620 +0046AB190046E2150047E3140048E3140048E3140048E4140049E4140049E4 +140049E414921C0000921D0000921D000084230000782900006D2E00006532 +00005D34000256360001513800004B3B0000433E0000373F0007283E000F18 +3B001906360026003C0B270044192300482520004D331D0051451900555917 +00566E180056861A0058AB130057F20F0058F30F0058F30E0059F30E0059F3 +0E0059F30E0059F30E0059F30E932000009320000082270000762E00006B33 +0000623600015A380001533A00004E3C0000493E0000434100003B45000030 +4800032147000D1144001801430222004C0E1E00531A1A00572519005C3316 +0061451200655A100067700F0068880E0068A90B0067E8080068EE070068EC +070068EB070068EA070068E9060068E9060068E90692240000822C00007534 +0000693800005F3A0001573D0000503F00004B41000046430000414500003B +480000324C0000284F0003194F000C094E00170052061A005B101500621A11 +00672510006B330D006F440A00735A0800767005007888040079A9030078DD +010079FB010079FB010079FC010079FC01007AFD00007AFD00007AFD008133 +000073390000673C00005C3E0000544100004E43000048450000434800003D +4A0000384C0000324F000029530000205700031258000C035A011400610811 +006B110C00731C0700792704007B3301007D4100007E550100816C00008586 +000087A7000084E3000084FF000084FF000084FF000084FF000084FF000084 +FF000084FF00703E0000644000005A420000524500004B480000454B00003F +4D00003A500000345100003053000029560000225B0000175F00030A62000B +0066030E006F0A0A00771107007F1A040084230200862E0000883C00008950 +00008B6700009182000093A200008FD200008EFF00008EFF00008EFF00008E +FF00008EFF00008EFF00008EFF0061440000574600004F490000484D000042 +5000003C53000036550000305800002C5A0000275B0000225F00001A640000 +12680004086B00090070010D0078070A00810D070089150400901E02009329 +000094370000964A0000986100009E7D0000A39E00009DC6000099FF000099 +FF000099FF00009AFF00009AFF00009AFF00009AFF00544B00004D4E000046 +5200003F55000038590000325B00002D5E0000286000002462000020640000 +1F6700001A6C0000147100020C760007027B000C0083040A008C0907009510 +04009E180100A3220000A62F0000A6420000AC590000B1770000B8940000B4 +BE0000A9F80000AAF80000AAF80000AAF80000AAF80000AAF80000AAF8004A +530000435700003C5B0000355F00002F6300002966000025680000216A0000 +216B0000216C0000206F00001B750000177C00001082000308890007019000 +090098040700A4090300B1100100BC190000C4260000C7370000CF4F0000D6 +6A0000DB870000DEA80000CFF50000CFF60000CFF60000CFF60000D0F60000 +D0F60000D0F600405E000039620000326700002C6B0000266E000022710000 +22720000227300002373000023740000217800001D80000018880000149000 +000F9900000AA2000004AC000300B9010400CB050100E10F0000EF1D0000FE +2C0000FF420000FF600000FF730000FF910000FFB00000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200366B0000307000002974000023770000 +237900002379000023790000237900002379000023790000227B00001D8300 +00198A0000149200000F9A00000AA3000004AC000300B9010400CA040100E0 +0E0000EE1C0000FD2B0000FF3E0000FF5E0000FF700000FF8A0000FFA80000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002C75000026770000 +23790000237900002379000023790000237900002379000023790000237900 +00227B00001D830000198A0000149200000F9A00000AA3000004AC000300B8 +010400C9040100DF0D0000ED1B0000FC290000FF3A0000FF5B0000FF6E0000 +FF850000FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +002379000023790000227B00001D830000198A0000149200000F9A00000BA2 +000004AB000300B8010400C7040100DE0C0000EC1A0000FB280000FF370000 +FF580000FF6C0000FF810000FF9D0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +0023790000237900002379000023790000227B00001E820000198A00001592 +0000109A00000BA2000005AB000200B7010400C6040100DD0C0000EB190000 +FA270000FF340000FF550000FF6B0000FF7D0000FF9A0000FFB00000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<63000600630006006400060064000500650005006600050067000500670004 +0068000400680004006800040068000B0068001200690019006A0022006A00 +2C006C003900700048007400590075006A0076007B0076008D007500A00074 +00B8007300E7007300E7007300E7007300E7007300E7007300E7007300E700 +7300E7007300E7006400050064000500650005006600050067000400670004 +00680004006900040069000400690003006A00040069000A00690011006A00 +18006B0021006C002C006E003800720048007500590076006A0077007C0077 +008D007600A0007500B8007500EB007500EB007500EB007500EC007500EC00 +7500EC007500EC007500EC007500EC00660005006600050067000400680004 +006800040069000400690003006A0003006A0003006A0003006B0003006A00 +0A006B0011006C0018006D0020006E002B006F003800730048007600590077 +006A0078007C0078008E007800A0007600B8007600EE007600F0007600F000 +7600F1007600F1007600F1007600F1007600F1007600F10068000400680004 +0069000400690003006A0003006A0003006A0003006B0003006B0002006C00 +02006C0003006C0009006D0010006E0017006F00200070002A007100370075 +00470077005900780069007A007C007A008E007900A0007800B8007800F000 +7800F4007800F4007800F5007800F5007800F5007800F5007800F5007800F5 +0069000300690003006A0003006A0003006B0003006B0002006C0002006C00 +02006C0002006D0002006D0002006E0008006E000F006F00170071001F0071 +0029007300360076004600790059007A0069007B007C007B008E007B00A000 +7A00B8007A00F2007A00F7007A00F7007A00F7007A00F7007A00F7007A00F7 +007A00F7007A00F7006A0003006B0003006B0002006C0002006C0002006D00 +02006D0001006D0001006E0001006E0001006F0001006F00070070000E0071 +00160072001E007300280075003500790046007A0058007C0069007D007C00 +7D008E007C00A1007B00B9007C00EF007B00FA007C00FA007C00FA007C00FA +007C00FA007C00FB007C00FB007C00FB006C0002006C0002006D0002006D00 +01006E0001006E0001006F0001006F0001006F000100700001007000010071 +00060072000D007200150074001D0075002700770034007B0045007C005800 +7D0069007F007C007F008F007E00A1007E00BA007E00F4007E00FE007E00FE +007E00FE007E00FE007E00FE007E00FE007E00FE007E00FE006D0001006D00 +01006E0001006F0001006F0001007000010070000100710001007100000072 +000000720001007300050073000C007400140075001C007600260079003300 +7E0044007E0057007F00690081007C0081008F008000A1007F00BA008000F4 +007F00FF007F00FF008000FF008000FF008000FF008000FF008000FF008000 +FF006F0001006F000100700001007100010071000100720000007200000073 +0000007300000074000000740000007400040075000B007600130077001B00 +780025007A0031007F004200800056008100690083007C0083008F008200A1 +008100BA008100F0007E00FE007C00FC007B00FC007A00FB007900FB007900 +FB007800FB007800FB00710001007100000072000000730000007300000074 +00000074010000750100007601000076020000760200007600030177000A00 +7800110079001A007A0023007C00300081004100820055008300680081007A +007D008B0078009B007500B1007300D5007200FC007100FC007000FC007000 +FD007000FF006F00FE006F00FE006F00FE0073000000730000007401000075 +01000076010000760200007702000078020000780300007903000079030000 +77000202790009007A0010007B0018007C0022007E002E0080003E007A004E +0076006002720071046F0083046B0096036700AC026600CD016901FF006801 +FF006701FF006601FF006602FF006602FF006502FF006502FF007601000076 +020000770200007802000078030000790300007A0400007A0400007B040000 +7C0500007C0500007A0101027B0007027C000F017D0017017900200272002A +046C0036076700450A6300560C6000690E5E007E0E5B00910D5800AB0A5800 +D4085A02FB055801F9075600F8085400F7095400F6095300F6095300F50A53 +00F50A79030000790300007A0400007B0400007C0400007C0500007D050000 +7E0600007F0600007F060000800700007D0300017C0005047A000C05710013 +0968001B0C6000241059002E135300391450004A164D005F164B0073174900 +89164700A4154600CA134500E9134300E8144200E7144100E7154000E71540 +00E6153F00E6163F00E6167C0500007C0500007D0500007E0600007F060000 +80070000810700008208000082080000830800008409000080060000730201 +0B670006115D000D155200151949001D1E420025213D0030233A0040233800 +54233600682234007F2133009A203200C01F3200E91E3000E81F2F00E81F2E +00E7202D00E7202D00E6202C00E6202C00E620800700008007000081080000 +820800008309000084090000850A0000850A0000860A0000860B00007F0D00 +00750E0000670A000C5302001A470006203D000D243300152A2C001F2E2600 +2B2F2200392F1F004A2E1D005D2E1B00712E19008A2C1900AD2A1A00D72719 +00D5281700D4281600D4281500D4291500D4291400D4291400D42984090000 +84090000850A0000860A0000860B0000870C0000870C0000880C0000870D00 +007C110000741500006A1600015C13000C4B0D001938060026280103311D00 +0B371600163A1000223C0A002F3E05003C3E03014E3C0302643902037D3701 +029E370201CE300202CE300203CE2F0104CE2F0104CE2F0105CE2F0105CE2F +0105CE2F870C0000870C0000880C0000880D0000890E0000890E00008A0F00 +00841100007915000070190000691C00005F1D0003521A000E421600193011 +00241D0B00320703004100040D4300081C40000B2B3C000D3B39000F4D3500 +12633100157B2D0016A02E0013CE2B0014CE2B0015CE2B0016CE2A0016CE2A +0017CE2A0017CE2A0017CE2A8A0E00008A0F00008A0F00008B1000008B1000 +008B11000082140000771900006D1D0000662100005F230000542300074721 +000F391E0018291A00211716002C020F013A0013103700171F33001A2D3000 +1C3C2E001E4E2B0020622600237C260026A1270023DA250024DB240024DC24 +0025DC230025DD230025DD230025DD230025DD238C1100008C1200008C1200 +008D1300008D14000080180000741D00006B220000632500005C2800005529 +00014B2900093E28000E312700142224001C12200027011B04310020132D00 +25212900282F27002B3E24002D4F21002F641F00317C1F00349E1E0032DD1B +0032E31A0033E2190033E0190034E0190034DF180034DF180034DF188E1500 +008E1500008E1600008D1700007E1C0000722200006826000060290000582C +0001522D00024D30000044310004383100092B31000F1C2E00180C28002300 +280728002F1625003523220039301E003C401C003F521A0041661900427E1A +00439D160044D1100044E10F0045E10F0045E20F0046E20F0046E20E0046E2 +0E0046E20E8F180000901800008C1A00007C21000070260000662B00005D2E +0001553000024F3200004A340000453600003E390000343B0002253A000B15 +3700150532002100390C210040181D0044241A00483117004D411400505412 +0052691100537F1300549E0F0055D5090055EF080055EF080055EF080056EF +080056EF070056EF070056EF07901C00008A1E00007B2500006E2B0000642F +00005A320002533500014C37000047390000423B00003E3C0000354000002B +4300011D42000A0E400014003F031D00480E18004E19140052241200573010 +005B410D005F550A00626B070065820600669F050064C8020063EB020064EA +020064EA010064E9010064E9010065E9010065E9017D2800007A2A00006D30 +00006134000158370001503900004A3C0000443E00003F4000003941000034 +4300002C470000234A0001164A000906490014004D07150056100F005D1A0A +006124080066310600684005006B5304006E69010071800000729C000070C2 +00006FF100006FF100006FF1000070F2000070F2000070F2000070F2006E34 +00006B3500005F380001563B00004E3E000047400000414300003B45000035 +470000304900002C4A0000244E00001B5100010E53000902540210005C090C +0063110800691A05006E230400702E0400723C0300744E0300776401007B7C +00007C9800007BC100007BFF00007BFF00007BFF00007BFF00007BFF00007B +FF00007BFF00603C00015D3D0000534000004C420000454600003E49000037 +4B0000314D00002C4F000028500000245200001C560000145900010A5B0008 +005D010F0063070C006B0E090073170500792003007C2B02007E3701007F48 +0000815E0000857700008894000087BE000085FF000085FF000086FF000086 +FF000086FF000086FF000086FF00534300005144000049480000424B00003B +4E0000345100002E5300002955000024570000205800001E5900001B5D0000 +166100010D6400070266000E006C050C00740B09007D130600841C03008826 +01008A3200008C4200008D580000917100009690000095B4000091FF000091 +FF000091FF000091FF000091FF000091FF000091FF00494C0000474D00003F +50000037540000315700002A590000255C0000205E00001F5F0000205F0000 +206000001C640000176900000F6D00050670000B0076020C007F080900880E +06009016030096200100992C00009A3B00009D510000A06B0000A78A0000A8 +AE00009FED00009FFD00009FFD00009FFD00009FFD00009FFD00009FFD003E +5500003C560000345A00002D5E000027600000226300002065000021650000 +2166000021670000216800001E6C000019720000127800030A7D0007028300 +0B008C04090095090600A00F0200A9180000AF230000B1320000B4470000BB +620000C2820000C5A00000BBDB0000B6F60000B6F60000B6F60000B6F60000 +B6F60000B6F60034600000326100002B65000024690000216B0000216C0000 +226D0000226E0000226F000022700000227000001F7600001B7D0000168500 +00108C000109930004029A000700A6030500B5070200C60D0000D4190000E3 +270000F7370000FD540000FE6E0000FF880000FFAD0000FFBD0000FFBD0000 +FFBC0000FFBC0000FFBC0000FFBC002A6D0000286E00002272000022730000 +23740000237500002377000023780000237800002379000023790000207E00 +001C860000178D0000129500000D9E000008A6000002B1000400BF020300D3 +070000E7140000F5230000FF310000FF510000FF6A0000FF7F0000FF9E0000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002379000023790000 +23790000237900002379000023790000237900002379000023790000237900 +0023790000207E00001C850000178D0000129500000D9D000009A6000002B0 +000400BE020300D2070100E6130000F4220000FF300000FF4E0000FF680000 +FF7B0000FF9B0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +00237900002379000023790000207E00001C850000178D0000139500000E9D +000009A6000002B0000400BD020300D0060100E4120000F3210000FF2E0000 +FF4A0000FF640000FF760000FF940000FFB00000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +002379000023790000237900002379000023790000207D00001C850000178D +0000139500000E9D000009A5000002AF000300BC010300CF060100E3110000 +F11F0000FF2D0000FF450000FF610000FF720000FF8C0000FFA70000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<59000900590009005A0009005B0009005B0008005C0008005D0008005D0008 +005E0008005E0008005F0007005F000A005F0011005F001800600020006100 +2A0062003500650041006B0050006F0060007000700070008200700094006D +00AA006C00CA006C00DE006D00DE006D00DE006D00DE006D00DE006D00DE00 +6D00DE006D00DE005B0009005B0009005B0008005C0008005D0008005E0008 +005E0008005F0007005F000700600007006000070060000A00600011006100 +1800610020006200290063003400670041006C005000700060007100700071 +008200710094006F00AA006D00CA006D00DE006D00DE006D00DE006D00DE00 +6E00DE006E00DE006E00DE006E00DE005D0008005D0008005D0008005E0008 +005F0007005F00070060000700610007006100070062000600620006006200 +0900620010006200170063001F006400280065003300680040006E00500071 +0060007200700072008200720094007000AA006F00C9006E00DD006E00DD00 +6E00DD006E00DD006F00DD006F00DD006F00DD006F00DD005E0007005E0007 +005F0007006000070060000700610007006200060062000600630006006300 +0600640005006400080064000F006400160065001E0066002700660032006A +0040006F004F00720060007300710074008200730094007100AA007000C900 +6F00DD007000DD007000DD007000DD007000DD007000DD007000DD007000DD +00600007006000070061000700620006006200060063000600640006006400 +05006500050065000500660005006500080065000E006600150067001D0067 +002600680032006C003F0070004F0073006000740071007500820075009400 +7300AA007200C9007100E0007100E1007100E1007100E1007100E1007100E1 +007100E1007100E10063000600630006006300060064000600650005006500 +050066000500670004006700040068000400680004006700070067000D0068 +00140069001C006A0025006B0031006E003E0072004F007400600076007100 +76008300760095007500AA007400C9007300E6007300E7007300E7007300E7 +007300E7007300E7007300E7007300E7006500050065000500650005006600 +05006700040068000400680004006900040069000300690003006A0003006A +0006006A000C006A0014006B001B006C0024006D00300070003D0074004E00 +760060007700710078008300770095007600AA007500CA007500ED007500ED +007500ED007500ED007500EE007500EE007500EE007500EE00670004006700 +0400680004006800040069000400690003006A0003006A0003006B0003006B +0002006B0002006C0005006C000B006C0013006E001A006F0023006F002F00 +72003C0076004E00780060007900710079008300790095007800AA007700CA +007700F4007700F4007700F4007700F4007800F4007800F4007800F4007800 +F40069000300690003006A0003006A0003006B0003006B0002006C0002006C +0002006C0002006D0002006D0001006E0004006E000A006F00120070001900 +7100220072002D0075003B0078004D007A005F007B0071007C0084007B0096 +007800A9007500C8007300EB007200EA007100E9007000E8006F00E7006F00 +E7006E00E8006E00E9006B0002006B0002006B0002006C0002006C0002006D +0002006D0001006E0001006E0001006F0001006F0001007000030070000900 +71001000720018007300210074002C0077003A007A004C007A005E0077006E +0073007F00700090006C00A5006A00C1006B00F3006A00FB006A00FF006900 +FF006900FF006800FF006800FF006800FF006D0001006D0001006D0001006E +0001006F0001006F0001007000010070000100710001007100010071000000 +720002007300080073000F00740017007500200077002B00720037006E0045 +006B005600690067026600790363008C026000A2005F00C2006300FF006100 +FF006100FF006000FF005F00FF005F01FF005E01FF005E01FF006F0001006F +00010070000100700001007100010072000000720000007300000073000000 +7400000074000000740001007500070076000E007600160070001D00680026 +01610032045C003E075A004D095800600A5600740C5500880A53009F075200 +C1055501FB045300F9045100F7055000F6064F00F5064F00F4064E00F3074E +00F30772000000720000007200000073000000740000007401000075010000 +75010000760200007702000077020000760100007700050170000B02670012 +055E001A095600220D50002A114B003513480044134700571345006B144400 +8013430098114200B9104200E50E4000E40F3F00E3103D00E2103D00E1113C +00E1113C00E1113B00E1117501000075010000750100007602000077020000 +770200007803000079030000790300007A0400007A040000760400006A0201 +085F00060D55000C114A00141641001B1B3A00232035002E2133003C203100 +4E1F3000611E2F00761E2E008E1D2D00AD1B2E00DC192D00DC192B00DB1A2A +00DA1A2900DA1A2900D91B2800D91B2800D91B780300007803000079030000 +790300007A0400007B0400007C0500007C0500007D0500007E060000760900 +006D0C0000600900084D0200154200061B37000C202E00132627001D292200 +282A1E00362A1B0045291900572817006A281600802815009E251800CD2116 +00CE221500CD221400CD221300CD231300CD231200CC231200CC237C050000 +7C0500007C0500007D0500007E0600007F06000080070000810700007D0900 +00730D00006B1100006313000056110008460C0014340400212501032B1B00 +0A30140015330D00203508002C360300393701014A3501035E310105742F00 +04912E0101C22A0103C9290103C9290104C8290105C8280105C8280105C828 +0006C828800700008007000081070000820800008309000084090000850900 +007B0D0000701100006815000060180000591A00004C18000A3E1400142D0F +001F1B0A002B0602003900040D3B00081B37000B2933000D3830000F492C00 +115D2900157225001691270013BD260014C8250014C8250015C8250016C824 +0016C8240016C8240016C824850A0000850A0000850A0000860B0000870B00 +00870C0000791100006E160000651A00005D1D0000561F00004F200003421F +000B351C00132618001C16140026020E013200120F2F00161E2C00192B2800 +1B3A25001C4A22001E5D1F0021731F002491200023C1210022D21F0023D31F +0023D31F0024D41E0024D41E0024D41E0024D41E880D0000880D0000890D00 +00890E000085100000771500006C1A0000621E00005A210000532400004D25 +0001462600033A2500092E24001020220018101D0021011A042A001F122600 +24202300262D1F00293B1C002B4C1A002D5F18002F7419003191190031BB16 +0030D5160031D5150031D4140032D4140032D4140032D4140032D4138B1000 +008B1000008B11000084130000751900006A1F000060230000572600005028 +00014A2A0001452B00003F2D0000352E0004282D000B1A2B00130B25001D00 +260722002D151F0032221B00362E1800393D15003C4E13003E6112003F7613 +004191110042BA0C0041DA0B0042DB0A0043DB0A0043DC090043DC090044DC +090044DC098D1400008D14000082170000731E0000672300005E270000552A +00014D2C0001472E0000423000003D310000373300002F3600002236000713 +330011042E001B00360B1A003C17160040221300442E1000493D0E004C4F0C +004E640A00507A09005295070053BE030051EB020052EB020052EB020052EB +020052EB010053EC010053EC017A1E00007A1E000072220000662800005B2B +0001522E00024B310000453300003F3500003A360000343800002F3A000026 +3D00001A3E00060C3C0010003B031700440E120049180D004D220A00522E08 +00563D0600594F05005C6502005E7B0000609501005EB800005CED00005CED +00005CED00005CED00005CED00005CED00005CED006B2A00006B2A0000642D +0000593000025033000049360000433800003C3A0000363C0000303E00002C +3F0000274100001E440000134500050444000F0049070E0050100900551806 +00582106005B2C06005E3A0600614B060064610300677700006990010067B1 +000064E8000065E7000065E7000065E7000065E7000065E7000065E7005D33 +00025D330002573500014E380000473B0000403D0000393F0000324100002D +43000028450000244700001F480000174C00000D4D0005014C000F0051060D +00580E0A005E160700621F05006529050067360500694705006D5C03007073 +0000728C000072AE000070F2000070F2000070F2000070F2000070F2000070 +F2000070F200523B0000523B00004D3D0000454000003D430000354500002F +48000029490000244B0000204D00001C4E00001B4F0000165200000F540004 +0455000D0059050E005F0C0A00671407006D1D050071270400733303007542 +0200775702007A6D00007E8700007EAA00007CF000007CFF00007CFF00007C +FF00007CFF00007DFF00007DFF004743000047430000424600003A49000032 +4B00002B4D000026500000215100001D5300001D5400001D5400001D550000 +18590000115C0003075E000B0061030E0068090B0070110700781904007D23 +0200802E0100823C000082500000856700008A8300008CA4000089E6000088 +FF000088FF000088FF000088FF000088FF000088FF003C4D00003C4D000037 +4E00002F51000028540000235600001E5800001E5900001F5A00001F5B0000 +1F5B00001E5C00001A610000136400020A670009016B010E0072060B007B0D +0800841504008A1E02008E2900008F3600009149000093610000987D00009D +A0000097CF000095FF000095FF000095FF000095FF000095FF000095FF0031 +560000315600002C580000265B0000205E00001F5F00002060000020600000 +206100002062000020630000206400001B690000166E00010D730006047700 +0B007E030B0088090800910F0400991702009F210000A22E0000A3400000A7 +580000AC770000B3960000ACC30000A6FA0000A6FA0000A6FA0000A6FA0000 +A6FA0000A6FA00276100002761000023630000206500002166000021670000 +2168000021690000216A0000216B0000216B0000216D00001D730000187A00 +00128000020A870006038E00090096030700A1080400AE0E0100B9170000C2 +240000C7340000CD4C0000D5690000DA880000DDAC0000CEF50000CEF50000 +CFF50000CFF60000CFF60000CFF600216C0000216C0000226D0000226E0000 +226F0000227000002272000022730000237400002375000023750000227700 +001E7F00001A87000015900000109900000BA1000005AA000201B6000400C6 +040100DD0C0000EC1B0000FC290000FF3D0000FF5F0000FF730000FF940000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002376000023760000 +23770000237900002379000023790000237900002379000023790000237900 +0023790000237900001F8100001A88000015900000109800000CA1000006AA +000201B5000400C5030200DC0B0000EB190000FB280000FF390000FF5C0000 +FF700000FF8C0000FFAE0000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +00237900002379000023790000237900001F8000001A880000169000001198 +00000CA0000006A9000201B5000400C4030200DA0B0000EA180000FA270000 +FF350000FF580000FF6D0000FF860000FFA50000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +002379000023790000237900002379000023790000237900001F8000001A88 +000016900000119800000CA0000006A9000101B4000400C3030200D90A0000 +E9170000F8260000FF330000FF550000FF6B0000FF810000FF9E0000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<50000C0050000C0050000C0051000C0051000C0052000C0053000C0053000B +0054000B0054000B0055000B0055000B005400110054001800540020005600 +2800580031005C003B0061004800670056006A0066006B0077006A00890068 +009F006600BD006800F2006800F2006800F1006800F1006800F1006800F100 +6800F1006800F10052000C0052000C0052000C0052000C0053000B0054000B +0054000B0055000B0056000A0056000A0057000A0057000A00560010005600 +170056001F0057002700590030005D003B0062004700680056006B0066006C +0077006B00890069009F006700BC006900ED006900ED006900ED006900ED00 +6900ED006900EC006900EC006900EC0054000B0054000B0054000B0054000B +0055000B0056000A0056000A0057000A0057000A0058000A00580009005900 +090058000F005800170058001E00590026005B0030005E003B006300470069 +0056006C0066006D0077006C0089006A009E006800BA006A00E8006A00E800 +6A00E8006A00E8006A00E8006A00E8006A00E8006A00E70055000B0055000B +0055000B0056000A0057000A0058000A0058000A0059000900590009005A00 +09005A0009005B0009005A000F005A0016005A001D005B0025005D002F005F +003A00650047006A0056006D0066006E0077006E008A006C009E006A00B900 +6A00E3006A00E3006A00E3006A00E3006A00E3006A00E3006B00E3006B00E3 +0058000A0058000A0058000A0058000A00590009005A0009005A0009005B00 +09005B0008005C0008005C0008005D0008005D000E005C0015005D001C005E +0025005F002E0061003A00660047006C0056006F0066006F0077006F008A00 +6D009E006B00B8006B00DF006B00DF006B00DF006B00DF006B00DF006B00DE +006B00DE006B00DE005A0009005A0009005A0009005A0009005B0009005C00 +08005C0008005D0008005E0008005E0008005F0007005F0007005F000D005F +0014005F001B006000240061002D0063003900680046006D00560070006700 +7000770070008A006F009E006D00B8006D00DE006D00DE006D00DE006D00DE +006D00DE006D00DE006D00DE006D00DE005C0008005C0008005C0008005D00 +08005D0008005E0008005F0007005F00070060000700600007006100070061 +00060061000C006100130062001A006300220063002C00650038006A004600 +6F005600710067007200780072008A0071009D006F00B7006E00DD006E00DD +006E00DD006E00DD006E00DD006E00DD006E00DD006E00DD005E0007005E00 +07005E0007005F000700600007006100070061000600620006006200060063 +000600630006006400050063000B0063001200640019006500210066002B00 +670037006C00460070005600720067007300780074008A0072009D007100B6 +006F00DD006F00DD006F00DD006F00DB006E00D9006D00D8006D00D8006D00 +D8006100070061000700610007006200060063000600630006006400050065 +0005006500050066000500660005006700040066000A006600110067001800 +6700200068002A00690036006E00450072005600740067007500780073008A +006F009C006C00B5006C00F3006B00F6006A00F5006A00FA006900FA006900 +FA006800F9006800FB00640005006400050064000500650005006500050066 +00050067000400680004006800040069000400690004006900030068000900 +69000F00690017006B001F006B0029006C003500700044006E0053006D0063 +006A0074006700860064009A006100B6006400FF006300FF006200FF006100 +FF006100FF006000FF006000FF006000FF0067000400670004006700040068 +0004006800040069000400690003006A0003006A0003006B0003006B000300 +6B0002006B0007006C000E006C0015006E001E006C0027006500320060003E +0060004C005F005D015E006F025C008201590097005700B5005C00FF005A00 +FF005900FF005800FF005700FF005700FF005700FF005600FF006900030069 +000300690003006A0003006B0003006B0002006C0002006C0002006C000200 +6D0002006D0001006D0001006E0006006F000D006C00140065001B005D0024 +0057002E035300380551004506500057074F006A094E007F084D0094054C00 +B0034E00EA024D00F5024C00F2024B00F0034A00EF034900ED034800EC0448 +00EC046C0002006C0002006C0002006C0002006D0002006D0001006E000100 +6E0001006F0001006F00010070000100700001006F00040067000A015E0011 +03550018074D001F0C460027114200301440003E12400050113F0062113E00 +77103D008D0E3D00A90C3D00D40A3C00DF0A3B00DE0B3A00DD0B3900DC0C38 +00DC0C3800DB0C3700DB0C6E0001006E0001006E0001006F0001006F000100 +7000010071000100710001007200000072000000730000006D030000620201 +035700050A4D000B0E430012133A0019193200201E2E002B1F2C00391D2B00 +491B2A005A1A2A006D1A2900841928009F172A00C6142900D4142800D31427 +00D2152600D1152500D0152500D0152400D016710001007100010071000100 +720000007200000073000000740000007401000075010000730300006C0600 +00640900005A090003470200113C00051732000B1C2900122222001A251E00 +26261A00322516004123150051231400632312007723120091211400B61D14 +00C81C1300C71D1200C61D1100C61D1000C61E0F00C61E0F00C51E74010000 +74010000740100007501000076020000770200007702000078030000720600 +00690A0000610D00005A10000050100003410B000F3004001C220103251800 +092A1200132C0B001F2E06002A2F0200362E0001462D0003592A00066D2800 +0685260003AA250103C3230104C2230005C2230005C2230006C2230006C122 +0006C122780300007803000078030000790300007A0400007B0400007A0500 +00700A0000670E00005E1200005715000051170000471700043912000F2A0D +001A190900250602003100040C3200081A2E000B282A000D3627000F452400 +10582100136B1F0015841F0014AA210013C1200013C11F0014C11F0015C11F +0015C11F0015C11F0015C21F7D0500007D0500007D0500007E0600007F0600 +007B0900006F0E0000641200005B160000541900004E1B0000481D00003E1C +00053119000E2416001714130020020D012B00110F2800151D240018292000 +1A371D001B461B001D5819001F6C180022851A0022AB1C0020CB1B0021CB1B +0021CB1A0022CB1A0022CB1A0022CB1A0022CB198308000083080000830800 +00840900007A0D00006D12000062170000591A0000511D00004A2000004421 +00003F230000362300042A22000B1E2000130F1C001B01190423001D112000 +221F1C00252B180027391500294913002B5A12002D6D12002F8613002FA712 +002ECB11002ECB11002FCB10002FCB100030CB0F0030CB0F0030CA0F870B00 +00870B0000870B0000791100006B160000601B0000571F00004F2200004724 +0000412500003C27000038280000302A0000252A00061828000F0923001800 +25071B002B1418002F201400332C1000373A0E003A4B0C003C5D0B003D700A +003E8709003FA806003FD2050040D3040041D3040041D4030042D4030042D5 +030042D5037715000077150000771500006A1B00005E200000542300004C26 +0001452800003F2A0000392B0000342D0000302F0000293100001F33000311 +30000C032C001600330B130038160F003C200C00412C0800463A06004A4B04 +004A5E03004C7301004D8A00004DAC00004BE200004BE200004BE200004BE2 +00004BE200004BE200004BE2006720000067200000672000005D2500005228 +00014A2A0000432D00003C2E000036300000313200002C3400002836000021 +380000183A00010A38000B0038041000400D0A0044160600461F0500492A05 +004E38050050480500525C0300547101005689000056A9000052E7000052EA +000052EA000053EA000053EA000053EA000053EB005A2900015A2900015A29 +0001502C0002482F0000413100003A330000333600002D380000283A000024 +3B0000203D0000193F000010410001053F000B0041050D00460C0A004B1507 +004D1D0600502705005434060057440600595804005C6F01005F8600005FA5 +00005BDC00005BED00005BED00005BED00005BED00005BED00005BED004E32 +00004E3200004E320000463400003F37000037390000303C00002A3E000025 +400000204100001C4300001A44000017450000114700010746000A0047030E +004D0B0B0053130700561B0600592506005D3106005F41060062540500656B +01006882000069A0000065C7000065E7000065E7000065E7000065E7000065 +E7000065E700443A0000443A0000443A00003D3D0000343F00002C41000027 +440000214600001C4700001B4800001B4900001B490000184B0000134D0001 +094E0009004E020F0054090C005B1108006119060065230500672E0500693C +05006C4F04006F660200737D0000749A000071C5000071F4000071F4000071 +F4000072F4000072F4000072F400394200003942000039420000314500002A +480000234A00001E4C00001C4D00001C4E00001C4E00001C4F00001C4F0000 +1A510000155400000C5600070257010E005D070D00640E09006C1706007120 +0400742B030076370200784902007A5F01007E7800008196000080C400007F +FF00007FFF00007FFF00007FFF00007FFF00007FFF002E4C00002E4C00002E +4C0000274E0000205000001D5200001D5300001D5400001E5400001E550000 +1E5600001E5600001C590000175C00000E5F00060361000D0066040D006E0B +0A00771306007E1C0400832602008532000087420000875800008B71000090 +9100008EBB00008CFF00008CFF00008CFF00008CFF00008CFF00008CFF0024 +55000024550000245500001E5800001E5900001E5A00001F5A00001F5B0000 +1F5C00001F5D00001F5D00001F5E00001D6100001966000011690004086D00 +0A0071020D007A070A00830E06008C160300921F0100952B0000963A000098 +5000009B6A0000A28B0000A2B200009BFE00009BFE00009BFE00009BFE0000 +9BFE00009BFE001F5F00001F5F00001F5F0000206000002061000020620000 +2063000020640000206500002165000021660000216700001F6A00001A7000 +00147500020C7B00060480000A0089030A00920806009C0F0300A5170100AC +220000AF300000B0450000B8610000BF820000C2A30000B4E90000B3F70000 +B3F70000B3F70000B3F70000B4F70021680000216800002168000021690000 +216A0000216B0000216C0000226D0000226E0000226F000022700000227100 +00207500001C7C000017840000138C00000C930003049A000600A4010600B4 +050300C50A0100D6160000E5240000F9340000FF520000FF6C0000FF880000 +FFB20000FFB60000FFB60000FFB50000FFB50000FFB5002272000022720000 +22720000237300002375000023760000237700002378000023790000237900 +002379000023790000217C00001D840000188B0000149300000E9B00000AA4 +000003AE000300BB010300CE050100E3110000F2200000FF2F0000FF4E0000 +FF690000FF800000FFA10000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +0023790000237900002379000023790000217C00001D830000188B00001493 +00000F9B00000AA4000003AD000300BA010300CD050100E2100000F11F0000 +FF2E0000FF4A0000FF660000FF7B0000FF9D0000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +00237900002379000023790000237900002379000023790000217B00001D83 +0000198B0000149300000F9B00000AA3000004AD000300BA010400CB050100 +E10F0000F01E0000FE2C0000FF440000FF620000FF760000FF970000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<47001000470010004700100047001000480010004800100049000F004A000F +004A000F004B000F004B000F004B000E004B0010004900170049001F004B00 +26004F002D0054003600590041005F004E0063005C0065006D0064007F0062 +0095006000B2006400FD006400FD006400FD006400FD006400FD006400FC00 +6400FC006400FC0049000F0049000F0049000F0049000F004A000F004A000F +004B000F004B000E004C000E004C000E004D000E004D000E004D0010004B00 +17004B001E004D00250050002D00550036005900400060004D0064005C0066 +006D0065007F00630094006100B0006500FB006500FB006500FB006500FB00 +6500FB006500FB006500FB006500FB004A000F004A000F004A000F004B000F +004B000E004C000E004D000E004D000E004E000D004E000D004F000D004F00 +0D004F000F004D0016004D001E004E00250051002C00560036005A00400061 +004D0065005C0067006D0067007F00650093006200AF006600F9006600F900 +6600F9006600F9006600F9006600F9006600F9006600F9004C000E004C000E +004C000E004D000E004D000E004E000D004E000D004F000D0050000D005000 +0C0051000C0051000C0051000E004F0015004F001D005000240053002C0057 +0035005B00400062004D0066005C0068006C0068007F00660093006400AD00 +6600F4006600F7006700F7006700F7006700F7006700F7006700F7006700F7 +004E000D004E000D004E000D004F000D004F000D0050000D0051000C005100 +0C0052000C0052000C0053000C0053000B0053000D005200140052001C0053 +00230055002B00580035005C00400063004D0068005C006A006C0069007E00 +680093006500AC006600E6006700F5006700F5006700F5006700F5006700F5 +006700F5006700F50051000C0051000C0051000C0051000C0052000C005200 +0C0053000B0053000B0054000B0055000B0055000B0056000B0056000C0054 +00130054001B005500220057002B00590034005D00400064004D0069005C00 +6B006C006B007E00690092006700AB006700D9006800F0006800F0006800F0 +006800F0006800F0006800F0006800F00053000B0053000B0053000B005300 +0B0054000B0055000B0055000B0056000A0056000A0057000A0058000A0058 +000A0058000B005700120057001A00580021005A002A005B0034005F003F00 +66004D006A005C006C006C006C007E006B0092006900AA006700D0006900EA +006900E9006900E9006900E9006900E9006900E9006900E90056000A005600 +0A0056000A0056000A0057000A0057000A0058000A0059000900590009005A +0009005A0009005B0009005B000A005A0011005A0018005B0020005C002900 +5E00330061003F0067004D006C005C006E006D006E007E006D0092006B00A9 +006900CC006A00E9006900EE006900F3006800F7006800FB006800FB006800 +FD0058000900580009005800090059000900590009005A0009005B0009005B +0009005C0008005C0008005D0008005D0008005E0009005D0010005D001700 +5E001F005F0028006000320063003E0069004C006D005D006D006C006B007D +00670091006300A9006200D8006400FF006300FF006200FF006100FF006100 +FF006000FF006000FF005B0009005B0009005B0009005B0008005C0008005D +0008005E0008005E0008005F0007005F000700600007006000070061000800 +60000F006100160061001D00620026006300310062003D0062004900630059 +006200690060007B005C008F005900AA005C00E6005A00FF005900FF005800 +FF005800FF005700FF005700FF005700FF005E0008005E0008005E0008005E +0007005F000700600007006100070061000600620006006200060063000600 +630006006300070063000D006300140064001C005F00240059002E00560038 +005500440056005300560065015500790052008E004F00A9005100DD005100 +FF005000FF004F00FF004F00FF004E00FF004E00FF004E00FF006100060061 +00060061000600620006006200060063000600640005006500050065000500 +6600050066000500670004006700050066000C006000130058001A00530023 +004E002B034B0033054A003F0449004E04480061064800750648008A034600 +A3014600CC004600EE004500EC014400EA014300E9014200E8014200E70141 +00E70165000500650005006500050065000500660005006700040068000400 +680004006900040069000300690003006A000300640003005C000900540010 +024B00160743001D0D3C00231338002D1539003A113900490E38005B0E3800 +6E0D3800840B38009D093800C0073700DA063600D9063500D8073400D80733 +00D7073300D7083200D6086900040069000400690004006900040069000300 +6A0003006A0003006B0003006B0002006C0002006A000200610001005A0101 +014E00040745000A0C3B001011330016172C001E1C2800281C2600351A2600 +4417250054162500661624007B15240094142600B4102600CE0F2500CD0F24 +00CD102300CC102200CB102100CB112100CB116B0002006B0002006B000200 +6B0002006C0002006C0002006D0002006D0001006E000100670000005F0300 +005A060000520800004202000C370004132D000A192500101E1F0019211A00 +24211600302013003C1E11004B1E10005C1F0E006F1F0E00861D1000A51A12 +00C3171100C2180F00C2180E00C1190E00C1190D00C1190D00C0196E000100 +6E0001006E0001006E0001006F000100700001007000010070000000660300 +005E070000570A0000500D0000490E00003C0A000A2C0400161F0102201600 +08240F00122609001D28050028280101342700024225000454230006662100 +087C1F00069A200003BC1E0004BC1E0005BC1D0006BC1D0006BB1D0007BB1D +0007BB1D720000007200000072000000720000007200000073000000700300 +00650700005C0B0000540E00004D11000047130000411500013511000A270C +00151808001F0502002900040C2A00081927000B2623000D3320000F421D00 +10531B0012661900147B1900149A1B0012BC1B0012BC1B0013BC1A0013BC1A +0014BD1A0014BD1A0014BD1A76010000760100007601000076010000770200 +0070060000640B00005A0F0000511200004A150000441700003F190000391A +00012D180009211500131312001A010D012400110E2200151B1E0017281A00 +1A3516001B4314001C5413001E661200207C1300209A16001EC417001FC416 +001FC4160020C4160020C4150020C4150020C4157A0400007A0400007A0400 +007A0400006F090000620F0000581300004F17000048190000411B00003B1D +0000361F000032200000272000061C1E000E0D1A00160118041D001D111A00 +211D16002429120026370E0028460C0029560B002B680B002C7D0C002D980D +002BC20D002CC30C002CC30C002CC30B002DC30B002DC20A002DC20A710C00 +00710C0000710C00006E0E000061130000561800004D1B0000451D00003E1F +000038210000332300002F2500002B260000222800021626000A0822001300 +24071500291312002D1E0D00312A09003538060038480400395903003A6A03 +003A7E02003898020039C0020039C7020039C7020039C702003AC702003AC7 +02003AC70262170000621700006217000060180000551C00004B1F00004322 +00003C24000036260000312700002C290000282B0000242D00001B2F00000F +2E0007022B011000310A0C0035140800381E05003B2903003F360300424503 +004157030041690200427E01004198000043C4000042D4000042D4000042D4 +000042D4000042D4000042D400552000005520000055200000532100004924 +0000412600003A280000332A00002E2C0000292E000024300000203200001C +33000014350000083500060033020C00380A09003C1306003D1C0500402604 +00453304004842040049540300496802004A7D00004B9900004BC600004ADF +00004AE000004AE000004AE000004AE000004AE0004A2800014A2800014A28 +0001472800003F2B0000382D0000312F00002B32000025340000213600001C +3700001839000017390000123B00000A3A00050138020D003D090B00421107 +00441A0600462305004B2F05004E3E05005051040052660200547C00005597 +000053C2000052E9000052E9000052EA000052EA000052EA000052EA003F2F +00003F2F00003F2F00003E300000353200002E35000027380000223A00001D +3B0000183D0000183E0000183E0000183F0000134000000C400005023F010D +0043070C00481008004C1806004E210600522C0600563B0600584C05005B62 +03005D7A00005F9401005DBA00005BED00005BED00005BED00005BED00005B +ED00005BED00353800003538000035380000333800002B3B0000243E00001E +4000001942000019420000194300001A4300001A4400001A44000015460000 +0E4700040346000D004A060D00500D0A0055160700581F06005B2906005F37 +060061480600645E0300687500006A8F000068B1000066E7000066E7000066 +E7000066E6000066E6000066E6002A4100002A4100002A4100002841000021 +4400001B4600001A4700001B4800001B4800001B4900001B4A00001B4A0000 +1B4B0000174D0000104F0003054F000C0052040E00580B0B005F130700641D +0500682705006B3305006C4205006F580300736F0000768A000076AE000074 +F7000074F7000074F7000074F7000074F7000074F700204A0000204A000020 +4A00001F4A00001C4C00001C4D00001C4E00001C4E00001C4F00001D500000 +1D5000001D5100001D51000019550000135700020859000A005B020F006209 +0C006A1008007119050077230300792E02007B3C01007C5001007F68000084 +84000085AA000083FC000082FF000082FF000082FF000083FF000083FF001D +5200001D5200001D5200001D5200001D5300001D5400001E5500001E560000 +1E5700001E5700001E5800001E5900001E5900001A5D0000156100010C6400 +070166000E006D060C00750C09007E140500851E0300892901008A3600008C +4900008E610000937E000097A3000091E2000091FF000091FF000091FF0000 +91FF000091FF001F5A00001F5A00001F5A00001F5A00001F5B00001F5C0000 +1F5D00001F5E00001F5F0000206000002061000020610000206200001C6600 +00176C00010F7000050674000A007A020C00840809008D0E0500961602009B +2000009E2D00009F3F0000A3570000A8770000B0990000A7CC0000A3FB0000 +A3FB0000A3FB0000A3FB0000A4FB0020630000206300002063000020630000 +2065000021660000216700002168000021690000216A0000216A0000216B00 +00216C00001E71000019780000147F00020C850005048D000800940208009E +070500AC0D0200B8150000C1220000C7320000CC490000D6670000DB880000 +DCAF0000CFF60000CFF60000D0F60000D0F70000D0F700226D0000226D0000 +226D0000226E0000226F000022700000227200002273000023740000237500 +00237600002377000023780000207E00001B860000178E0000129600000D9F +000007A8000101B3000400C2030200D90A0000EA180000FA270000FF380000 +FF5D0000FF730000FF990000FFB20000FFB20000FFB20000FFB20000FFB200 +23790000237900002379000023790000237900002379000023790000237900 +002379000023790000237900002379000023790000207E00001B860000178E +0000129600000D9E000008A7000101B2000400C1020200D7090000E9170000 +F9260000FF350000FF5A0000FF6F0000FF8F0000FFB20000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +0023790000237900002379000023790000237900002379000023790000207E +00001B860000178E0000129600000D9E000008A7000101B2000400C0020200 +D5080000E8150000F7250000FF330000FF560000FF6D0000FF870000FFAB00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410012 +0042001200420012004300120043001200430012004200160041001D004300 +230046002A004B00320051003C00570047005C0055005F0065005F0076005D +008B005A00A7005D00DD006000FE006000FE006000FE006000FE006000FE00 +6000FE006100FE004100130041001300410013004100130041001200420012 +00420012004300120043001200440012004400110044001100450011004300 +150042001D004400230047002A004C00320052003B00580047005D00550060 +006400600076005E008A005C00A5005E00D7006100FF006100FF006100FF00 +6100FF006100FF006100FF006100FF00430012004300120043001200430012 +00430012004300120044001100440011004500110045001100460011004600 +1100460010004500150043001C004500230049002A004D00320053003B0059 +0047005E00540061006400610076005F008A005D00A4005E00D2006200FF00 +6200FF006200FF006200FF006200FF006200FF006200FF0044001100440011 +00440011004400110045001100450011004600110046001100460010004700 +10004700100048001000480010004700140045001C00460022004A0029004E +00310054003B005A0046005F0054006200640062007500610089005E00A300 +5F00CE006300FE006300FE006300FE006300FE006300FE006300FE006300FE +00460011004600110046001100460011004600100047001000470010004800 +10004800100049000F0049000F004A000F004A000F004900130047001B0048 +0022004C0029005000310055003B005B004600600054006300640064007500 +620088006000A1006000CA006400FD006400FD006400FD006400FD006400FD +006400FD006400FD0048001000480010004800100048001000480010004900 +0F0049000F004A000F004B000F004B000E004C000E004C000E004C000E004B +0012004A001A004A0021004D0028005200300056003A005C00460061005400 +6500630065007500640088006100A0006100C6006500FC006500FC006500FC +006500FC006500FC006500FC006500FC004A000F004A000F004A000F004A00 +0F004B000F004B000E004C000E004C000E004D000E004E000D004E000D004E +000D004F000D004D0012004C0019004D0020004F0027005300300057003A00 +5D0045006300540066006300670074006600880063009F006200C3006600FA +006600FA006600F9006600F9006600F9006600F9006600F9004D000E004D00 +0E004D000E004D000E004D000E004E000D004E000D004F000D0050000D0050 +000C0051000C0051000C0052000C00500010004F00180050001F0051002700 +55002F00590039005E0045006400530068006300690074006800870064009E +006100C1006400FF006200FD006100FF006100FF006000FF006000FF005F00 +FF004F000D004F000D004F000D004F000D0050000D0051000C0051000C0052 +000C0052000C0053000B0053000B0054000B0054000B0054000F0053001600 +53001E005400260057002E005A0039005F0045006500530065006200630073 +005F0086005B009E005900C7005B00FF005900FF005800FF005700FF005700 +FF005600FF005600FF0052000C0052000C0052000C0052000C0053000B0054 +000B0054000B0055000B0055000B0056000A0057000A0057000A0058000A00 +57000E005600150057001D005800250059002D00570037005800420059004F +0059005F00580071005600860051009F005100C9005100FF005000FF004F00 +FF004E00FF004E00FF004D00FF004D00FF0056000A0056000A0056000A0056 +000A0056000A0057000A0057000A0058000A0059000900590009005A000900 +5A0009005B0009005B000D005A00140058001B00520023004F002B004D0033 +004D003E004E004B004E005C004E006F004C00840049009D004800C4004800 +FD004700FB004600FA004500F9004400F8004400F7004400F7005900090059 +0009005900090059000900590009005A0009005B0009005B0008005C000800 +5D0008005D0008005E0008005E0008005C000B00540012004D001900490021 +004500280442002F0643003A03430048014200580341006C03420081014000 +99003F00BA003E00E9003C00E7003B00E5003B00E4003A00E4003A00E30039 +00E3005C0008005C0008005C0008005C0008005D0008005E0008005E000700 +5F000700600007006000070061000700610006005A000500530008004A000E +02420014073A001A0E3400201430002915310036103200440C3200540B3200 +660A32007A08320092063200B1043100D7033000D6032F00D5042E00D4042E +00D4042D00D3042D00D3046000070060000700600007006000070061000700 +61000600620006006300060064000600640005005E00040057000300500001 +02450003043E00090935000E0F2D00141527001C1924002619220032172100 +401420004F12200060121F0072121F0089112100A60D2300CB0A2100CA0B20 +00C90C1F00C90C1E00C80C1E00C80C1D00C70D640005006400050064000500 +6400050065000500660005006600050067000400670004005C000200550001 +014B030000460500003D0300073200030F2900081521000F1A1B00171C1700 +221D13002D1B100039190E0047190C00571A0B00681A0B007D1A0C00981710 +00BF130E00BE140D00BD140C00BD150B00BC150A00BC150A00BC1569000400 +69000400690004006900040069000400690003006A000300640002005A0101 +00520400014B07000045090000400B0000380A00042A0400111D01021B1400 +081F0E00112108001B22030126220102322000033F1E0005501C0006621A00 +08751900078F1A0004B3190005B7190006B7180006B7180007B7180007B718 +0007B7186C0002006C0002006C0002006C0002006C0002006C000200620000 +005A04000051070000490A0000430D00003E0F00003911000031110004240C +000F160800190502002300040B2300081820000B241C000E3119000F3F1600 +0F4F15001161130013741300148D150011B1160011B8160012B8150013B815 +0013B8150013B8150013B8156F0001006F0001006F0001006F0001006F0001 +0062030000590800004F0C0000470F0000411100003B130000361500003117 +00002A1700041E14000D11110015010C011E00100E1C00141A180017261400 +193310001A410E001B510D001C620C001E750D001F8D0F001DB213001DBD12 +001DBD11001EBD11001EBD10001EBD10001FBD106A0400006A0400006A0400 +006A04000062070000570C00004D100000451300003E150000381800003219 +00002E1B00002A1D0000251E00011A1D00090C1A001100180417001C101400 +201C100023280B00253408002643050027530500296404002A7605002A8D06 +0028AD090027BC0A0027BC0A0027BC0A0027BC0A0027BC0A0027BC0A5C0D00 +005C0D00005C0D00005C0D0000561000004C140000431700003C190000351C +0000301E00002B20000027210000242300001F250000142500050621000D00 +23070E0027120B002B1D07002E280300303401003243010031530200316303 +0031750400308B05002EAB07002DBF07002DBF07002DBF07002DBF07002DBF +07002EBF07501600005016000050160000501600004A180000411B0000391E +0000332000002D2200002924000024260000202800001D290000172B00000D +2B00020129010A002D0808002F120700301B05003226030036320200394002 +00385102003861030038730300378A030037AA030036C5030036C5030036C5 +030037C5030037C5030037C503441E0000441E0000441E0000441E00003F20 +000037220000302400002B27000026290000212B00001C2D0000192E000015 +2F0000123000000C300002022E000A0030070A003410070035190600382304 +003B2E0300403D0200404D0300405F0300407202004089010040AB010040D0 +010040D0010040D1010040D1010040D1010040D1013A2500003A2500003A25 +00003A250000362700002E290000282C0000232E00001D3000001932000015 +3300001634000016340000143500000E350001043300090034050B00390E08 +003B1706003D200500412B040046390400484A0300485D0300497101004A89 +00004AAC000049DE000049DE000049DE000049DE000049DE000049DE00302D +0000302D0000302D0000302D00002C2E0000253100001F3400001A36000016 +37000017380000173800001739000017390000153A00000F3B000106390009 +003A040D003F0C090043150600441D0600482805004C3505004F460500515A +0400527001005488000055AA000051E9000051E9000051E9000052E9000052 +E9000052E90026360000263600002636000026360000233700001C3A000018 +3B0000183C0000183D0000183D0000183E0000183E0000183F000017400000 +11410001084000080040030E00450A0B004B1307004D1B0600502506005431 +0600574106005A5505005D6D01005F85000060A500005CE400005CED00005C +ED00005CED00005CED00005CED001D3E00001D3E00001D3E00001D3E000019 +400000194100001941000019420000194300001A4300001A4400001A450000 +1A45000019460000134800000A4800070047010F004D080C00541008005819 +06005B2206005F2E0600623D060064500500686702006B8000006C9E000068 +C9000068E8000068E8000068E8000068E8000068E9001A4600001A4600001A +4600001A4600001A4600001B4700001B4800001B4900001B4900001B4A0000 +1B4B00001C4B00001C4C00001A4D0000155000000D5100060151000F005706 +0D005D0E0A0064160600692005006C2A04006F380400714A04007461020078 +7A00007998000077C9000078FB000078FB000078FB000078FB000078FC001C +4D00001C4D00001C4D00001C4D00001C4E00001C4E00001C4F00001D500000 +1D5100001D5200001D5200001D5300001D5400001C55000017590000105B00 +04055D000C0061040E00680B0A0071120700781C04007D2602007F32010081 +42000082580000867200008A93000089C6000087FF000087FF000087FF0000 +87FF000087FF001E5500001E5500001E5500001E5500001E5600001E570000 +1E5800001E5900001E5900001F5A00001F5B00001F5C00001F5C00001E5E00 +00196200001366000309690009016D010D0075070B007E0D0700871504008E +1F0200912B0000923A000094500000976A00009E8C00009DB8000097FF0000 +97FF000097FF000097FF000098FF001F5E00001F5E00001F5E00001F5E0000 +1F5F0000206000002061000020620000206300002064000020650000216500 +0021660000206800001B6E0000167300010E790005057E00090085020B008F +070700990E0400A3150100AA200000AD2F0000AE430000B6600000BD830000 +BFA80000B1F70000B1F70000B1F70000B1F70000B2F7002169000021690000 +216900002169000021690000216B0000216C0000226D0000226E0000226F00 +00227000002271000022720000227400001D7B000019830000148B00000E93 +0001089B000301A4000600B3040400C5080100D9120000E9210000FE310000 +FF500000FF6B0000FF880000FFB20000FFB20000FFB20000FFB20000FFB200 +23750000237500002375000023750000237600002377000023780000237900 +002379000023790000237900002379000023790000227A00001E8100001A89 +000015910000109900000BA2000004AB000200B8010400CA040100E00F0000 +F01E0000FF2D0000FF4B0000FF690000FF810000FFA70000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +00237900002379000023790000237900002379000023790000237900002379 +00001E8100001A89000015910000109900000BA2000005AB000200B7010400 +C8040100DF0E0000EE1D0000FE2C0000FF450000FF650000FF7B0000FF9F00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +004100130041001300410013004100130041001300410013003F001A003F00 +20004100270047002E004C0036005200410057004E005B005D005C006E005B +00820058009B005900C3005E00FD005E00FD005E00FD005E00FD005E00FD00 +5E00FD005E00FD004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F001A003F0020004100270047002E004C0036005200410057004E005B +005D005C006D005B00810058009B005800C1005E00FD005E00FD005E00FD00 +5E00FD005E00FD005E00FD005E00FD00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F001A003F0020004100260047002E004C00360052 +00400057004D005B005C005C006D005B00810058009A005800BF005E00FD00 +5E00FD005E00FD005E00FD005E00FD005E00FD005E00FD0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F001A003F0020004100260047 +002E004C0036005200400058004D005B005C005D006C005C00800059009800 +5900BD005F00FD005F00FD005F00FD005F00FD005F00FD005F00FD005F00FD +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004200120042001200420013004000190040 +001F004300260048002D004D0035005300400059004D005D005B005E006C00 +5E007F005B0097005A00BA006000FE006000FE006000FE006000FE006000FE +006000FE006000FE0041001300410013004100130041001300410013004100 +13004200120042001200420012004300120043001200440012004400110044 +0012004200180042001F004500260049002D004E00350054003F005A004C00 +5E005B0060006B005F007E005C0096005B00B8006100FE006100FF006100FF +006100FF006100FF006100FF006100FF004300120043001200430012004300 +12004300120043001200440012004400110045001100450011004500110046 +00110046001100460011004400180043001E00470025004A002C004F003500 +55003F005B004C005F005A0061006B0061007E005E0094005C00B5006200FF +006200FF006200FF006200FF006200FF006100FF006000FE00450011004500 +11004500110045001100450011004500110046001100460010004700100047 +001000480010004800100048001000490010004700170046001E0049002500 +4C002C005000340056003F005C004B0061005A0063006A0061007D005D0094 +005900B5005B00FE005A00FF005900FF005800FF005700FF005700FF005600 +FF004700100047001000470010004700100047001000480010004800100049 +000F0049000F004A000F004A000F004B000F004B000E004B000E004A001500 +49001D004A0024004E002B005200340057003E005A004A005C0059005B006A +0058007D00540094005000B8005200FF005000FF004F00FF004E00FF004E00 +FF004D00FF004D00FF004A000F004A000F004A000F004A000F004A000F004A +000F004B000F004C000E004C000E004D000E004D000E004E000D004E000D00 +4F000D004D0014004C001C004D0023004D002A004D0032004E003B00500047 +0051005700510068004F007D004B0095004800B7004800FF004700FF004600 +FE004500FE004500FE004400FE004400FE004D000E004D000E004D000E004D +000E004D000E004E000E004E000D004F000D004F000D0050000D0050000C00 +51000C0051000C0052000C00500013004B001A00470021004500280045002F +004500380046004400470054004600670046007C00420094004000B3003F00 +F3003E00F5003C00F4003C00F3003B00F2003B00F2003A00F10050000C0050 +000C0050000C0050000C0050000C0051000C0052000C0052000C0053000B00 +53000B0054000B0054000B0055000B0051000A004A0011004400180040001E +023B00240739002B093B0036033D0043003C0052003B0064003B0079003900 +90003700AD003500E0003400E6003300E4003200E3003200E2003100E10031 +00E00054000B0054000B0054000B0054000B0054000B0055000B0055000B00 +56000A0057000A0057000A0058000A00550009004E0008004800070041000D +013A0012073300180D2D001E122A0027132B00330E2D00400A2C004F072C00 +60062B0073052C0089032C00A5022B00CD012A00D5012900D3012800D20128 +00D2012700D1022700D10258000A0058000A0058000A0058000A0058000A00 +58000900590009005A0009005A0009005B000900530007004C000600440004 +003E000202370007062F000D0C2900131123001A15200024151E002F131D00 +3C101C004A0E1B005A0E1B006C0E1B00800D1C009A0B1E00BD071D00C8071C +00C7071B00C6081A00C5081A00C5081900C5095C0008005C0008005C000800 +5C0008005C0008005D0008005D0008005E0008005A00070052000500470003 +00400001023B010003370400022D00020B250007111E000E15190016181500 +201811002B170D0036150B00421509005215080062160700751508008D140B +00AD110B00BA100A00B9100900B8110800B8110700B7110700B71160000700 +600007006000070060000700600007006100070062000600590004004E0002 +00440101013F0300023A06000136080000330A00002705000B1A0101161200 +071A0C00101C06001A1D0201241C01022F1A00043C1800054C1600065D1400 +087014000886140006A3140006B3130006B2130007B2130007B2130008B212 +0008B212650005006500050065000500650005006500050063000400570002 +004C010002440500003F070000390A0000350C0000300E00002D100000220C +000A140800140402001E00040B1D0008171A000B2316000E2F13000F3C1000 +104B0E00105D0D00126F0D0013840F0011A1100011B3100011B3100012B410 +0012B4100012B4100013B40F5F0002005F0002005F0002005F0002005F0002 +00570100014B050000440800003D0B0000370E0000321000002D1200002914 +0000261600001C14000810110010010C011900100D16001419120017250E00 +18310A00193E07001A4D06001B5E06001D6F06001D8308001CA00C001BB60C +001BB60C001BB60C001BB60C001BB60C001BB60C5505000055050000550500 +0055050000550500004B090000430C00003B0F0000351200002F1400002A16 +000027180000231A0000201C0000181C00040A19000C00170411001B100E00 +1F1B0A00222605002333010023400100224F0100235E0200236E0400238206 +00219D0A001FB90C0020B90C0020B90C0020B90C0020B90C0020B90C490D00 +00490D0000490D0000490D0000490D00004110000039130000321600002D18 +0000281B0000241D0000201F00001D2100001A22000011230001051E000800 +2107080024100700261A06002725030028300100283E0100284D0100285C02 +00286C040028800600279B090025BB0B0025BB0B0025BB0B0025BB0B0025BB +0B0025BB0B3F1500003F1500003F1500003F1500003F15000037180000301A +00002A1D0000261F0000212100001D2300001925000015260000122700000D +280000042500070024050800280E07002A1806002B2204002D2E02002F3B01 +002F4B01002E5A02002F6B03002E7F05002D9A06002BBE08002BBE08002BBE +08002BBE08002BBE08002BBE08351C0000351C0000351C0000351C0000351C +00002E1F000028210000232400001E2600001928000015290000132A000013 +2A0000132B00000F2B0000062A00050029030A002D0C07002E160600302004 +00322B030036380200374802003658020036690300367E03003498040034C2 +040034C3040034C3040034C3040034C3040034C4042C2400002C2400002C24 +00002C2400002C24000026260000202900001B2B0000162C0000142D000014 +2E0000142E0000142F0000142F000010300000082F0004002D020B00310A08 +0034130600351D0500382803003C340200404402003F5502003F6802003F7C +01003E9801003FC601003FCE01003FCF01003FCF01003FCF01003FCF01232B +0000232B0000232B0000232B0000232B00001D2D0000173000001531000015 +3200001532000015330000153300001534000016340000123500000A350003 +0031000D0036080A003A1107003C1A06003E24040043310400474004004852 +030048660200497C00004998000049C9000048DD000048DE000048DE000049 +DE000049DE001A3400001A3400001A3400001A3400001A3400001635000016 +36000016360000163700001738000017380000173900001739000017390000 +133B00000D3B00030238000D003C070C00410F080044180600462105004A2D +05004E3C0500504E040052630300547A00005697000053C6000052EA000052 +EA000052EA000052EA000052EA00173A0000173A0000173A0000173A000017 +3A0000173B0000183C0000183C0000183D0000183E0000183E0000183F0000 +193F000019400000154100000F4200020440000C0043050D00490D0A004D16 +07004F1E060053290600573706005A4906005C5F0300607700006293010060 +BB00005DED00005DED00005DED00005EED00005EED00194100001941000019 +410000194100001941000019410000194200001A4300001A4400001A440000 +1A4500001A4600001A4600001A47000017480000114A00010749000A004B04 +0F00520B0B00581307005C1C06005F2606006333050065430600685904006C +7100006E8C00006DB200006BEC00006BEC00006BEC00006BED00006CED001B +4800001B4800001B4800001B4800001B4800001B4900001B4A00001B4A0000 +1C4B00001C4C00001C4D00001C4D00001C4E00001C4E000019510000145300 +000A5500080056020F005C080C00641009006B19060070230400722E030074 +3D0200765102007A6A00007E8600007EAE00007CFF00007CFF00007DFF0000 +7DFF00007DFF001D5000001D5000001D5000001D5000001D5000001D510000 +1D5200001D5300001D5300001D5400001E5500001E5600001E5600001E5700 +001B5A0000165D00000D6000060262000E0068050D00700C09007914060080 +1E0300842801008636000088490000896100008F7F000092A700008DFD0000 +8DFF00008DFF00008DFF00008DFF001E5900001E5900001E5900001E590000 +1E5900001F5A00001F5B00001F5C00001F5D00001F5E00001F5F0000205F00 +0020600000206100001D64000019690000116D0004087100090077010D0080 +070900890E060092150300982001009B2C00009D3E0000A0570000A5770000 +AC9D0000A2DE0000A1FD0000A1FD0000A1FD0000A1FC002063000020630000 +20630000206300002063000020640000216600002167000021680000216900 +00216A0000216B0000216B0000216C00001F7000001B770000167E00010E84 +0004068C000700930109009D060600AA0B0200B7130000C21F0000C92F0000 +CE470000D8660000DD890000DFB80000D2F80000D3F80000D3F90000D4F900 +22700000227000002270000022700000227000002271000022720000237300 +00237500002376000023770000237800002379000023790000217C00001C84 +0000188C0000139400000E9D000009A6000002B0000400BF020300D4080000 +E8150000F8260000FF350000FF5C0000FF740000FF9C0000FFB20000FFB200 +00FFB20000FFB2002379000023790000237900002379000023790000237900 +00237900002379000023790000237900002379000023790000237900002379 +0000217C00001D840000188C0000139400000E9C000009A5000002B0000400 +BE020300D2070100E7140000F7240000FF330000FF580000FF700000FF9400 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300400016003E00 +1C004000230042002A00490032004F003B00550047005A0056005C0066005C +007800590090005700B1005E00FD005E00FD005E00FD005E00FD005E00FD00 +5E00FD005E00FD004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300400015003E001C004000230042002A00490032004F003B00550047005A +0055005C0066005C007800590090005700B0005E00FD005E00FD005E00FD00 +5E00FD005E00FD005E00FD005E00FD00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300400015003E001C004000230042002900490032004E +003B0055004700590055005C0065005C00770059008F005700AE005E00FD00 +5E00FD005E00FD005E00FD005E00FD005E00FD005E00FD0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300400015003E001C004000230042 +002900490032004E003B0055004600590055005C0065005C00770059008E00 +5700AD005E00FD005E00FD005E00FD005E00FD005E00FD005E00FD005E00FD +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300400015003E +001C004000230042002900490031004E003A0055004600590054005C006500 +5C00760059008D005700AB005E00FB005E00FD005E00FD005E00FD005E00FD +005E00FD005E00FD0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300400015003E001C004000230042002900490031004E003A0054004600 +590054005C0064005C00760059008C005700AA005E00F6005E00FD005E00FD +005E00FD005E00FD005E00FD005E00FD004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400015003E001C00400022004200290049003100 +4E003A0054004500590053005C0064005C0075005A008B005700A8005D00EC +005E00FF005D00FF005B00FF005A00FF005900FF005900FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400015003F001C0040002200 +43002900490031004F003A00550045005A0053005C0063005A00750056008A +005100A9005300EE005200FF005100FF005000FF004F00FF004E00FF004E00 +FF004100130041001300410013004100130041001300410013004100130041 +00130042001200420012004200120043001200430012004300120043001400 +41001B0042002200450028004A0030004E0039005100430053005100530062 +00510075004D008B004900AA004900E8004800FE004700FE004600FE004500 +FD004400FD004400FD00420012004200120042001200420012004200120043 +00120043001200440012004400110044001100450011004500110046001100 +460011004600130043001B00430021004200270044002E0046003600490041 +004A005000490061004800750045008D004100AA004000E0003E00F9003D00 +F8003C00F7003C00F7003B00F6003B00F60045001100450011004500110045 +00110045001100450011004600110046001100470010004700100047001000 +480010004800100049000F0047001200420018003E001F003D0025003D002C +003E0034003F003E0040004E003F0060003E0074003C008C003900A8003700 +D6003500F0003400EF003300EE003300ED003200ED003200EC004800100048 +001000480010004800100048001000480010004900100049000F004A000F00 +4A000F004B000F004B000E004C000E0046000D0041000F003C00150037001B +0333002108310028093500330335003E0034004D0033005E00320071003100 +88002F00A3002D00CB002C00E4002B00E3002A00E2002A00E1002900E00029 +00E0004B000E004B000E004B000E004B000E004B000E004B000E004C000E00 +4D000E004D000E004E000D004E000D004A000C0044000B003F000A003A000B +00330010052D00160A29001D0E2600250F2700300B28003D0627004B042600 +5B0325006C022500810125009B012500BD002400D4002300D3002200D20021 +00D1002100D1002100D0004F000D004F000D004F000D004F000D004F000D00 +4F000D0050000D0051000C0051000C004F000B0047000A00410009003C0007 +0037000501310006032B000C092500120D200019111D0022111B002D0E1A00 +390C1800460A1700550A1600660916007909170090071800AF051900C50417 +00C4041700C4041600C3051500C3051500C20553000B0053000B0053000B00 +53000B0053000B0053000B0054000B0055000B004E000A00450008003F0006 +0038000401320002022E0001042B0102062200070C1C000D11170015131300 +1F130F0029120C00331109003F1007004D1005005D1105006F110500841007 +009F0E0800B60C0700B50C0600B40D0500B30D0500B30D0400B30D58000A00 +58000A0058000A0058000A0058000A0058000A00570009004C000700430005 +003B00030234010103300200032E0400022B06000125060005180101101000 +07150B00101705001A170201231600022D1400043912000648100007590E00 +086B0D00087F0E0007970E0006AF0E0007AF0D0007AF0D0008AF0D0008AF0D +0008AF0D5800070058000700580007005800070058000700560007004B0005 +00400002023801000433040002300600012C090000290B0000250C00001F0C +00041308000F0402001900050B1800081714000B2210000D2D0D000F3A0A00 +0F48080010590700116A0700127D080011950A0010AF0B0010AF0A0011AF0A +0011AF0A0011AF0A0012AF094A0003004A0003004A0003004A0003004A0003 +00480002003F02000339050001330800002F0B00002A0D0000260F00002211 +00001F1300011A1300040E10000B000C011400100D100013190D0016240800 +172F0400183C0100184A00001859010018690300187C05001793090015B10B +0015B10B0015B10B0015B10B0015B10B0015B10B4105000141050001410500 +0141050001410500013F06000038090000320C00002D0F0000281100002313 +0000201600001D1800001A190000151B0001091800070017040B001B100800 +1C1A06001D2404001D2E01001D3B00001C4900001C5801001C6703001C7905 +001B91090019B40C0019B50C0019B50C0019B50C0019B50C0019B50C390C00 +00390C0000390C0000390C0000390C0000370D0000301000002A1300002516 +0000211800001D1A00001A1C0000161E0000131F00000E1F0000061B000400 +1B0408001E0E08002017070021220400212C02002139000021470100215601 +002165030021780500208F08001EB30D001DB80C001DB80C001DB80C001DB8 +0C001DB80C30140000301400003014000030140000301400002E1500002817 +0000231A00001F1D00001A1F0000162100001222000011220000112300000F +23000008210003001D020800220C080024150700251F0500262A0200263601 +0026450100265402002664030026760500268D070023B00B0023BA0B0023BA +0B0023BA0B0023BA0B0023BA0B281B0000281B0000281B0000281B0000281B +0000261C0000211F00001C2100001723000012250000122500001226000012 +26000012260000112700000A26000200210009002609080027120700291D05 +002B2703002C3401002D4201002C5202002D6203002D7404002C8B06002AAD +090029BD090029BD090029BD090029BD090029BD0920230000202300002023 +000020230000202300001F2300001926000014280000122800001229000013 +29000013290000132A0000132A0000122A00000C2B000102280009002A0709 +002D1007002E1A06003024030033300200363F0100354F0200356002003572 +0300348A040033AC050032C2050032C2050032C2050033C2050033C205172A +0000172A0000172A0000172A0000172A0000162A0000132B0000132C000014 +2C0000142D0000142D0000142E0000142E0000142E0000132F00000E300000 +042E0008002E050A00330E07003417060036210400392D03003E3B02003F4B +02003E5D02003E7102003E8901003EAC01003ECD01003ECE01003ECE01003E +CE01003ECE01142F0000142F0000142F0000142F0000142F0000142F000015 +30000015310000153100001532000015320000153300001533000016340000 +1534000010360000063400070033030C00380C08003B1506003D1E05004029 +04004537040048470400485B030049700100498800004AAE000049DE000049 +DE000049DE000049DE000049DE001635000016350000163500001635000016 +35000016350000163600001637000016370000173800001738000017390000 +17390000173A0000173A0000123C0000093B0006003A020D003F0A0A004412 +0700451B0600482505004D3205005042050052560400546D01005687000056 +AB000053EB000053EB000053EB000053EB000053EB00183B0000183B000018 +3B0000183B0000183B0000183C0000183C0000183D0000183E0000183F0000 +193F000019400000194000001941000019410000144300000C430005014201 +0E0047080C004C1008005019060053220600572E06005A3D06005D51050061 +6901006383000064A4000060E9000060EB000060EB000060EB000060EB0019 +43000019430000194300001943000019430000194300001A4400001A450000 +1A4500001A4600001A4700001B4700001B4800001B4800001B490000164B00 +000E4D0004034C000E0050060E00570D0A005D160700621F0500652A050068 +3805006A4A05006E620200717C0000729C00006FD0000070F2000070F20000 +70F2000070F3001B4B00001B4B00001B4B00001B4B00001B4B00001B4B0000 +1C4C00001C4D00001C4D00001C4E00001C4F00001C5000001D5000001D5100 +001D51000018550000115800030759000B005C030E00630A0B006B12070073 +1B050077260300793202007B4201007D590100817400008596000083D30000 +82FF000082FF000082FF000082FF001D5400001D5400001D5400001D540000 +1D5400001D5400001E5500001E5600001E5700001E5800001E5800001E5900 +001F5A00001F5B00001F5B00001A5F0000146400020B670008016A010E0071 +060B007A0D0800831505008A1F02008D2A00008F39000091500000946B0000 +9B8F000098C0000094FF000094FF000094FF000095FF001F5E00001F5E0000 +1F5E00001F5E00001F5E00001F5E0000205F00002060000020610000206200 +0020630000206400002065000021660000216600001C6C0000187200001077 +0004077C00090083010B008D060800970C0400A1140200A81F0000AC2D0000 +AD420000B45F0000BC850000BDAF0000B0F70000B0F70000B0F70000B0F700 +216A0000216A0000216A0000216A0000216A0000216A0000216B0000226D00 +00226E0000226F000022700000227100002272000022730000237400001F7B +00001A830000158B0000109400000B9D000104A6000400B3010400C6050100 +DE0E0000EF1D0000FF2E0000FF4E0000FF6B0000FF8B0000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237900002379000023790000237900002379000023790000237900002379 +0000237900001F7F00001B870000168F0000119700000CA0000006A9000201 +B5000400C5030200DE0C0000EE1C0000FE2C0000FF490000FF690000FF8300 +00FFB00000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013003F00 +19003F001F004100260046002E004C0036005200400057004E005B005E005C +0070005A0086005800A3005C00E2005E00FD005E00FD005E00FD005E00FD00 +5E00FD005E00FD004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013003F0019003F001F004100260046002D004B0036005200400057 +004D005B005D005C006F005B0085005800A2005B00DB005E00FD005E00FD00 +5E00FD005E00FD005E00FD005E00FD00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013003F0018003F001F004100260046002D004B +0035005100400057004D005B005D005C006F005B0084005800A1005A00D400 +5E00FD005E00FD005E00FD005E00FD005E00FD005E00FD0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410013003F0018003F001F0041 +00260046002D004B0035005100400057004D005B005C005C006E005B008300 +5800A0005A00D0005E00FD005E00FD005E00FD005E00FD005E00FD005E00FD +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410013003F +0018003F001F004100250046002D004B0035005100400057004D005B005C00 +5C006E005B00820058009E005A00CD005E00FD005E00FD005E00FD005E00FD +005E00FD005E00FD0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F0018003F001F004100250046002D004B00350051003F00 +57004C005B005C005C006D005B00820058009D005900CA005E00FD005E00FD +005E00FD005E00FD005E00FD005E00FD004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F0018003F001F004100250045002D00 +4B00350051003F0057004C005B005B005C006C005B00810058009B005700C8 +005A00FF005900FF005700FF005600FF005500FF005400FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F0018003F001E00 +4100250045002C004B00350051003F0056004B0057005A0056006C00530081 +004E009D004C00CB004D00FF004C00FF004A00FE004900FE004800FD004800 +FD004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F0018003F001E004100250045002C00460033004B003D004D004B004C005A +004B006D004900830044009E004200CA004100F9004000F8003F00F8003E00 +F7003D00F6003D00F600410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0018003D001E003C0024003C002B003E00320040003B +004200490041005B0040006E003E0085003B00A0003800C8003600F2003500 +F1003400F1003300F0003300EF003200EF0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003B00160037001C0035002300350029 +003600310037003B003700490036005A0035006E003300840031009F002F00 +C4002D00EB002C00EA002C00E9002B00E9002A00E8002A00E8004100130041 +00130041001300410013004100130041001300410013004200120042001200 +420012004300120043001200420011003D00100039000F0035001300310019 +022E001F052D0027052E0030022E003B002D0048002B0059002A006C002800 +810027009B002600BD002500E2002400E1002300E0002300DF002200DE0022 +00DE0044001200440012004400120044001200440012004400120044001100 +4500110045001100450011004500110040000F003B000E0037000D0033000B +002E000F022A00150626001C092400240A24002E0624003A02230047012100 +57001F0067001E007A001E0092001D00B1001D00D4001C00D2001B00D1001B +00D0001A00D0001A00CF004700100047001000470010004700100047001000 +4700100047001000480010004800100044000F003E000D0039000B0034000A +00300008002C00070127000B05230011091E00180C1C00210B1A002B091800 +370716004305140051051300610412007304120088041300A2021400C30113 +00C1021200C0021100C0021000BF021000BE024B000F004B000F004B000F00 +4B000F004B000F004B000F004B000E004B000E0043000D003C000B00360009 +00310007012D0005022A000402250002031E0006071A000D0C1500140E1200 +1E0E0F00280C0B00310B09003C0B0600490B0400590C03006A0C03007D0B03 +00940A0500B2080400B1080300B0090200B0090200AF090201AF094F000D00 +4F000D004F000D004F000D004F000D004F000D004A000C0041000A003A0008 +00330006012E0004022A00020326010103210200031D0400031601010B0F00 +07100A001011050019110201221000022B0E0004360C0005450A0006550800 +0767070008780700078E080006AC080007AD080007AC070008AC070008AC07 +0008AC06440009004400090044000900440009004400090044000900400008 +0038000501300003022B00000429030003250500021F0700021D0900021B0A +0002120800090302001500040C130008170E000A210B000C2C07000E370400 +0E4502000F5500000F6501000F7703000E8C05000CA807000CAC07000CAC07 +000CAC07000CAC07000CAC073A0003023A0003023A0003023A0003023A0003 +023A000302350002032F0100032C04000227070001220900011F0C00011B0E +000218100002161100020D100006000D020E00100E0B001219070013230400 +132C010013370000134400001353000012630200127403001289060010A608 +000FAE08000FAE08000FAE08000FAE08000FAE083104000231040002310400 +023104000231040002310400022F0600012A090000250C0000200E00011D10 +000119130001161500011317000010180000071600020014040700160D0800 +1717070017210500172B020017360000164300001652000016610200167204 +001587070013A3090013AF0A0013AF0A0013B00A0013B00A0013B00A2B0C00 +002B0C00002B0C00002B0C00002B0C00002B0C0000280D0000231000001F13 +00011B16000017180000131A00000F1A00000E1B00000E1B0000091A000100 +16020800190B08001A1507001B1F05001B2903001B3401001A4100001A5001 +001A5F02001A7004001A85070018A20B0017B30B0017B30C0017B30C0017B3 +0C0017B30C2413000024130000241300002413000024130000241300002115 +00001D180000181A0000141C00000F1D00000F1D00000F1E00000F1E00000F +1E00000B1D000001190007001C0907001E1208001F1C060020260300203201 +001F3F00001F4E01001F5D02001F6E04001F8307001DA00B001BB70C001CB7 +0C001CB70C001CB70C001CB70C1D1B00001D1B00001D1B00001D1B00001D1B +00001D1B00001A1C0000151F00001020000010200000102000001021000010 +21000010210000102200000D220000031C0005001E06080021100800231A06 +0024240400252F0100253D0100244C0100255B0200256C040025810600239D +0A0021BA0C0021BA0C0021BA0C0021BA0C0021BA0C15220000152200001522 +00001522000015220000152200001222000011230000112300001124000011 +240000112500001125000012250000122600000E2600000623000500210408 +00260D070027170600292104002A2D02002C3A01002B4901002B5902002C6A +03002B7F05002A9B080028BC0A0028BD090028BD090028BD090028BD091226 +00001226000012260000122600001226000012260000122700001227000012 +28000012280000122800001329000013290000132A0000132A0000102A0000 +082A00040027020A002B0B08002D1407002E1E050030290300343601003546 +01003457020034680300347D03003399050031C1050031C2050032C2050032 +C2050032C205132B0000132B0000132B0000132B0000132B0000132B000013 +2B0000132C0000132C0000142D0000142D0000142D0000142E0000142E0000 +142F0000112F00000B2F0002012D010A003008090033120700351B06003726 +04003B3202003F4202003F5302003E6602003E7C01003D9801003ECB01003E +CE01003ECE01003ECE01003ECE011430000014300000143000001430000014 +30000014300000153000001531000015310000153200001533000015330000 +163400001634000016350000133500000D3600020233000B0036060B003B0F +07003C1806003F220500432E0400473D0400494F0400496403004A7B00004B +9900004AD000004ADF00004AE000004AE000004AE000163600001636000016 +36000016360000163600001636000016370000163700001738000017390000 +17390000173A0000173A0000173B0000183B0000153C00000F3D0001053B00 +0A003D050D00420D090046150600481E06004C29050050380500534A050055 +600300577900005A97000056C9000055EC000055EC000055EC000055EC0018 +3D0000183D0000183D0000183D0000183D0000183D0000183E0000183E0000 +193F0000194000001941000019410000194200001942000019430000174400 +0012460001084500090045030F004B0A0B0051130700551B0600582606005C +3306005E440600615A0400657300006790010065B9000063E8000063E80000 +64E8000064E8001A4500001A4500001A4500001A4500001A4500001A450000 +1A4600001A4700001B4700001B4800001B4900001B4900001B4A00001B4B00 +001C4B00001A4D0000154F00000B5000070151010F0057080D005E0F090064 +180600692205006C2E04006E3D040070520300746B00007889000077B50000 +76F9000076F9000076F9000076FA001C4E00001C4E00001C4E00001C4E0000 +1C4E00001C4E00001C4F00001C4F00001D5000001D5100001D5200001D5300 +001D5300001D5400001E5500001C570000175A00000F5D0005045F000D0064 +040D006B0B0A00741306007C1D030080280200823501008348000085620000 +8B8100008DAD000089FF000089FF000089FF000089FF001E5800001E580000 +1E5800001E5800001E5800001E5800001E5900001F5A00001F5B00001F5C00 +001F5D00001F5E00001F5E00001F5F0000206000001E6200001A670000136B +00030A6F00080073010D007C060A00860D07008F150300961F0100992C0000 +9A3D00009D570000A3780000A9A200009FFA00009FFD00009FFD00009FFD00 +20640000206400002064000020640000206400002064000020650000216600 +00216700002168000021690000216A0000216B0000216C0000226D0000206F +00001C760000177D000010840003098B000601920009009C040600A9090300 +B7110100C41D0000CD2D0000D4440000DD650000E28B0000F3E90000D8FC00 +00D9FD0000DAFD002272000022720000227200002272000022720000227200 +00227300002374000023760000237700002378000023790000237900002379 +000023790000227A00001E820000198A0000149200000F9B00000AA4000003 +AE000300BC010300D0060100E6130000F7240000FF340000FF5C0000FF7600 +00FF9F0000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004000 +15003F001B004000220042002900490031004E003B00550047005A0056005C +0068005C007B00580096005800C1005E00FD005E00FD005E00FD005E00FD00 +5E00FD005E00FD004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300400015003F001B004000220042002900490031004E003B0055 +0047005A0056005C0067005C007B00580095005800BF005E00FD005E00FD00 +5E00FD005E00FD005E00FD005E00FD00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410014003F001B00400022004200290049 +0031004E003A00550047005A0055005C0067005C007A00580094005800BD00 +5E00FD005E00FD005E00FD005E00FD005E00FD005E00FD0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410014003F001B0040 +00220042002900490031004E003A0055004600590055005C0066005C007900 +590093005800BA005E00FD005E00FD005E00FD005E00FD005E00FD005E00FD +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0014003F001B004000220042002900490031004E003A005400460059005500 +5C0066005C007900590092005800B8005E00FD005E00FD005E00FD005E00FD +005E00FD005E00FD0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410014003F001B004000220042002800490031004E003A00 +54004600590054005C0065005C007800590091005800B5005E00FD005E00FD +005E00FD005E00FD005E00FD005E00FE004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013004100130041001300410014003F001B004000220042002800 +490030004E00390054004500590054005C0065005C007700560090005300B6 +005600FF005400FF005300FF005200FF005100FF005000FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013004100130041001300410014003F001B00 +4000210042002800480030004D003900510044005300530053006400510079 +004C0092004900B7004900FE004700FD004600FC004500FB004400FB004300 +FB004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +410014003F001B00400021004000280041002F004400370048004200480052 +004700650046007A00420094003F00B7003D00F6003B00F5003A00F5003900 +F4003900F4003800F400410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410014003B001A00390020003800260039002D003B0036 +003D0041003D0052003B0065003A007B00360095003400B7003200EE003100 +ED003000EC002F00EC002E00EC002E00EB0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D001200390012003500180032001F00310025 +0131002D003200360031004200300053002E0066002C007B002B0094002900 +B5002800E6002700E6002600E5002500E5002500E4002400E4004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D0012003900110035001000310010002E0016 +002B001D02290023032A002D00290037002600440025005400230066002100 +7900200090002000AF001F00DA001E00DD001D00DC001D00DB001C00DB001C +00DA0041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003A0011003500100030000E002D000D +002A000E002700140124001B042200230422002D00200038001E0045001B00 +5400190063001700750017008A001600A4001700CA001600D0001500CF0014 +00CE001400CD001400CC004100130041001300410013004100130041001300 +410013004100130041001300410013003B0011003600100031000E002D000D +002A000C0027000A0024000A01200011041D0018061B00210619002B031600 +35021400400112004E0110005E010F006E010E0080010E0097000E00B6000D +00BE000C00BC000C00BB000B00BA000B00B900430012004300120043001200 +43001200430012004300120043001200400011003A000F0034000D002F000C +002B000A0027000901230007011E0006011B00060218000D07150015091200 +1E080E0027070B002F05090039050600460504005406020067060201770502 +018C050200A7050100AE050000AD050001AD050001AC050001AC043E000F00 +3E000F003E000F003E000F003E000F003E000F003E000F0039000D0032000B +002D00090029000701230005021D0004031A00020317010102140101040E00 +070B0A00100C0500190B0300220A01012A0900033406000542040006500300 +06640200077401000787020006A1030006AB030006AB030006AB030006AB03 +0006AB0336000A0036000A0036000A0036000A0036000A0036000A0036000A +00300008002B000602260004021D0002041901000317030003150500021307 +0003110800040202001100040D0C0007170800092105000B2A01000B340000 +0A4100000A5000000A6100000A7101000A840300089D040008AB040008AB04 +0008AB040008AB040008AB042D0004022D0004022D0004022D0004022D0004 +022D0004022D00040229000203200101041C0300031906000217080002140A +0003110C00020F0E00020B100001000E0206000E0E07000E1706000E200400 +0E2902000E3300000D3F00000D4E00000D5E00000D6F02000D8204000B9A05 +000AAB05000AAB06000AAB06000AAB06000AAB062603000326030003260300 +0326030003260300032603000326030003200500021C080002190B0002150D +0002121000020F1200010B1300000A1400000A1400000011010600110B0700 +11150700111E05001127020011310000113D0000114C0000115B0100106C02 +00107F04000F9707000DAD07000DAD07000DAD07000DAD07000DAD071F0A00 +011F0A00011F0A00011F0A00011F0A00011F0A00011F0A00011B0D00021710 +000213130001101500000B1600000B1600000B1600000C1700000B17000002 +130006001408080015120700151C06001525030015300100153C0000144A00 +0014590100146A0200147D05001395080011AF090011AF090011AF090011AF +090011AF091912000119120001191200011912000119120001191200011912 +000116150001111700000C1800000D1900000D1900000D1900000D1A00000D +1A00000D1A000004170004001706070018100800191A06001A2304001A2E01 +00193A0000194800001857010019670300187A05001793090015B10B0015B1 +0B0015B20B0015B20B0015B20B121A0000121A0000121A0000121A0000121A +0000121A0000121A00000E1B00000E1B00000E1C00000E1C00000E1C00000E +1D00000F1D00000F1D00000F1D0000071A000300190307001B0D08001D1707 +001E2105001E2C02001E3800001D4600001D5501001E6503001E7805001D90 +09001AB50C001AB60C001AB60C001AB60C001AB60C0F1E00000F1E00000F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1F0000101F000010 +200000102000001020000010210000102100001021000009200002001B0108 +001F0A070021140700231E0500232902002435010023440100235301002463 +030024750500238E080020B40C0020B90C0020B90C0020B90C0020B90C1122 +00001122000011220000112200001122000011220000112200001122000011 +23000011230000112400001124000011240000112500001125000012250000 +0C25000002200008002308080026110700281B0600292603002A3201002B41 +01002A5102002B6103002B7304002A8C060028B10A0027BC0A0027BC0A0027 +BC0A0027BC0A12260000122600001226000012260000122600001226000012 +26000012270000122700001228000012280000122900001329000013290000 +132A0000132A00000E2B00000428000700290509002C0E07002D1806002F23 +0400322E0200353D0100344D0200345E020034710300338A040032AE050031 +C1050031C2050031C2050032C205132B0000132B0000132B0000132B000013 +2B0000132B0000132B0000132C0000132C0000142D0000142D0000142E0000 +142E0000142E0000142F0000142F00000F300000072F0005002D030B00320C +080034150600361F0500392A03003E380200404902003F5B03003F7002003F +88010040AF01003FCF01003FCF01003FCF01003FCF01153100001531000015 +31000015310000153100001531000015310000153100001532000015330000 +153300001634000016340000163500001635000016360000123700000A3600 +040034010D0039090A003D1207003E1B060041260400463304004A4404004A +5803004B6E01004D8800004DB000004BE200004BE200004BE200004BE30017 +38000017380000173800001738000017380000173800001738000017380000 +17390000173A0000173A0000173B0000183C0000183C0000183D0000183D00 +00143E00000D3F0004023D010D0040070C0046100800491806004C22050050 +2E0500543E060056520500596B01005C8500005CAA000058ED000058ED0000 +58ED000058ED00194000001940000019400000194000001940000019400000 +19400000194000001941000019420000194300001A4300001A4400001A4400 +001A4500001A45000016470000104900020448000C004B050E00510D0A0057 +1507005B1F06005E2A060061380600644B0500686402006B7F00006CA20000 +68E8000068E9000069E9000069E9001B4800001B4800001B4800001B480000 +1B4800001B4800001B4800001B4900001B4A00001B4B00001C4C00001C4C00 +001C4D00001C4E00001C4E00001C4F00001951000013540001095500090057 +020F005E090C00661108006D1B0500712604007432030076430200785B0200 +7D7600007F9A00007DE600007DFF00007DFF00007EFF001D5200001D520000 +1D5200001D5200001D5200001D5200001D5200001D5300001D5400001E5500 +001E5600001E5700001E5800001E5800001E5900001F5A00001B5D00001661 +00010D6400070266000E006D050C00760C09007F140500861E02008A2A0100 +8C3900008D500000916C00009893000093CF000092FF000092FF000092FF00 +1F5E00001F5E00001F5E00001F5E00001F5E00001F5E00001F5E00001F5F00 +00206000002061000020620000206300002064000020650000216500002166 +00001E6A00001970000012750003097B00080181010B008B050900950B0500 +9F130200A71D0000AB2C0000AC400000B45F0000BC870000BCBB0000B0F800 +00B0F70000B0F700216C0000216C0000216C0000216C0000216C0000216C00 +00216C0000226D0000226E0000226F00002270000022710000227200002373 +00002374000023750000207B00001C830000178B0000129500000D9E000007 +A8000101B4000400C4030200DD0C0000ED1C0000FE2C0000FF4E0000FF6C00 +00FF920000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F0018003F001E004100250046002D004B0035005200400058004E005B +005F005C0073005A008B005700AE005E00FD005E00FD005E00FD005E00FD00 +5E00FD005E00FD004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F0018003F001E004100250045002D004B00350051 +00400057004E005B005F005C0072005A008A005700AC005E00FD005E00FD00 +5E00FD005E00FD005E00FD005E00FD00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F0017003F001E004100250045 +002D004B0035005100400057004D005B005E005C0071005A0089005700AA00 +5E00FD005E00FD005E00FD005E00FD005E00FD005E00FD0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013003F0017003F +001E004100250045002C004B0035005100400057004D005B005E005C007100 +5A0088005700A9005E00FD005E00FD005E00FD005E00FD005E00FD005E00FD +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013003F0017003F001E004100250045002C004B00350051003F0057004D00 +5B005D005C0070005A0087005800A7005E00FD005E00FD005E00FD005E00FD +005E00FD005E00FD0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400017003F001E004100250045002C004B003400 +51003F0057004C005B005C005C006F005A0086005800A5005E00F9005E00FD +005E00FF005C00FF005B00FF005A00FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400017003F001E0041002500 +45002C004B00340051003F0057004C005B005C0059006E00550085005000A7 +005200F5005000FF004F00FF004D00FF004C00FF004B00FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130040001700 +3F001E004000240044002C00490034004C003D004F004B004E005B004D0070 +004A0087004600A8004400EA004300FA004100F9004000F9003F00F8003E00 +F7004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300400017003E001D003C0024003D002A003F00320041003B0043004A +0042005C00410071003F008A003B00A9003800E0003700F3003500F2003400 +F1003400F0003300EF00410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B00160037001C003500220035002900360031 +0036003B003600490036005D003400710031008A002F00A9002D00D8002C00 +EA002B00E9002A00E9002900E8002900E80041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0012003B001100370010003300140030001A002D0020 +022D0028012D0031002C003C002A004B0029005D0027007100250088002400 +A6002300D0002200E2002100E1002100E1002000E0002000DF004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B0011003600100032000F002F000E002C0012 +002900180226001F04250027022500320023003E0020004C001E005D001C00 +6F001B0084001A009E001A00C3001900D7001900D5001800D4001700D30017 +00D30041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003C0011003700100032000F002E000E002B000D +0028000C0025001001220017041F001E051E0027021C0032001A003E001700 +4C0015005B0013006B0011007E00110095001100B4001000C8001000C6000F +00C5000E00C4000E00C3004100130041001300410013004100130041001300 +4100130041001300410013003F0012003900110033000F002E000E002A000D +0027000C0024000B0021000A001E000E021B00150418001E04170027011400 +310011003B000E0048000C0057000A0068000900780008008C000800A70008 +00B6000700B5000600B4000600B3000500B2003C0012003C0012003C001200 +3C0012003C0012003C0012003C0012003B001100350010002F000E002B000D +0027000C0023000A001F0009001C0008001900070016000B03130014041100 +1D030E0026010C002E00090037000600440004005000020064000100730001 +01850000019F000001AC000002AC000002AC000002AC000002AC0032000F00 +32000F0032000F0032000F0032000F0032000F0032000F0031000F002C000D +0028000C0023000A001F0009001B0007001700060114000401110003010E00 +0704090011060600190403002103010029030002310100033E0000034C0000 +036100000370000003810000039A000003AB010003AB010003AB010003AB01 +0003AB012B000B002B000B002B000B002B000B002B000B002B000B002B000B +002A000B00250009011F0007011A0005011600030212000202100101020F03 +00020D0400020101000D00030F040005160300051F02000528010005300000 +053B0000054B0000055E0000066D0000057E01000596010004AB020004AB02 +0004AB020004AB020004AB0222000601220006012200060122000601220006 +012200060122000601200006021A0003021601010213020003110400020F06 +00020C090002070D0001060E0000010D010300090C050008140500081D0300 +08260200082F0000083A00000849000008590000086A0000087B0100079103 +0006AB030006AB030006AB030006AB030006AB031801010318010103180101 +03180101031801010318010103180101031802010315040002120700030E0A +00030B0D000207100000071000000710000007100000030F0002000D090600 +0C1306000C1C04000C2402000C2D01000C3800000B4600000B5600000B6701 +000B7902000A8E040009AB050009AB050009AB050009AB050009AB05150900 +0315090003150900031509000315090003150900031509000314090003100D +00020C10000108120000091200000912000009120000091200000913000005 +11000200100606000F1007000F1A060010230300102C01000F3700000F4400 +000F5400000F6401000E7603000E8B05000CA906000CAC06000CAC06000CAC +06000CAC060F1200010F1200010F1200010F1200010F1200010F1200010F12 +00010E1200010A1400000A1400000A1400000A1500000B1500000B1500000B +1500000B160000071400020012030600130D08001317070014210500142A02 +0013350000134200001351000013610100127303001288060010A708000FAE +08000FAE08000FAE080010AE080B1600000B1600000B1600000B1600000B16 +00000B1600000B1600000B1600000C1700000C1700000C1800000C1800000C +1800000D1800000D1900000D1900000A1800010115010700160A0800181407 +00181E0500182803001833010018400000174F0000175F0200177004001786 +070015A40A0014B00A0014B00A0014B00A0014B00A0D1A00000D1A00000D1A +00000D1A00000D1A00000D1A00000D1A00000D1A00000E1A00000E1B00000E +1B00000E1B00000E1C00000E1C00000E1C00000E1D00000C1C000002180006 +001A0807001B1108001D1B06001D2503001D3101001D3E00001C4D01001C5D +02001C6E04001C8307001AA20B0019B50C0019B50C0019B50C0019B50C0F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F +1E00000F1F00000F1F0000101F000010200000102000001020000010210000 +0E210000051C0004001C050800200E08002218060023230400232E0200233B +0000224A0100235A0200236B040023810600219F0A001FB90C001FB90C001F +B90C001FB90C10220000102200001022000010220000102200001022000010 +22000011220000112200001123000011230000112400001124000011240000 +112500001125000010250000082400030020020900250B0700261507002820 +0500292B02002B3801002A4801002A5802002B6903002A7E0500299C080027 +BC0A0027BC0A0027BC0A0027BC0A1227000012270000122700001227000012 +27000012270000122700001227000012270000122800001228000012290000 +1329000013290000132A0000132A0000112A00000B2A000202280109002B08 +08002D1207002E1C0500302703003334020036430100355502003567030035 +7C0300339A040032C2050032C2050032C2050032C205132C0000132C000013 +2C0000132C0000132C0000132C0000132C0000132C0000142C0000142D0000 +142D0000142E0000142E0000142F0000142F000014300000133000000D3100 +01032F00090030060A00350F070036180600382304003C2F0300413E030041 +50030040640200417B0100409A010041D2010041D2010041D2010041D20115 +32000015320000153200001532000015320000153200001532000015320000 +15330000163400001634000016350000163500001636000016360000163700 +001537000010390000063700080037040C003C0C090040150600411F050045 +2A04004A3904004C4B04004D6103004F7A0000509A00004ED900004EE50000 +4EE500004EE600173A0000173A0000173A0000173A0000173A0000173A0000 +173A0000173A0000173B0000183B0000183C0000183D0000183D0000183E00 +00183E0000193F00001840000012410000094100070040020E00450A0B004B +1207004E1B06005125060055330600584506005B5B04005F76000061950100 +5DC900005CED00005DED00005DED0019430000194300001943000019430000 +194300001943000019430000194300001A4400001A4400001A4500001A4600 +001A4600001B4700001B4800001B4800001A490000154C00000D4D0005014C +000F0051070D00580F09005E18060062220500652E0500683D05006B540400 +6F6E0000728C000070BB00006FF1000070F2000070F2001C4C00001C4C0000 +1C4C00001C4C00001C4C00001C4C00001C4C00001C4D00001C4D00001C4E00 +001C4F00001D5000001D5100001D5100001D5200001D5300001D5400001857 +0000115A0004065C000C0060040E00670B0A0070130700771D04007C280200 +7D3501007F490000826300008784000088B6000085FF000086FF000086FF00 +1E5800001E5800001E5800001E5800001E5800001E5800001E5800001E5800 +001E5900001F5A00001F5B00001F5C00001F5D00001F5D00001F5E00001F5F +00001F6000001B650000156900020C6D00070271000D0079050B00830C0700 +8D140400941E0100972B0000993C00009B570000A27A0000A6AA00009DFE00 +009DFE00009DFE002065000020650000206500002065000020650000206500 +002065000021650000216600002168000021690000216A0000216B0000216C +0000226C0000226D0000226E00001D750000197C0000138400010B8B000503 +930008009B030700A9080300B80F0100C61A0000D22A0000E1410000E66500 +00E98C0000E2FF0000E0FF0000E1FF00> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410014003F001B004000210042002800490031004E003B00550047005A +0057005C0069005B00800058009F005D00E8005E00FD005E00FD005E00FD00 +5E00FD005E00FD004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410014003F001B004000210042002800490031004E +003A00550047005A0057005C0069005B007F0058009E005B00DE005E00FD00 +5E00FD005E00FD005E00FD005E00FD00410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410014003F001A004000210042 +002800490031004E003A00550047005A0056005C0068005B007E0058009C00 +5A00D5005E00FD005E00FD005E00FD005E00FD005E00FD0041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410014003F +001A004000210042002800490030004E003A00550046005A0056005C006800 +5C007D0058009B005A00D0005E00FD005E00FD005E00FD005E00FD005E00FD +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F001A003F00210042002800480030004E003A0054004600 +5A0055005C0067005C007C00580099005900CC005E00FD005E00FD005E00FD +005E00FD005E00FD0041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F001A003F0021004200280048003000 +4E00390054004600590055005C0067005C007B00580098005800C9005B00FF +005900FF005700FF005600FF005500FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F001A003F002100 +42002800480030004D00390054004500560054005600660053007C004D0099 +004B00CC004B00FF004A00FE004800FD004700FD004600FC00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F001A003F0021004100270042002E00460037004A0043004A005400490067 +0047007E0042009B004000CA003E00F7003C00F5003B00F5003A00F5003900 +F4004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003C0019003A001F00380026003A002D003C0036003E0042 +003E0053003C0068003A00800037009C003400C8003200EE003100ED003000 +EC002F00EC002E00EB00410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003A0011003500170032001E003100240131002C +003100360031004200300054002E0068002C007F002A009B002900C3002700 +E6002600E5002500E4002500E4002400E30041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003900110034000F0031000F002E0015002A001C +022800230429002C012800370026004400240055002100670020007C001F00 +97001E00BB001E00DD001D00DB001C00DA001B00D9001B00D8004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003E0012003900110034000F0030000E002C000D0029000D +002600130123001A042100220421002C001E0038001C004500190055001700 +65001500780015008F001500AE001400CF001400CD001300CC001200CA0012 +00CA0041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003A00110034000F0030000E002C000D0028000C +0025000B0022000A001F0012031C0019041A00220319002C00160037001300 +4300100052000E0062000D0073000C0087000B00A1000B00BD000A00BC000A +00BA000900B9000800B8004000120040001200400012004000120040001200 +4000120040001200400012003C0011003600100030000E002C000D0028000C +0024000B0021000A001D0009001A0008001700100415001804120022021000 +2B000D0034000A003F0008004D0006005E0005006E0003007F000200980002 +00AE000201AD000101AD000101AD000101AC00350010003500100035001000 +350010003500100035001000350010003500100032000F002D000D0028000C +0024000B0020000A001C0008001800070015000600130005000F000E040C00 +18030A0020010700280004002F00020039000100480000015B0000016C0000 +017C00000195000001AC000001AC000001AC000001AC000001AC002C000D00 +2C000D002C000D002C000D002C000D002C000D002C000D002C000D0029000C +0025000B0020000A001B0008001700070014000600110004000F0003000D00 +020006000E020300150101001D000000260000002D00000037000000470000 +015A0000016B0000017B00000293000001AB000001AC000001AC000001AC00 +0001AC0024000B0024000B0024000B0024000B0024000B0024000B0024000B +0024000B0021000A001C0008001700070013000500100004000E0002000C00 +0100060000000000000000000E000000140000001D000000250000002C0000 +003600000146000001590000016A000002790000028F000002A9000002AC00 +0002AC000002AC000002AC001A0008001A0008001A0008001A0008001A0008 +001A0008001A0008001A0008001800070013000501100003010E0102010B02 +00010204000002050000020600000206000000030C020003120200031B0100 +03240100032B00000335000003440000045400000467000004760000048B00 +0003A6010003AB010003AB010003AB010003AB011100020211000202110002 +021100020211000202110002021100020211000202100101020E0300010905 +0002040B0000040C0000040C0000040D0000040D0000050D00000009070300 +061104000619030006220200062A0100063400000641000007500000076300 +00077401000687010005A3020005AB020005AB020005AB020005AB020C0700 +020C0700020C0700020C0700020C0700020C0700020C0700020C0700020A0A +0002050E0000050E0000060E0000060F0000060F0000060F0000060F000007 +0F0000000D0304000A0E06000A1705000A2003000A2901000A3200000A3F00 +000A4E00000A6000000A71010009840200089F040007AB040007AB040007AB +040007AB040710000007100000071000000710000007100000071000000710 +00000710000007100000071000000810000008110000081100000811000008 +110000081200000912000001100104000E0B07000E1506000E1E04000E2702 +000E3100000E3D00000D4C00000D5C00000D6D02000D8104000B9A05000AAB +06000AAB06000AAB06000AAB06091200000912000009120000091200000912 +000009120000091200000912000009130000091300000A1300000A1300000A +1400000A1400000A1400000A1500000B150000031200040011080700121207 +00121C060012250300122F0100123B00001249000011590100116A0200117E +0400109707000EAD08000EAD08000EAD08000EAD080B1600000B1600000B16 +00000B1600000B1600000B1600000B1600000B1600000B1600000B1600000C +1700000C1700000C1700000C1800000C1800000C1800000C18000005160003 +0015050700160F08001719060017230400172D010017390000164700001656 +010016670200167B05001594080013AF0A0013B00A0013B00A0013B00A0D19 +00000D1900000D1900000D1900000D1900000D1900000D1900000D1900000D +1A00000D1A00000E1A00000E1B00000E1B00000E1B00000E1C00000E1C0000 +0E1C0000081A000200180207001A0B08001C1607001C2005001D2A02001C36 +00001C4400001C5401001C6403001C7805001B91090018B40C0018B40C0018 +B40C0018B40C0F1D00000F1D00000F1D00000F1D00000F1D00000F1D00000F +1D00000F1D00000F1E00000F1E00000F1F00000F1F0000101F000010200000 +1020000010200000102000000B200001021B0107001E09070020120800221D +0600232703002334010022420100225201002262030023750500228F08001F +B90C001FB90C001FB90C001FB90C1122000011220000112200001122000011 +22000011220000112200001122000011220000112300001123000011240000 +11240000112400001125000011250000122500000D26000004220006002205 +0800260F070027190600292404002A3002002B3E01002A4F01002B6002002B +7304002A8C060028B40A0027BC0A0027BC0A0028BC0A122700001227000012 +27000012270000122700001227000012270000122700001227000012280000 +122800001329000013290000132A0000132A0000132A0000132B00000F2B00 +00072A00050028030A002D0C07002E15060030200400322C0200363A010037 +4B0200365D020036700300358A030034B2040034C3040034C3040034C30414 +2D0000142D0000142D0000142D0000142D0000142D0000142D0000142D0000 +142D0000142E0000142E0000142F0000142F00001430000015300000153100 +0015310000123200000A320003002F010C003309090037120600381C05003B +270400403403004445030043590300436E02004389000045B5000044D60000 +44D6000044D700163400001634000016340000163400001634000016340000 +16340000163400001634000016350000163600001636000016370000173800 +00173800001739000017390000143A00000E3A00020238000C003B070C0040 +0F080043180600452205004A2F04004E3F050050540400526C020054870000 +54B2000051E9000051E9000051E900183D0000183D0000183D0000183D0000 +183D0000183D0000183D0000183D0000183D0000183E0000183E0000193F00 +00194000001940000019410000194200001942000017430000114500010643 +000B0045040E004B0C0A0051150700541E0600572906005B3806005E4C0600 +626602006582000065A8000062EA000062E9000062E9001A4600001A460000 +1A4600001A4600001A4600001A4600001A4600001A4600001A4700001B4800 +001B4800001B4900001B4A00001B4B00001C4B00001C4C00001C4C0000194E +0000145100000A5200080053020F0059090C0061110800681A05006C250400 +6E32040070430400745C0200787900007A9F000078FC000078FC000079FC00 +1D5100001D5100001D5100001D5100001D5100001D5100001D5100001D5100 +001D5200001D5300001D5400001E5400001E5500001E5600001E5700001E58 +00001E5800001C5A0000175F00000F6200050464000D006A040D00720B0900 +7C140500831E0300872A0100893900008A5000008E6E0000959700008FED00 +008FFF00008FFF001F5E00001F5E00001F5E00001F5E00001F5E00001F5E00 +001F5E00001F5E00001F5F0000206000002061000020620000206300002064 +00002065000021650000216600001F6900001A6F0000147500020B7A000702 +80000B0089040900930A06009E110200A71C0000AC2A0000AC3F0000B55F00 +00BE8A0000B9CD0000B0F70000B1F700> +] 4 { dup 0.1 lt { 1.2 mul 0.02 sub } if + dup 0 lt { pop 0 } if + } bind dup dup dup ] +/RenderingIntent (Perceptual) +>> +setcolorrendering diff --git a/crd/zjs/2300w-1200@150-l250-kx,ucr100,75-per.crd b/crd/zjs/2300w-1200@150-l250-kx,ucr100,75-per.crd new file mode 100644 index 0000000..01770ca --- /dev/null +++ b/crd/zjs/2300w-1200@150-l250-kx,ucr100,75-per.crd @@ -0,0 +1,4684 @@ +<< +/ColorRenderingType 1 +/BlackPoint [0.000000 0.000000 0.000000] +/WhitePoint [0.964200 1.000000 0.824900] +% Bradford Cone Space +/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] +/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ] +% VonKries-like transform in Bradford Cone Space +/TransformPQR [ +{exch pop exch 3 get mul exch pop exch 3 get div} bind +{exch pop exch 4 get mul exch pop exch 4 get div} bind +{exch pop exch 5 get mul exch pop exch 5 get div} bind +] +/EncodeLMN [ +{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +] +/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] +/EncodeABC [ +{ 116 mul 16 sub 100 div } bind +{ 500 mul 128 add 255 div } bind +{ 200 mul 128 add 255 div } bind +] +/RenderTable [ 33 33 33 [ +<3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600 +E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B06 +00E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B +0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E23B0600E2 +3B0600E23B0600E23B0600E23B0600E2> + + + + + + + + +<9F3D0000A03E0000A13F0000A6420000AC460000B3490000BA4B0000C34D00 +03CC4A000FD540001CD531002CC71D0042BB06045AB300185AB5002E56C200 +4C55BF006C52B0008E52A300B04CA606FC419D0BFF399D0BFF399D0BFF399D +0BFF399D0BFF399D0BFF399D0BFF399D0BFF399D0BFF399D0BFF399D0BFF39 +9D0BFF399D0BFF399F3D0000A03E0000A13F0000A6430000AC460000B24900 +00BA4C0000C34D0003CC4A000FD541001CD631002CC81E0042BB06045AB400 +185AB5002E56C2004B55C0006B52B1008E52A300AF4CA605FB419D0BFF399D +0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF39 +9D0CFF399D0CFF399D0CFF399D0CFF39A03D0000A03E0000A13F0000A64300 +00AC460000B2490000BA4C0000C34E0002CC4B000ED543001CD834002BCA20 +0041BE07025AB500165BB6002C57C1004956C1006A53B2008D53A400AF4DA5 +05F9439E0DFF399E0DFF399E0DFF399E0DFF399E0DFF399E0DFF399E0DFF39 +9E0DFF399E0DFF399E0DFF399E0DFF399E0DFF399E0DFF39A03E0000A03E00 +00A1400000A6430000AC460000B24A0000BA4C0000C34E0002CC4C000ED644 +001BD936002ACB220040C008015AB500145DB6002B58C1004757C3006854B3 +008A54A600AE4EA504F7459F0EFF399F0EFF399F0EFF399F0EFF399F0EFF39 +9F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF +39A03E0000A03F0000A1400000A6440000AC470000B24A0000BA4D0000C24F +0002CC4D000DD646001ADA380029CD24003EC20A005AB600135EB6002959C0 +004458C5006655B4008855A700AD4FA403F546A00FFF3AA00FFF3AA00FFF3A +A00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF +3AA00FFF3AA00FFF3AA03E0000A03F0000A1410000A6440000AB470000B24A +0000B94D0000C2500001CC4E000CD7480019DB3A0029D027003DC40C0058B7 +00115FB600275AC0004259C6006555B5008656A800AD51A402F348A110FF3A +A110FF3AA110FF3AA110FF3AA110FF3AA110FF3AA110FF3AA110FF3AA110FF +3AA110FF3AA110FF3AA110FF3AA110FF3AA03F0000A03F0000A1410000A644 +0000AB480000B24B0000B94E0000C2500001CC4F000CD84A0018DC3D0028D2 +29003CC60F0056B8000F60B600255CBF00405AC7006357B6008457A900AC52 +A301F24AA210FF3CA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF +3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA03F0000A040 +0000A2410000A6450000AB480000B14B0000B94E0000C2510001CC51000BD8 +4C0017DE3F0026D52C003AC8130054B9000D61B700235DBE003D5BC9006058 +B7008158AB00AB53A200EE4CA20FFF3DA111FF3CA111FF3CA111FF3CA111FF +3CA111FF3CA111FF3CA111FF3CA111FF3CA111FF3CA111FF3CA111FF3CA111 +FF3CA0400000A0400000A2420000A6450000AB480000B14B0000B84F0000C1 +520001CC52000AD84E0016DF430025D8300038C9170051BB000A63B700215F +BD003A5CCA005D5AB8007E5AAD00A955A200E94EA20FFF3FA111FF3DA111FF +3DA111FF3DA111FF3DA111FF3DA111FF3DA111FF3DA111FF3DA111FF3DA111 +FF3DA111FF3DA111FF3DA0400000A1410000A2420000A6460000AB490000B1 +4C0000B84F0000C1530001CC540009D9510015E1460024DA340036CA1B004E +BF040862B8001E60BD00365ECC00595BBA007A5CB001A656A200E251A20EFF +41A111FF3FA111FF3FA111FF3FA111FF3FA111FF3FA111FF3FA111FF3FA111 +FF3FA111FF3FA111FF3FA111FF3FA111FF3FA1410000A1410000A2430000A5 +460000AA490000B14D0000B8500000C1530001CB550008D8530014E34B0022 +DE390034CB21004AC4070661B9001A62BD003260CE00555DBE00765DB301A3 +58A100DB53A410FF43A111FF41A111FF41A111FF41A111FF41A111FF41A111 +FF41A111FF41A111FF41A111FF41A111FF41A111FF41A111FF41A1420000A1 +420000A2440000A5470000AA4A0000B04D0000B7510000C0540000CB570007 +D8560012E44F0020E23F0031CF270047CB0C0360BB001665BD002E62D00050 +60C300725EB702A05BA200D456A611FF45A111FF44A111FF44A111FF44A111 +FF44A111FF44A111FF44A111FF44A111FF44A111FF44A111FF44A111FF44A1 +11FF44A1420000A1430000A2440000A5470000AA4B0000AF4E0000B6520000 +BF550000CA580005D7590011E453001DE745002ED52F0043D311015FBE0011 +68BC002964CD004962CA006D60BB019A5DA500D159A112FF499813FF499515 +FF499516FF499516FF499516FF499516FF499516FF499516FF499516FF4995 +16FF499516FF499516FF49A1430000A1440000A2450000A5480000A94B0000 +AF4F0000B5520000BE570000C95A0004D65C000FE559001BEA4C002BDD3800 +40D319005AC2000B6BBD002367CB004166B700646AA000906C7700AC6B5F00 +E66A5800F7695400F66A5400F66A5400F66A5400F66A5400F66A5400F66A54 +00F66A5400F66A5400F66A5400F66A5400F66AA1440000A1440000A2460000 +A4490000A84C0000AE500000B4530000BD580000C85C0002D45E000DE35D00 +19EE540027E642003BD1240054C802056C9C00167583002D7B6F00477D6500 +6D814E009A7D4000E0763B00FF743800FF753800FF753800FF753800FF7538 +00FF753800FF753800FF753800FF753800FF753800FF753800FF75A1450000 +A1450000A2460000A4490000A84D0000AD500000B3540000BC590000C65E00 +01D261000BE1620016F15D0023EC4C0037BF36004E9520006B5E0600854700 +158E37002C8E2D0048902300708F1A00BF8A1800FF861500FF871400FF8714 +00FF871400FF871400FF871400FF871400FF871400FF871400FF871400FF87 +1400FF87A1460000A1460000A1470000A44A0000A74E0000AC510000B25500 +00BA5A0000C5600000D0640008DE660013EF630020CA5C0032994B00497534 +00634A21007D170B00960408189A020D339602135E96001AC78B1A29FF721A +2BFF721A2BFF711A2BFF711A2BFF711A2BFF711A2BFF711A2BFF711A2BFF71 +1A2BFF711A2BFF711A2BFF71A1470000A1470000A1480000A34B0000A64E00 +00AB520000B1560000B85B0000C2620000CE680005D66B0011C570001DA76C +002E855F0045644D005D403D007710260187002615900030338F0038618900 +399D7E093EF26F083FF26F073FF26F073FF26F073FF26F073FF26F073FF26F +073FF26F073FF26F073FF26F073FF26F073FF26FA1470000A1480000A14900 +00A34C0000A54F0000A9530000AF570000B65D0000C0640000C36B0005B673 +0011A878001C9278002A7975003D5C6C00573759006D0B4300820047168600 +5336820059657C005FB8700059FF69005AFF69005AFF69005AFF69005AFF69 +005AFF69005AFF69005AFF69005AFF69005AFF69005AFF69005AFF69A14800 +00A1490000A14A0000A24D0000A5500000A8540000AE580000B45E0000B366 +0000A9710008A17900109581001985870023718A00335B91004E337800610B +6400790069187900713873007F696E0793E8601E90FF4C1E92FF4B1E92FF4B +1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF +4B1E92FF4BA1490000A14A0000A14B0000A24E0000A3510000A6550000AB5A +0000A86100009F6B0004987500099180000D888A00147B95001A689A002651 +9C003A3294004F0B8501680087186A0096366400A0605E00A49A5918BBFF41 +17BCFF4117BCFF4117BCFF4117BCFF4117BCFF4117BCFF4117BCFF4117BCFF +4117BCFF4117BCFF4117BCFF41A14A0000A14B0000A14C0000A14F0000A252 +0000A5560000A15C000096650002906F00048C7B0006868700097D94000D73 +A1001163AB001B4BAD002C32B0003F0FA8005500A4155B00C1325600CA584F +04E9944717ECDD351CF2E6301CF3E6301CF3E6301CF3E6301CF3E6301CF3E6 +301CF3E6301CF3E6301CF3E6301CF3E6301CF3E630A14B0000A14B0000A14D +0000A14F0000A15300009B580000906000008969000285740002828100027C +8E0003739D000570B0000763C2000F45C4002131D2002F18E6004200E60C4D +12FF3C3A09FF583B12FF8B310AFFB03106FFB23206FFB23206FFB23206FFB2 +3206FFB23206FFB23206FFB23206FFB23206FFB23206FFB23206FFB232A14C +0000A14C0000A14D0000A0500000995500008C5C0001846400007E6D00007C +790000778600006F9500006FA800006DBF000062D900053FD4001A2CE60027 +16FF003902FF11411DFF49250AFF563012FF842809FFA62A05FFB22B05FFB2 +2B05FFB22B05FFB22B05FFB22B05FFB22B05FFB22B05FFB22B05FFB22B05FF +B22B05FFB22BA14D0000A14D0000A14E0000995200008A590001805F000079 +67000075700000717C00006A8800006397000062A800005EBE00004FCF000B +34D3001A24EB00280EFF023701FF1C3A17FF4B230DFF60280FFF872407FFA9 +2602FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FF +B12702FFB12702FFB12702FFB127A14E0000A14E00009B4F00008A5500007F +5B000077610000706900006C730000667F0000608B00005A98000057A90000 +53BE00013FCA000F2BD6001A1DF0002806FF073405FF272E14FF511F16FF71 +1C0CFF8A2006FFA42200FFB12400FFB12400FFB12400FFB12400FFB12400FF +B12400FFB12400FFB12400FFB12400FFB12400FFB124A14E00009D4E00008B +5200007F570000755D00006D630000686B0000637600005E820000588E0000 +549C00004FAB000047BD000435CC000F25DB001B17F6002702FF112F0BFF32 +2314FF581910FF731A0DFF8D1A08FFA71C00FFB22000FFB22000FFB22000FF +B22000FFB22000FFB22000FFB22000FFB22000FFB22000FFB22000FFB220A0 +4E00008C5100007F540000755900006C5E000065650000606E00005C790000 +57850000529200004D9F000048AD00003DBF00062CCF000F1EE2001B0FFA00 +2700FF192A09FF361E10FF5A1715FF780E15FF910B04FFA61A00FFB21D00FF +B21D00FFB21D00FFB21D00FFB21D00FFB21D00FFB21D00FFB21D00FFB21D00 +FFB21D00FFB21D8D51000080530000765500006B5A0000646000005E680000 +5A710000557D0000508800004B95000046A1000040B0000034C4000625D400 +1018E8001A04FB032700FF202313FF46100DFF5E130EFF771015FF910504FF +A11600FFB61900FFB81900FFB81900FFB81900FFB81900FFB81900FFB81900 +FFB81900FFB81900FFB81900FFB8197F530000755500006D570000645C0000 +5D620000586B0000547500004F8000004A8C0000449800003FA5000038B500 +012CC900061ED9001012ED001A00FB0F2200FF241E13FF4B090CFF600F13FF +7A0214FF900104FFA01206FFBB110BFFC40D0BFFC40D0BFFC40D0BFFC40D0B +FFC40D0BFFC40D0BFFC40D0BFFC40D0BFFC40D0BFFC40D755500006C560000 +655800005D5E000058650000536E00004E79000049840000449000003E9B00 +0037A800002FBB000024CD000718DE001009F0011B00FC171C0AFF310F12FF +500309FF620B0DFF780510FF8D0000FF9C100EFFC10612FFC80212FFC80212 +FFC80212FFC80212FFC80212FFC80212FFC80212FFC80212FFC80212FFC802 +6B560000645700005D5A000057600000526800004D720000487E0000438800 +003D930000369F00002FAD000027C000011CD0000811E2001000F1051B00FE +1C170DFF38070FFF510106FF620A09FF77050CFF8A0003FF9B0A04FFB30A07 +FFB70707FFB70707FFB70707FFB70707FFB70707FFB70707FFB70707FFB707 +07FFB70707FFB707635800005D590000585C0000526300004D6C0000487700 +00428200003C8C0000359600002EA3000027B2000020C3000115D4000809E5 +001100F40E1500FF211209FF39060AFF520009FF660008FF770008FF880005 +FF970404FFA90504FFAB0504FFAB0504FFAB0504FFAB0504FFAB0504FFAB05 +04FFAB0504FFAB0504FFAB0504FFAB05> +<9C3700009D3700009D380000A13B0000A73F0000AE420000B6440000BD4500 +01C241000CC835001AC827002ABB140040AE010655AD001C51B000314DBA00 +4D4BBC006B49AE008948A200A542A002DB3A9803FF349602FF339602FF3396 +02FF339602FF339602FF339602FF339602FF339602FF339602FF339602FF33 +9602FF339602FF339D3700009D3800009D390000A13C0000A73F0000AE4200 +00B6450000BD460001C342000CC937001ACA280029BD16003FAF020556AE00 +1B52B000304EBA004C4CBD006A49AF008849A200A444A001D93C9904FF3596 +03FF349603FF349603FF349603FF349603FF349603FF349603FF349603FF34 +9603FF349603FF349603FF349603FF349D3800009D3800009E390000A13C00 +00A7400000AE430000B6450000BE470001C343000BC9390019CC2A0029BE18 +003EB1020456AE001953B1002E4FBA004A4DBD00694AAF00874AA300A4459F +01D73D9A04FF369603FF349603FF349603FF349603FF349603FF349603FF34 +9603FF349603FF349603FF349603FF349603FF349603FF349D3800009D3900 +009E3A0000A13D0000A7400000AE430000B6460000BE480001C444000BCA3A +0019CD2C0028C01A003DB2030257AF001854B1002D50BA00484EBE00674BB0 +00854BA300A3469F01D43E9A05FF369704FF359704FF359704FF359704FF35 +9704FF359704FF359704FF359704FF359704FF359704FF359704FF359704FF +359D3900009E3900009E3A0000A23D0000A7410000AF440000B6460000BE48 +0000C445000ACB3C0018CF2E0027C21C003CB4030157AF001655B1002C51BA +00464EBF00664CB100844CA400A2479F01D23F9B05FF379704FF359704FF35 +9704FF359704FF359704FF359704FF359704FF359704FF359704FF359704FF +359704FF359704FF359E3900009E3A00009E3B0000A23E0000A8410000AF44 +0000B6470000BE490000C446000ACB3E0017D0300026C41E003BB6050056B0 +001457B2002A52B9004450C100644DB200824DA500A1499F01D0409C06FF38 +9805FF369805FF369805FF369805FF369805FF369805FF369805FF369805FF +369805FF369805FF369805FF369805FF369E3A00009E3B00009F3C0000A23E +0000A8420000AE450000B6470000BD4A0000C5470009CC400017D1320025C7 +200039B8080054B0001258B2002853B9004151C200624EB300804EA600A04B +9F01CD429D07FF399805FF379805FF379805FF379805FF379805FF379805FF +379805FF379805FF379805FF379805FF379805FF379805FF379E3B00009F3C +00009F3D0000A23F0000A8420000AE450000B6480000BD4A0000C5490008CD +420016D3350024CA230037BC0C0052B100105AB3002655B9003E52C3005F4F +B4007D50A7009F4C9E00CA449F08FF3A9907FF389A07FF389A07FF389A07FF +389A07FF389A07FF389A07FF389A07FF389A07FF389A07FF389A07FF389A07 +FF389F3C00009F3D00009F3D0000A2400000A8430000AE460000B5490000BD +4B0000C64B0007CE450015D5380023CD260035BF10004FB2000D5CB3002357 +B8003B54C4005C51B6007A51A9009E4E9F00C746A009FF3B9B09FF389B09FF +389B09FF389B09FF389B09FF389B09FF389B09FF389B09FF389B09FF389B09 +FF389B09FF389B09FF389F3D00009F3D0000A03E0000A2400000A8440000AE +470000B54A0000BD4C0000C64D0006CF470013D73C0021D02A0033C215004C +B6020A5CB4002059B8003756C5005853B8007753AB009C50A000C449A20AFF +3C9D0BFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0C +FF399D0CFF399D0CFF399D0CFF399D0CFF39A03D0000A03E0000A03F0000A3 +410000A8440000AE480000B54B0000BD4D0000C64E0005CF4A0012D9410020 +D52F0031C51A0048BB04075CB5001C5BB8003358C6005356BA007355AE0099 +52A100C04BA50BFF3E9F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0E +FF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF39A03E0000A0 +3F0000A03F0000A3420000A8450000AD480000B44B0000BC4E0000C6500004 +D04E0010DA45001ED935002ECA200044C007045CB600185EB8002F5AC7004E +58BE006F57B1009655A200BD4FA80DFF3FA111FF3AA111FF3AA111FF3AA111 +FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA1 +11FF3AA03F0000A0400000A0400000A3430000A7460000AD490000B44D0000 +BB4F0000C5520003D051000FDC4A001CDF3C002CD0260041C80B015CB90013 +61B8002A5DC600485BC4006A59B50091589D00BB558F07F54D9114FF418E15 +FF428B16FF438B16FF438B16FF438B16FF438B16FF438B16FF438B16FF438B +16FF438B16FF438B16FF43A0400000A1410000A1410000A3440000A7470000 +AC4A0000B34E0000BB510000C4540002D054000DDD500019E2430029D72F00 +3DCA130057BC000D64B9002560B5003E62A7005E67950084697500A2675E00 +D3655500FB635200FB645000FB655000FB655000FB655000FB655000FB6550 +00FB655000FB655000FB655000FB655000FB65A1410000A1420000A1420000 +A3450000A7480000AC4B0000B24F0000BA520000C3560001CF57000BDD5500 +16E64B0025DE390038CB1D0050B403056A8F0015717C002B77690042785E00 +637A4C008A784000C8733A00FF6E3800FF6F3600FF703600FF703600FF7036 +00FF703600FF703600FF703600FF703600FF703600FF703600FF70A1420000 +A1430000A1430000A3460000A6490000AB4C0000B14F0000B8530000C25700 +00CE5A0009DC5A0014E9530021E6430033B231004A8A1D0067590500814200 +1488330029872A004289220064891A009C851800FF7E1500FF7F1300FF8013 +00FF801300FF801300FF801300FF801300FF801300FF801300FF801300FF80 +1300FF80A1440000A1440000A1450000A3470000A54A0000AA4D0000B05100 +00B7550000C0590000CC5D0006D95F0011DD5C001EBA55002F924500456D2F +005E441F00781509009104071794010C2F90000F4F8E0017988B1725FF6D16 +26FF6D1627FF6C1627FF6C1627FF6C1627FF6C1627FF6C1627FF6C1627FF6C +1627FF6C1627FF6C1627FF6CA1450000A1450000A1460000A2480000A54B00 +00A94E0000AF520000B5560000BF5B0000CA600003C7650010B869001C9D64 +002C7E5700415E4700583A3700700E24018200241489002C2F890033588400 +378D7C0235FB6B0337FF6A0439FF690439FF690439FF690439FF690439FF69 +0439FF690439FF690439FF690439FF690439FF69A1460000A1460000A14700 +00A2490000A44C0000A84F0000AD530000B3570000BC5D0000B7640005AC6B +00119E70001C8A6F0029726C003B5560005232510067093D007D0042158000 +4D327D00535C780057966E0053F2640054FF630055FF630055FF630055FF63 +0055FF630055FF630055FF630055FF630055FF630055FF630055FF63A14700 +00A1470000A1480000A14A0000A34D0000A7500000AB540000B2590000A961 +0000A169000A987100118C7800197C7D0024697F0033517E004B2E6C005D08 +5B017500611774006A356F0073606A017798611885FF4B1883FF491884FF48 +1884FF481884FF481884FF481884FF481884FF481884FF481884FF481884FF +481884FF48A1480000A1480000A1490000A14B0000A34E0000A5510000AA55 +0000A05D000097650005906E000A8978000E7F8100147189001D608E00284A +8D003A2B86004E077A0166007E18660089366100935C5A00948C5512A8FF42 +10A2FF400FA2FF400FA2FF400FA2FF400FA2FF400FA2FF400FA2FF400FA2FF +400FA2FF400FA2FF400FA2FF40A1490000A14A0000A14A0000A14C0000A24F +0000A4520000995900008F61000289690005847400077D7E0009748A000E69 +940014599B001F449E002D2B9E003F099701540097175600AA325200B3554B +00BF874412E0F33615D0FF3115D0FF3115D0FF3115D0FF3115D0FF3115D0FF +3115D0FF3115D0FF3115D0FF3115D0FF3115D0FF31A14A0000A14B0000A14B +0000A14D0000A1500000945600008A5D0001826400017D6E00027A79000373 +8500046A92000762A0000B54AA00163EB000232CBB003011C0004200C21148 +00E52E4500EA513E10FF912F06FFAF311CFDFF241CFEFF231CFEFF231CFEFF +231CFEFF231CFEFF231CFEFF231CFEFF231CFEFF231CFEFF231CFEFF23A14B +0000A14C0000A14C0000A04E000092530000865A00007D6100007768000073 +7300006E7F0000668C0000619B00005FAF000059C600043FCC00142BDA001F +1BF7002F04FF0D3A0CFF332D04FF492F13FF7E2209FF9F2502FFB12702FFB1 +2702FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FFB12702FF +B12702FFB127A14D0000A14D0000A14D000092510000845700007A5D000072 +6400006D6C000069770000638300005C910000589F000054B000004BC40006 +35CF001424E0002013FB002E01FF163415FF431E15FF621C10FF811E0AFF9F +2000FFB12300FFB12300FFB12300FFB12300FFB12300FFB12300FFB12300FF +B12300FFB12300FFB12300FFB123A14E0000A14E0000935000008454000079 +590000705F000069660000656F0000607A00005A8700005594000051A20000 +4CB200003EC400092CD200141EE700200BFE032C00FF1E2D15FF4A1811FF67 +1914FF86130AFFA01B00FFB12000FFB22000FFB22000FFB22000FFB22000FF +B22000FFB22000FFB22000FFB22000FFB22000FFB220A14E00009350000084 +520000795600006F5B000067610000626900005D730000587E0000538A0000 +4E97000049A4000043B5000135C7000925D7001418ED001F01FF082B00FF24 +2612FF4F1411FF6A131CFF8A0207FF9E1700FFB11C00FFB41C00FFB41C00FF +B41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C95 +4F0000845200007954000070570000665C0000606300005B6C000057760000 +528200004D8E0000479A000042A700003AB900022CCC00091EDD001411F200 +1F00FF14240AFF321813FF550D0CFF6B1218FF890006FF9B1300FFB11909FF +C61209FFC61209FFC61209FFC61209FFC61209FFC61209FFC61209FFC61209 +FFC61209FFC612845200007954000070560000675900005F5E00005A660000 +556F0000507A00004B86000046910000419D00003AAB000032BF000124D000 +0A18E2001408F4041F00FF1C1E0AFF37120DFF550D0CFF6D0B13FF880006FF +990E00FFAE1515FFE00415FFE00415FFE00415FFE00415FFE00415FFE00415 +FFE00415FFE00415FFE00415FFE004785400006F560000675700005F5A0000 +59610000546900004F7300004A7E0000458900003F95000039A1000032B000 +0029C400011DD4000B11E7001400F50A1D00FF211913FF44020DFF590605FF +6C0D0FFF850005FF970A00FFAC1012FFDB0212FFDB0212FFDB0212FFDB0212 +FFDB0212FFDB0212FFDB0212FFDB0212FFDB0212FFDB026E56000066570000 +5F580000595C0000546400004F6D00004A780000448300003E8D0000389800 +0031A500002AB5000021C7000316D8000B09EA001500F8121700FF25140FFF +460009FF590606FF6E080BFF830007FF960501FFA70B0AFFC4030AFFC4030A +FFC4030AFFC4030AFFC4030AFFC4030AFFC4030AFFC4030AFFC4030AFFC403 +655700005E590000595B0000545F00004E67000049710000447C00003E8600 +0037900000309C000029AA000022BA000019CA00040FDC000B02EC051400FA +181200FF290F0BFF470009FF5C0007FF6F0007FF810007FF920102FFA20603 +FFB20403FFB20403FFB20403FFB20403FFB20403FFB20403FFB20403FFB204 +03FFB20403FFB2045D590000575B0000535D00004F620000496B0000437600 +003D800000378A00002F94000028A0000021AE00001BBD000012CD000508DF +000C00EF0B1000FC1E0D00FF2E0B07FF490005FF5E0004FF6E0004FF7E0004 +FF8F0002FF9E0302FFAC0202FFAC0202FFAC0202FFAC0202FFAC0202FFAC02 +02FFAC0202FFAC0202FFAC0202FFAC02> +<99300000993100009A3100009A320000A0360000A6390000AE3B0000B53D00 +00B9380009BC2C0017BA1F0027AE0E003DA5000A4CA7001E48AB003343B300 +4D41B7006A3FAE00853DA400A0399F00C8339901FF2E9400FF2B9400FF2B94 +00FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B +9400FF2B9400FF2B993000009A3100009A3200009B330000A0370000A73A00 +00AE3C0000B53D0000B9390008BD2E0017BC200027AF0F003CA500084DA800 +1D49AB003244B3004C42B7006840AF00843EA4009F3A9F00C6349A01FE2E94 +00FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B +9400FF2B9400FF2B9400FF2B9400FF2B993100009A3200009A3200009B3300 +00A1370000A73A0000AF3D0000B63E0000BA3A0008BD2F0016BD220026B111 +003BA600074DA8001C4AAC003145B3004B43B8006741AF00833FA4009E3B9E +00C4359A01FE2F9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C +9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9A3100009A3200 +009B3300009B340000A1380000A83B0000AF3E0000B63F0000BB3B0008BE30 +0016BF230025B212003AA700054FA8001B4BAC002F46B3004944B9006642B0 +008240A4009D3C9E00C2369A01FE309400FF2D9400FF2D9400FF2D9400FF2D +9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF +2D9A3200009A3300009B3400009C350000A2390000A83C0000B03F0000B740 +0000BC3D0007BF320015C1250024B5140039A7000450A900194CAC002E47B3 +004745B9006443B1008141A5009B3E9E00BF379B01FE319400FF2E9400FF2E +9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF +2E9400FF2E9400FF2E9A3300009B3300009B3400009C350000A23A0000A93D +0000B03F0000B7410000BC3E0006C0340014C2270023B7170037A8000151A9 +00174EAD002C49B3004546BA006244B2008043A6009A3F9E00BC399C01FE32 +9400FF2F9400FF2F9400FF2F9400FF2F9400FF2F9400FF2F9400FF2F9400FF +2F9400FF2F9400FF2F9400FF2F9400FF2F9B3300009B3400009C3500009C36 +0000A33B0000A93E0000B0400000B7420000BD400006C1370013C4290022BA +190036AB030150AA00154FAD002A4AB3004248BB006046B3007D44A6009841 +9D00B93A9C01FF349400FF309400FF309400FF309400FF309400FF309400FF +309400FF309400FF309400FF309400FF309400FF309400FF309B3400009C35 +00009C3600009D370000A33C0000A93F0000B0410000B8430000BE420005C2 +390013C62C0021BE1C0034AF06004EAB001251AE00284CB3003F49BC005E47 +B4007B46A70097439D00B63C9D02FF359401FF319501FF319501FF319501FF +319501FF319501FF319501FF319501FF319501FF319501FF319501FF319501 +FF319C3500009C3600009D3700009D380000A33C0000A93F0000B1420000B8 +440000BF440004C43C0012C82F0020C21F0032B30A004CAB000F53AE00254E +B2003C4BBD005A49B6007848A80095469D00B33E9F03FF369502FF329502FF +329502FF329502FF329502FF329502FF329502FF329502FF329502FF329502 +FF329502FF329502FF329C3700009D3700009D3800009E390000A33D0000A9 +410000B1430000B9460000C0460003C53F0010CB33001FC6230030B80F0049 +AE010C55AF002251B200384DBE00564BB700754AAA0093489E00B141A103FF +389603FF349603FF349603FF349603FF349603FF349603FF349603FF349603 +FF349603FF349603FF349603FF349603FF349D3800009D3900009E3A00009E +3B0000A33E0000AA420000B1450000B9470000C0480003C642000FCD37001D +CA27002DBD140045B1020956B0001E53B3003450BE00524EB900714CAB0090 +4B9F00AF44A304FF3A9704FF359704FF359704FF359704FF359704FF359704 +FF359704FF359704FF359704FF359704FF359704FF359704FF359E3900009E +3A00009F3B00009F3C0000A4400000AA430000B1460000B8480000C04A0002 +C846000DCF3C001BD02D002BC2190041B6040558B1001A56B4003052BF004D +50BC006C4EAD008D4EA100AD47A505FF3C9805FF379806FF37990AFF369A0D +FF359A0DFF359A0DFF359A0DFF359A0DFF359A0DFF359A0DFF359A0DFF359A +0DFF359E3B00009F3C00009F3D0000A03D0000A4410000AA440000B0470000 +B84A0000C04C0001C949000CD1410019D5330029C81F003EBB060059B20015 +5AB4002B55BE004753C0006851AB0088539500A9518300D34E8813FF3D8614 +FF3D8414FF3E8315FF3E8315FF3E8315FF3E8315FF3E8315FF3E8315FF3E83 +15FF3E8315FF3E8315FF3E9F3D0000A03D0000A03E0000A03F0000A4420000 +AA450000B0480000B74B0000C04E0000C94D000AD3470017D83A0026CE2700 +39C00E0054B5000F5DB5002659A7003B5D9B0058638B007865720097635E00 +C0605A06FD575A09FF565809FF575709FF575709FF575709FF575709FF5757 +09FF575709FF575709FF575709FF575709FF57A03E0000A03F0000A03F0000 +A0400000A4430000AA470000AF4A0000B74D0000BF4F0000C9500008D34C00 +15DC410023D62F0035C618004DA10303688500156D7500297263003E735700 +5A744B007D733F00AF6F3900FF6A3600FF6A3400FF6B3300FF6B3300FF6B33 +00FF6B3300FF6B3300FF6B3300FF6B3300FF6B3300FF6B3300FF6BA03F0000 +A0400000A1410000A1410000A4440000A9480000AF4B0000B64E0000BE5100 +00C8530006D4520012DF4A001FD43B0030A82D00477F1B00635304007D3E00 +13823000278127003E8321005B821B00857F1700EB791400FF781200FF7912 +01FF781201FF781201FF781201FF781201FF781201FF781201FF781201FF78 +1201FF78A1410000A1410000A1420000A1430000A4460000A8490000AE4C00 +00B5500000BD530000C7570003D357000FCB55001CAD4E002C8A3F0041662C +005A3F1C00731309008B0407168E010B2D8A000D4887001379870419E7740D +1FFF6B0C20FF6B0C20FF6B0C20FF6B0C20FF6B0C20FF6B0C20FF6B0C20FF6B +0C20FF6B0C20FF6B0C20FF6BA1420000A1430000A1430000A1440000A44700 +00A74A0000AD4E0000B3510000BB550000C5590002BB5E000FAB60001C945B +002A7850003D584100543632006A0D21017D0022138300282B82002F4F7E00 +3480790032D46A0736FF630838FF620839FF610839FF610839FF610839FF61 +0839FF610839FF610839FF610839FF610839FF61A1440000A1440000A14500 +00A1450000A3480000A64B0000AB4F0000B1520000B8570000AC5E0006A264 +00129568001C826600286C6300394F57004D2E4A006207370077003D147900 +472D78004E54730051836B0050D361004EFF5E004FFF5D0050FF5D0050FF5D +0050FF5D0050FF5D0050FF5D0050FF5D0050FF5D0050FF5D0050FF5DA14500 +00A1460000A1460000A1470000A3490000A54D0000AA500000AD540000A15C +00019863000A8F690011846F00197573002463740032486D00452962005906 +550170005B166F0063326B006B5967006E855F0977EA510F76FE491077FE48 +1078FE471078FE471078FE471078FE471078FE471078FE471078FE471078FE +471078FE47A1470000A1470000A1470000A1480000A24B0000A44E0000A452 +0000985900008F6000058868000A8170000E76780015697E001D5982002942 +7F0038267A004B0571026400761962007F345D0088575700897F500193E748 +0791FF400691FF400591FF400591FF400591FF400591FF400591FF400591FF +400591FF400591FF400591FF40A1480000A1480000A1490000A1490000A24C +00009F50000092560000895D0002826400047C6D00077576000A6C80000E60 +890016518E00213D90002D2591003E058B0252008E1852009A314E00A35147 +00A97E4100B2C43C00A9FF3901AAFF3801AAFF3801AAFF3801AAFF3801AAFF +3801AAFF3801AAFF3801AAFF3801AAFF3801AAFF38A1490000A14A0000A14A +0000A14A00009C4E00008D540000835A00007B60000176680002717200026B +7D0004638900085994000E4A9B001A38A2002426A9003009A8014100AE1443 +00C12E3F00C84E3A05F6893300EBAA3115E2FF2415E2FF2315E3FF2315E3FF +2315E3FF2315E3FF2315E3FF2315E3FF2315E3FF2315E3FF2315E3FF23A14B +0000A14B0000A14B00009C4C00008C52000080570000775D0000706400006B +6D000067780000608400005A92000155A0000349AC000D37B8001627C40020 +16D9002E00E70C370BFC312B08FF4B2812FF7F1E0AFF9E2100FFB12400FFB6 +2400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FF +B62400FFB624A14C0000A14C00009D4D00008B5000007F550000755A00006C +61000066690000627300005C7F0000578C0000529900004EA8000047BA0003 +36CA000D25DA001917F3002501FF112E0AFF322214FF5B1713FF7A150AFF97 +1A00FFAD1F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FF +B21F00FFB21F00FFB21F00FFB21FA14D00009E4E00008B5100007F53000074 +5800006A5D0000646400005F6C00005A77000055830000509000004B9C0000 +46AA00003CBC00042DCE000D1EE000180FF7012400FF192709FF371C0EFF5C +1615FF7D0A0BFF971300FFAD1B00FFB51B00FFB61B00FFB61B00FFB61B00FF +B61B00FFB61B00FFB61B00FFB61B00FFB61B00FFB61BA14E00008A5100007E +530000745500006A590000635F00005D66000059700000547B00004E870000 +4A930000449F00003EAE000034C2000425D3000E18E7001806F9052300FF20 +2113FF470D0BFF5F1312FF7D070CFF960C00FFAE180DFFCF0D0EFFCF0D0EFF +CF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D8B +5100007D540000735500006B560000625B00005C610000576A000052740000 +4D7F0000488B0000429600003CA3000035B300002AC700041DD8000E11EC00 +1800F90F1F00FF251B12FF4C070CFF630B12FF7E000CFF940700FFAB1414FF +E10414FFE10414FFE10414FFE10414FFE10414FFE10414FFE10414FFE10414 +FFE10414FFE1047D5400007255000069560000635800005B5D000056640000 +516D00004C78000047840000418E00003B9A000034A700002DB9000022CB00 +0516DC000E06ED011A00FC17190CFF330B11FF500106FF620C0CFF7C020BFF +920300FFA60F12FFDA0113FFE60113FFE60113FFE60113FFE60113FFE60113 +FFE60113FFE60113FFE60113FFE6017155000068570000615800005C590000 +56600000506800004B720000467D0000408700003A920000339E00002CAC00 +0025BE00001ACE00060FE1000E02F0081600FE1D1409FF35080CFF510007FF +65040AFF7B000AFF900001FFA10907FFBD040FFFE6000FFFE6000FFFE6000F +FFE6000FFFE6000FFFE6000FFFE6000FFFE6000FFFE6006757000060580000 +5A5A0000565C0000506300004B6C00004677000040810000398B0000329500 +002BA2000024B100001DC1000013D2000708E4000F00F30F1200FF210F05FF +370708FF520007FF670006FF790006FF8C0002FF9D0503FFB10304FFBC0204 +FFBC0204FFBC0204FFBC0204FFBC0204FFBC0204FFBC0204FFBC0204FFBC02 +5E590000595B0000545D0000505F00004B670000457100003F7B0000398500 +00318E00002A99000023A600001DB4000016C400010CD4000700E6021000F6 +150D00FF260B03FF390505FF540003FF670003FF770003FF890003FF990201 +FFAA0201FFB50201FFB50201FFB50201FFB50201FFB50201FFB50201FFB502 +01FFB50201FFB502575B0000535E00004F6000004B630000456B00003F7500 +00397F0000318800002A920000239D00001CAA000015B700000FC6000206D7 +000800EA090B00F81B0900FF2A0701FF3C0202FF560001FF670000FF750001 +FF850001FF960001FFA50100FFAD0000FFAD0000FFAD0000FFAD0000FFAD00 +00FFAD0000FFAD0000FFAD0000FFAD00> +<96290000972A0000972B0000972B0000992C00009D2E0000A3300000A93100 +00AD2D0006B0240014AD170025A10700399F000E40A100213DA7003539AE00 +4D38B0006736AB008234A6009E30A400C52B9C00F927A51EFF08A51EFF08A5 +1DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09 +A51DFF09A51DFF09962A0000972B0000972B0000972C0000992D00009E2F00 +00A3310000A9320000AD2E0005B1250014AE180024A20800389F000D41A200 +203EA700343AAE004C38B1006737AC008134A6009C31A400C32C9C00F828A3 +1BFF0CA31BFF0CA31BFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0C +A31AFF0CA31AFF0CA31AFF0CA31AFF0C972A0000972B0000972C0000982C00 +00992E00009E300000A4320000AA330000AE300005B2260013B01A0023A40A +00379F000B42A2001F3FA700323BAE004B39B2006538AD008035A6009B32A3 +00C12D9C00F728A118FF0FA118FF10A117FF10A117FF10A117FF10A117FF10 +A117FF10A117FF10A117FF10A117FF10A117FF10A117FF10972B0000972C00 +00972C0000982D0000992E00009E300000A5330000AB340000AF310005B228 +0013B11B0022A60B00369F000A43A2001E40A700313CAD00493AB2006439AE +007E36A6009A33A300BF2E9C00F6299F14FF149F14FF149F14FF149F13FF14 +9E13FF149E13FF149E13FF149E13FF149E13FF149E13FF149E13FF149E13FF +14972B0000972C0000982D0000982E00009A2F00009F310000A5340000AC35 +0000B0330004B32A0012B31D0021A80E0035A0000845A3001C42A7002F3DAD +00473BB300623AAF007D38A6009834A300BC2F9D00F52A9C10FF189C0FFF19 +9C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF +199C0FFF199C0FFF19972C0000982D0000982E0000982E00009A3000009F32 +0000A6350000AD370000B1350003B42C0011B51F0020AB100033A0000546A3 +001A43A7002D3FAD00453CB400603BB0007C39A6009636A200B8309D00F32B +990BFF1D990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF +1E990AFF1E990AFF1E990AFF1E990AFF1E982D0000982E0000982F0000992F +00009A310000A0340000A7360000AE380000B3370003B62E0010B722001FAE +130032A2010447A4001845A8002B41AD00433EB4005E3DB1007A3BA7009437 +A200B5329D00F02D9605FF239605FF249604FF249604FF249604FF249604FF +249604FF249604FF249604FF249604FF249604FF249604FF24982E0000992F +000099300000993000009B320000A1350000A8380000AF3A0000B4390002B7 +31000FB924001EB2160030A4030346A5001548A8002943AD004040B6005C3E +B200783CA8009239A100B1349E00ED2E9400FF299400FF299400FF299400FF +299400FF299400FF299400FF299400FF299400FF299400FF299400FF299400 +FF29992F000099300000993100009A3100009C330000A2370000A83A0000B0 +3C0000B63C0001B934000EBC27001DB619002EA7060245A500124AA9002645 +AD003D42B7005940B400753EA900903CA100AD369F00EB309400FF2B9400FF +2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400 +FF2A9400FF2A9400FF2A993000009A3100009A3200009A3300009D350000A3 +390000AA3B0000B13E0000B83E0001BB37000DBF2B001BBA1C002CAC0A0143 +A7000E4DA9002348AD003944B7005542B6007240AA008E3FA100A9399F00E6 +329500FF2D9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400 +FF2C9400FF2C9400FF2C9400FF2C9400FF2C9A3200009A3200009B3300009B +3400009D360000A43B0000AB3D0000B3400000B9400001BD3B000BC12F001A +BF21002AB20F0040A9000A4FAA00204BAE003547B7005145B8006E43AC008B +41A200A63C9E00DD359600FF2F9400FF2E9400FF2E9400FF2E9400FF2E9400 +FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9B3300009B +3400009C3500009C3600009E380000A53C0000AB3F0000B3410000BA430000 +BF3F000AC3330018C4250028B714003DAB000553AB001B4FAE00314AB7004C +48BA006A46AE008744A200A33F9D00D3389502FF339002FF338D03FF348B04 +FF358B04FF358B04FF358B04FF358B04FF358B04FF358B04FF358B04FF358B +04FF359B3500009C3600009C3700009D3800009F3A0000A53E0000AC410000 +B3430000BB450000C1420008C6390016CA2B0025BE19003AAE010056AD0017 +52AF002C4DB600464BBB006549A200804E8E009B4C7D00B549800CFF3D7E11 +FF3A7C12FF3A7A12FF3A7A12FF3A7A12FF3A7A12FF3A7A12FF3A7A12FF3A7A +12FF3A7A12FF3A7A12FF3A9C3700009D3800009D3900009E3A0000A03B0000 +A53F0000AC420000B4450000BB470000C3460006C83E0014CD310023C52000 +35B5090050AE001156A90025549A0038598F00525D81006E606F008A5E5E00 +AF5C5400EA586617FF426518FF42651AFF41641AFF41641AFF41641AFF4164 +1AFF41641AFF41641AFF41641AFF41641AFF419D3900009E3A00009E3B0000 +9F3C0000A13E0000A6410000AC440000B3470000BB490000C34A0005CA4400 +12D2390020CC280031BC13004A920403637A0014696E00276D5E003A6D5200 +536E4800726D3E009B6B3F09E95E491AFF4D461AFF4E4217FF514217FF5142 +17FF514217FF514217FF514217FF514217FF514217FF514217FF519F3B0000 +9F3C00009F3D0000A03E0000A13F0000A6430000AC460000B3490000BA4C00 +00C34D0003CC4A000FD541001DC235002D9E2800447518005E4E0301793A00 +127C2D00257B25003A7D1E00557C1B0076791600BD761200FF711101FF7111 +03FF701103FF701103FF701103FF701103FF701103FF701103FF701103FF70 +1103FF70A03D0000A03E0000A03F0000A03F0000A1410000A6440000AB4800 +00B24B0000B94E0000C2500001CC4F000CBA4D001BA146002A833A003D5F29 +00563B1B006E1208008604061588000A2A84000D4381001169800015BC7702 +17FD6C0018FD6C0019FD6C0019FD6C0019FD6C0019FD6C0019FD6C0019FD6C +0019FD6C0019FD6C0019FD6CA03F0000A0400000A1410000A1410000A24300 +00A6460000AB490000B14C0000B8500000BC540001AE57000F9F57001B8C52 +002871490039533D004F322F00650C1F01780020127D0025287B002B487800 +3174750032B4690834FE5C0935FF5B0A37FF5A0937FF5A0937FF5A0937FF5A +0937FF5A0937FF5A0937FF5A0937FF5A0937FF5AA1410000A1420000A14200 +00A1430000A2440000A5470000A94B0000AF4E0000AE530000A3580006985C +00118C5F001A7B5D0026665900364A5100492B44005D053200710039137300 +422A7100494E6E004C7768004DB75F004AFF58004BFF57004CFF57004CFF57 +004CFF57004CFF57004CFF57004CFF57004CFF57004CFF57004CFF57A14300 +00A1440000A1440000A1450000A2460000A4490000A84C0000A45100009957 +0002905D0009876200117C6700186E6A00225D6B003042640040255A005404 +4E016B00551669005D2F66006453630067775C0066A852076CFC48076DFD47 +086FFE46086FFE46086FFE46086FFE46086FFE46086FFE46086FFE46086FFE +46086FFE46A1450000A1450000A1460000A1460000A1470000A34A00009C4F +000091560000895B0004816200097968000E6F6F00146375001D537800283C +7500362270004902690260006F195D00773259007F52540081754C0084AC47 +0187FF3D0188FF3C0188FF3C0188FF3C0188FF3C0188FF3C0188FF3C0188FF +3C0188FF3C0188FF3C0188FF3CA1470000A1470000A1470000A1480000A149 +0000984E00008C530000835900017A5F0003746700066E6F00096578000F5A +7F00174B8400213785002D1F85003D028103500086194D008F304900964D43 +009C733D00A2AB39009FFD35009DFF33009DFF33009EFF33009EFF33009EFF +33009EFF33009EFF33009EFF33009EFF33009EFF33A1480000A1490000A149 +0000A1490000964C0000885100007E570000755D00006F6400016A6C000264 +7600055C800009538A00104490001C339600241F9A00300399024000A2163E +00AD2D3A00B24B3500CD7C3200CCA62E09C9FF2706BEFF2706BFFF2706BFFF +2706BFFF2706BFFF2706BFFF2706BFFF2706BFFF2706BFFF2706BFFF27A14A +0000A14A0000A14A0000954C0000865000007B550000725A00006A60000065 +690000617300005B7E0001558A00034D950007409F001131A9001822B30022 +0DBE002E00C9103200DA282F00E0452A0BFC7C2106FF9C2100F6B72300F2D1 +2200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3 +D12200F3D122A14B0000A14C0000944E0000855000007A5300007058000067 +5D0000616500005D6F0000587A0000538600004E93000048A1000042B10001 +35C4000825D5001218EB001D00FF072A00FF252512FF511210FF6F1115FF90 +0800FFA91A00FFB61B00FFB71B00FFB71B00FFB71B00FFB71B00FFB71B00FF +B71B00FFB71B00FFB71B00FFB71BA14D0000944F0000845200007954000070 +560000665B00005F6200005A6A000056750000518000004C8C000046980000 +40A5000039B600012CCA00081EDB001210F0001D00FF152209FF311710FF55 +0D0DFF700D15FF900201FFA91711FFD60A12FFD80912FFD80912FFD80912FF +D80912FFD80912FFD80912FFD80912FFD80912FFD809954F00008352000077 +5400006E560000665800005E5D000059640000546E00004F7900004A840000 +459000003F9B000038A9000030BC000123CE000817E1001207F3041D00FE1C +1C10FF3E090DFF58090AFF700B11FF8E0000FFA41214FFDA0313FFE10313FF +E10313FFE10313FFE10313FFE10313FFE10313FFE10313FFE10313FFE10383 +530000765500006D560000655700005E59000058600000536800004E720000 +497D0000438800003D930000379F00002FAE000027C100011CD2000910E500 +1200F40A1B00FF211712FF44010BFF590606FF70090DFF8B0000FFA20E11FF +CC0013FFE80013FFE80013FFE80013FFE80013FFE80013FFE80013FFE80013 +FFE80013FFE800765500006B560000645700005D590000585C000053630000 +4D6C000048770000438200003C8C0000359700002EA4000027B400001FC500 +0214D6000A07E8001400F8131500FF25120DFF450009FF5C0209FF720009FF +880002FF9D0704FFB2050DFFE0000DFFE0000DFFE0000DFFE0000DFFE0000D +FFE0000DFFE0000DFFE0000DFFE0006A560000625800005C590000575B0000 +535F00004D67000048710000427B00003C860000348F00002D9B000026A800 +001FB8000017C800030DDA000A00EA051300FA190F00FF2A0D09FF460006FF +5D0005FF710005FF850003FF990303FFAB0303FFBA0203FFBA0203FFBA0203 +FFBA0203FFBA0203FFBA0203FFBA0203FFBA0203FFBA02615800005A5A0000 +555C0000515F00004D620000476B0000417600003B800000348900002D9300 +00269F00001FAC000018BB000010CB000306DD000B00EF0C0D00FC1E0B00FF +2E0805FF4B0003FF5F0002FF700002FF820003FF960101FFA60201FFB60001 +FFB60001FFB60001FFB60001FFB60001FFB60001FFB60001FFB60001FFB600 +595B0000545D0000506000004C62000047660000417000003B7A0000348300 +002C8C0000259700001EA3000017AF000011BD00000ACC000401E0020A00F0 +130800FE230700FF320301FF4B0000FF5F0000FF700000FF800001FF930000 +FFA10100FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200535E00004E6100004A64000046660000416A00003B7400 +00347D00002C860000259000001E9A000017A6000010B100000BBF000103CD +000600E2090600F1190400FE280300FF350000FF4F0000FF630000FF720000 +FF810000FF910000FF9E0000FFAD0000FFAF0000FFAF0000FFAF0000FFAF00 +00FFAF0000FFAF0000FFAF0000FFAF00> +<9424000094240000942500009425000094260000972600009A2700009F2600 +00A3240004A71D0012A2110022980202339A0012349D002331A400362FAA00 +4D2EAB00652DA8007D2BA7009929A800C2259F00ED20A71EFF00A51DFF00A5 +1DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00 +A51DFF00A51DFF009424000094250000942500009426000095260000972700 +009B2700009F270000A3250003A71E0011A4120021980201349A0011359D00 +2232A400352FAA004B2FAB00642EA9007D2CA7009829A800C025A000EC21A8 +1FFF00A51EFF00A51EFF00A51EFF00A51EFF00A51EFF00A51EFF00A51EFF00 +A51EFF00A51EFF00A51EFF00A51EFF00942500009425000094260000952600 +0095270000972700009B280000A0280000A3260003A81F0011A51300219903 +00339A0010369D002133A4003431AA004A30AC00632FA9007B2DA700972AA7 +00BE26A000EB22A820FF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00 +A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF0094250000942600 +00952600009527000095270000982800009B290000A0290000A4270003A921 +0010A71500209B0500329B000E389D002035A4003232AA004831AD006230AA +007A2EA700952BA700BB27A000E922A920FF00A61FFF00A61FFF00A71FFF00 +A71FFF00A71FFF00A71FFF00A71FFF00A71FFF00A71FFF00A71FFF00A71FFF +009426000095260000952700009528000096280000982900009C290000A12A +0000A5280003AA22000FA917001F9E0700319B000C399E001E36A4003033AA +004732AD006031AB00792FA600942CA700B928A000E724AA22FF00A720FF00 +A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF +00A720FF00A720FF009526000095270000952800009628000096290000982A +00009C2A0000A12B0000A62A0002AB24000EAA19001DA00A00309B000A3B9E +001C38A3002E35AA004533AE005E32AC007730A600922EA700B62AA000E525 +AB23FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF +00A821FF00A821FF00A821FF00A821FF009527000095280000962900009629 +0000962A0000992B00009D2C0000A32D0000A72C0001AC26000DAC1B001CA3 +0C002E9C00073C9F001A3AA3002C37AA004235AE005C34AD007532A700902F +A600B22BA100E226AD24FF00A923FF00A923FF00A923FF00A923FF00A923FF +00A923FF00A923FF00A923FF00A923FF00A923FF00A923FF00962800009629 +000096290000972A0000972B00009A2C00009E2D0000A42F0000A92F0001AD +29000CAE1E001BA710002C9D02053D9F00173DA3002A39AA004036AF005A36 +AE007334A7008E31A600AF2CA100DE28AE26FF00A924FF00A924FF00A924FF +00A923FF01A923FF01A923FF01A923FF01A923FF01A923FF01A923FF01A923 +FF0196290000962A0000972B0000972B0000972C00009A2D00009F2F0000A5 +310000AB310000AF2B000AB1210019AB13002B9F03033DA0001440A300273C +A9003D38B0005738AF007136A9008C33A500AB2EA100DB2AA91FFF0AA41CFF +0AA41CFF0AA41CFF0AA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41C +FF0BA41CFF0BA41CFF0B972A0000972B0000972C0000982D0000982D00009B +2F0000A0310000A7330000AD340000B02E0009B3240018AE160029A206023D +A1001142A400243FA900393BB000533AB1006E38AA008935A500A631A100D7 +2CA416FF159F14FF149F14FF149F14FF149F13FF149F13FF149F13FF149F13 +FF149F13FF149F13FF149F13FF149F13FF14972C0000982C0000982D000098 +2E0000982F00009C310000A2330000A8360000AF370000B2320008B6280016 +B31A0026A609003CA2000D46A4002142A900353DB0004F3CB3006B3AAC0086 +38A500A234A100CF2E9C08FF23990BFF1E990AFF1E990AFF1E990AFF1E990A +FF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E982D000098 +2E0000992F000099300000993000009D330000A3360000AA380000B13A0000 +B5360006B82C0014B81F0024AC0E0039A3000849A5001D46A9003141B0004B +3FB500673DAE00833BA5009E379A00C1339203FB2F8A05FF2D8806FF2D8707 +FF2E8507FF2F8507FF2F8507FF2F8507FF2F8507FF2F8507FF2F8507FF2F85 +07FF2F992F000099300000993100009A3100009A3200009E350000A4380000 +AB3B0000B33D0000B83B0004BB310012BD240022B3140035A400034DA70018 +4AAA002D44B0004542AD005F459B00794988008E477900A8437301E741760E +FF36740EFF37720FFF37710FFF38710FFF38710FFF38710FFF38710FFF3871 +0FFF38710FFF38710FFF38993100009A3200009A3300009B3400009B340000 +9F380000A63B0000AD3E0000B5400000BB400003BD360010C12A001FBA1B00 +31AB070249A800124E9C0024509100355486004C577900655A6A007F585D00 +A0575400CB526216FF3C6017FF3D5E17FF3E5D17FF3E5D17FF3E5D17FF3E5D +17FF3E5D17FF3E5D17FF3E5D17FF3E5D17FF3E9B3300009B3400009C350000 +9C3600009C370000A03A0000A73E0000AE400000B6430000BC430002C13C00 +0EC631001CC221002DAA1200468503035E7200136466002568580036684D00 +4C6944006A683C008B663700C262481CFF45441AFF484017FF4C3C14FF4E3C +14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E3C14FF4E9C360000 +9C3700009D3800009D3900009E390000A13C0000A7400000AE430000B64500 +00BE470001C443000CCA38001AB32F00299325003F6C160059480201743600 +12762B002375220037771C004F761A006C7317009B711201FF6A1102FF6A10 +03FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A +0F04FF6A9D3800009E3900009E3A00009F3B00009F3C0000A23F0000A84200 +00AE450000B6480000BE4A0000BE49000AAC460019973F00267C3500385826 +00523719006911070080030614820009287E000C3F7B000F5F7A00149B7500 +15F3680016F2670017F3670018F3660018F3660018F3660018F3660018F366 +0018F3660018F3660018F3669F3B00009F3C00009F3D0000A03E0000A03E00 +00A3410000A8440000AE470000B54A0000B14E0001A350000E954F0019844B +00256B4300354E38004B2E2C00600A1D0172001E1276002326740028417200 +2E6B6F0031A0670831FD560933FF550934FF540935FF540935FF540935FF54 +0935FF540935FF540935FF540935FF540935FF54A03E0000A03F0000A03F00 +00A0400000A1410000A3430000A7460000AD490000A54E00009A5300069056 +0010845700197455002460510032464B004428400059042F006B0035136C00 +3E276B0045476900486C64004BA15C0147F3520047FD500048FD500049FD50 +0049FD500049FD500049FD500049FD500049FD500049FD500049FD50A04000 +00A1410000A1420000A1420000A1430000A3450000A74800009C4D00009253 +000189570008805C000F755F0017686100215761002E3D5C003C2253005003 +4802650050156400582C61005E4D5F00616D580062954F0669FF440568FF42 +0569FF420569FF410569FF410569FF410569FF410569FF410569FF410569FF +410569FF41A1420000A1430000A1440000A1440000A1450000A3470000964C +00008B520000825700037A5C00087262000D696800135E6C001C4E6E002737 +6C00331D6700460162035C006918580070305400774D50007A6C48007C9342 +0082F63A0080FF380081FF370081FF370081FF370081FF370081FF370081FF +370081FF370081FF370081FF37A1450000A1450000A1460000A1460000A147 +0000914B0000865000007D560000745B00026D610004676900085F70000E55 +770016467A0021317C002B1A7B003B0079044C00801A4800872F44008C493F +0091693A009596360096E5310093FF2E0093FF2E0094FF2E0094FF2E0094FF +2E0094FF2E0094FF2E0094FF2E0094FF2E0094FF2EA1470000A1470000A148 +0000A14800008F4B0000834F00007954000070590000685F0000636700015E +700004577900094D8100113F87001B2D8B0023198E0030018F043D00981739 +00A02C3400A4473100AE6C2F00B89D2C00B0D82901A8FF2501A8FF2501A9FF +2501A9FF2501A9FF2501A9FF2501A9FF2501A9FF2501A9FF2501A9FF25A148 +0000A1490000A14900008D4C0000814F0000775200006D570000655C000060 +6400005B6D00005678000150830004478C000A3A9400132C9D00191BA30024 +05AA012E00B7132D00C3282A00C4422500DF6F2600E8912200DAB72201D0F4 +1F01D0F51F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1 +F71F01D1F71FA14A0000A14B00008C4E00007F500000755200006C55000063 +5A00005D610000586A0000547500004F810000498D0000439800013AA50005 +2EB5000A20C3001313D5001D00E50B2401F8242013FF4E0D0CFF691117FF8C +0000FFA61714FFE80A14FFEB0915FFEB0815FFEB0815FFEB0815FFEB0815FF +EB0815FFEB0815FFEB0815FFEB08A14C00008B4F00007D520000735400006A +550000625900005B5F000056680000517200004C7E00004789000041950000 +3BA1000034B100002AC500031DD6000D10EA001700F90F1E03FF281712FF4E +0408FF650D11FF840000FF9D1114FFD40113FFE20313FFE20313FFE20313FF +E20313FFE20313FFE20313FFE20313FFE20313FFE2038B5000007C54000071 +55000068570000625800005B5C000055630000506C00004B77000046820000 +408D00003A98000033A600002BB7000021C9000415DB000D05EC011800FC17 +1809FF310C0FFF500005FF650A0CFF810002FF9C0B0EFFC20112FFE70012FF +E70012FFE70012FFE70012FFE70012FFE70012FFE70012FFE70012FFE7007B +5400007056000067570000605800005A5A0000555F0000506700004A710000 +457C00003F86000038910000319C00002AAA000023BC000019CD00050EDF00 +0D01EF081500FE1D1205FF330A0AFF510009FF690008FF800005FF970404FF +AE050BFFD5010AFFD4010AFFD4010AFFD4010AFFD4010AFFD4010AFFD4010A +FFD4010AFFD4016F560000655700005E590000585B0000545D00004F620000 +4A6B0000447600003E800000378A00003094000029A1000022AF00001BBF00 +0012D0000606E2000E00F30F1000FE220D03FF360807FF530005FF690004FF +7D0004FF940102FFA80303FFB90103FFB90103FFB90103FFB90103FFB90103 +FFB90103FFB90103FFB90103FFB901645700005C590000575B0000535E0000 +4F6000004A660000447000003E7A0000378400002F8D00002898000021A500 +001AB2000013C200010BD2000600E5030D00F5160B00FE270901FF390403FF +560002FF690002FF7A0002FF910001FFA30101FFB40001FFB40001FFB40001 +FFB40001FFB40001FFB40001FFB40001FFB40001FFB4005B5A0000555C0000 +515F00004D61000049640000436A00003D750000377E00002F870000289100 +00209C000019A8000013B500000DC4000104D4000700E70B0800F61C0700FF +2B0400FF3B0100FF570000FF6A0000FF7A0001FF8E0000FF9F0000FFB00000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +545D00004F6000004B63000046660000426900003D6F0000367900002F8200 +00288B000020950000199F000012AA00000CB6000006C4000300D6040500EA +120400F7210300FF2F0000FF410000FF5C0000FF6D0000FF7C0000FF8D0000 +FF9D0000FFAA0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2004E6100004964000044670000406A00003C6D0000377300 +002F7C000028850000218E00001998000012A100000CAB000005B7000200C5 +020300DB0A0100EA180000F7250000FF300000FF4A0000FF5F0000FF6D0000 +FF7C0000FF8B0000FF9C0000FFA50000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<921F0000931F00009320000093200000932100009421000096210000992000 +009C1E00029F1700109A0B001F9300052B970015299B002427A1003626A500 +4B26A6006225A4007923A5009322A800B71EA200E119A516FF02A014FF00A0 +14FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00 +A015FF00A015FF00931F000093200000932000009321000093210000942200 +0096210000992000009C1F00019F18000F9B0C001F9300042C9700142A9B00 +2328A1003527A5004A27A6006126A5007824A6009222A800B61FA200E01AA6 +17FF02A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00 +A015FF00A015FF00A015FF00A015FF00932000009320000093210000932100 +009322000094220000962200009A2100009C1F0001A019000E9C0E001E9300 +022D9700132B9B002229A1003428A5004928A6006027A5007725A6009123A8 +00B420A300DE1BA618FF02A116FF00A116FF00A116FF00A116FF00A116FF00 +A116FF00A116FF00A116FF00A116FF00A116FF00A116FF0093200000932100 +0093210000932200009322000094230000972200009A2200009D200001A11A +000D9E0F001D9401022C9700112C9A00212AA1003229A6004729A7005F28A6 +007626A6009024A800B221A300DD1CA718FF03A117FF00A117FF00A117FF00 +A117FF00A117FF00A117FF00A117FF00A117FF00A117FF00A117FF00A117FF +00932100009321000093220000932200009423000094230000972300009A22 +00009D210001A21C000CA011001C9603012C98000F2E9A00202CA100312AA6 +00462AA8005D29A7007427A6008E25A800B122A300DB1DA819FF03A218FF00 +A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF +00A218FF00A218FF0093210000932200009423000094230000942400009424 +0000972400009A2300009E220001A31E000BA213001B9805012B98000D309B +001E2DA0002F2BA600442BA9005B2AA8007329A6008C27A800AE24A400DA1E +A91AFF04A319FF00A319FF00A319FF00A319FF00A319FF00A319FF00A319FF +00A319FF00A319FF00A319FF00A319FF009322000094230000942300009424 +00009424000094250000972500009B2400009F240001A420000AA31600199B +08012A98000B329B001C2FA0002D2DA700412CA900592CA900712AA6008A28 +A800AC25A400D820AB1BFF05A41BFF00A41BFF00A41BFF00A41BFF00A41BFF +00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00942300009424 +000094240000942500009425000095260000982600009C260000A0260000A4 +220009A51800189E0B0029980108339B0019329F002A2FA7003F2EAA00572D +AA006F2CA7008829A800A927A500D622AC1DFF06A51CFF00A51CFF00A51CFF +00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51C +FF00942400009424000094250000942600009526000095270000982700009C +280000A1270000A5240008A81B0016A10E0027990105359B0017359F002831 +A6003C30AB00542FAB006D2DA700862BA700A528A500D324A917FE0DA61EFF +00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61E +FF00A61EFF00A61EFF00942500009426000095260000952700009527000096 +280000992900009D290000A2290000A6260006AA1E0015A51100259A030336 +9C0013389F002534A6003932AC005131AC006A30A800842DA700A12AA600CF +26A20DFC18A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720 +FF00A720FF00A720FF00A720FF00A720FF0095260000952700009528000096 +28000096290000962900009A2A00009E2B0000A42C0000A8290004AC220013 +A91500239D0500379C000F3BA0002238A6003534AC004D34AE006732AA0081 +30A6009E2DA500C9289C01FA23A822FF00A822FF00A822FF00A822FF00A723 +FF00A723FF00A723FF00A723FF00A723FF00A723FF00A723FF009528000096 +28000096290000962A0000972A0000972B00009B2C0000A02E0000A62F0000 +AA2D0003AE250011AD190020A20900349D000B3FA0001E3CA5003138AC0049 +36B0006335AC007D33A20097319600B42F8C00E32D8202FF298003FF2A7E03 +FF2B7D04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C04FF2B7C +04FF2B96290000962A0000972B0000972B0000972C0000982D00009C2F0000 +A2310000A8330000AD320002B12A000FB11E001EA80F00319E000642A10019 +40A5002D3CAA00433AA000593F930070428300844076009D3E6D00C23D6C07 +FF356A08FF366908FF366709FF376709FF376709FF376709FF376709FF3767 +09FF376709FF376709FF37972B0000972C0000982D0000982D0000982E0000 +992F00009E320000A4340000AB360000B1370000B42F000CB624001BB01500 +2DA3050341A00013469100224B8800334E7E00465171005D53650075525B00 +93525300B34C5A12FF3B5D17FF365F1BFF32611EFF2F6220FF2E6220FF2E62 +20FF2E6220FF2E6220FF2E6220FF2E6220FF2E982D0000982E0000992F0000 +99300000993100009A3200009F350000A6380000AD3A0000B43B0000B73500 +0ABB2A0019B71C00299B1000407B0304576A00125E5F002361530033624900 +4763410063643A007F613500A45C481DFF3F4118FF433D15FF473912FF4A37 +11FF4C3711FF4C3711FF4C3711FF4C3711FF4C3711FF4C3711FF4C99300000 +993100009A3200009A3200009B3300009B340000A2390000A83C0000B03E00 +00B7400000BB3C0008B8320016A42B00258821003A631300544301016E3300 +116F2800216F200034711A004A711800636E1700876C1101E6661003FF640F +04FF640E04FF640D05FF640D05FF640D05FF640D05FF640D05FF640D05FF64 +0D05FF649A3200009B3300009B3400009C3500009C3600009D370000A33C00 +00A93F0000B0410000B8430000AF430008A03F00168E390023753000345324 +004E341700640F06007A0305137C00092679000C3C75000E58730013877100 +15D2660016EC620017EC610018EC600018EC600018EC600018EC600018EC60 +0018EC600018EC600018EC609C3600009C3700009D3800009D3900009E3A00 +009E3B0000A33E0000AA420000B1450000A6490000994A000C8C4800177D44 +0022653D0032493400472B29005C091B016D001C11700021246E00253C6B00 +2B626A002F9064002ED958042EFE51032FFE51032FFE510330FE510330FE51 +0330FE510330FE510330FE510330FE510330FE519E3900009E3A00009F3B00 +009F3C00009F3D0000A03E0000A4410000A84400009C4A0000924E00058850 +000E7D5000176E4E00215A4B002F42450040253B0054042C01650032126600 +3A24640041416400456460004991580046D04F0045F8490046F8490047F849 +0047F8480047F8480047F8480047F8480047F8480047F8480047F8489F3D00 +00A03E0000A03E0000A03F0000A0400000A0400000A0440000954A00008B4F +0001825300077955000E6F5800166259001F5159002B395500381E4D004C02 +42025F004B145E00532A5C0059485A005C6554005D874C005EBD440162FF3F +0162FF3E0163FF3E0163FF3D0163FF3D0163FF3D0163FF3D0163FF3D0163FF +3D0163FF3DA03F0000A0400000A1410000A1420000A14200009B4300008F49 +0000854E00007C530002745700076C5C000B636100125864001B4966002532 +640031195F0043005B045600631852006B2E4E0070494B007365450075853E +007AC638007AFF32007BFF32007BFF32007BFF32007BFF32007BFF32007BFF +32007BFF32007BFF32007BFF32A1420000A1430000A1440000A14400009A46 +00008C490000814D0000775200006F570001675C0003616300075A69000D50 +6F0016417100202C73002A1571003A00710647007A1A4100802E3D0084453A +00896336008C8631008FC72E008BFF2A008CFF29008CFF29008CFF29008CFF +29008CFF29008CFF29008CFF29008CFF29008CFF29A1450000A1450000A146 +000099470000894A00007E4C0000745000006B550000645B00005E62000059 +6A000452720009487900113A7E001A278200231283002F0087063800901832 +00962B2F009A452C00A1642B00A9902900A5C327009BFF21009BFF21009BFF +20009BFF20009BFF20009BFF20009BFF20009BFF20009BFF20009BFF20A147 +0000A147000098490000874C00007B4E0000724F000069530000615900005B +60000057680000527200014B7C00054284000B358B00132592001A13970025 +009D032C00A9142800B2272500B4412200BF642200CB8B2000C5B32000BBFA +1C00B8FF1C00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9 +FF1B00B9FF1BA1490000984B0000854E0000795000006F5100006852000060 +570000595D000055660000507000004B7B0000458700003D910003339B0008 +27A7000D19B100160ABE001F00CB101F00DB231D01F03A1C00EF601A08F985 +0F00FBA81613FEF90A12F7FF0A12F7FF0912F7FF0912F7FF0912F7FF0912F7 +FF0912F7FF0912F7FF0912F7FF09984C0000844F0000775200006D53000065 +5500005F560000585C0000536400004E6E0000497A0000438500003D910000 +369D00002EAC000027BF00011BD000080FE4001100F40A1900FF211510FF45 +0008FF5B0709FF760409FF940309FFB80511FFE70011FFE70011FFE70011FF +E70011FFE70011FFE70011FFE70011FFE70011FFE70082510000755400006B +550000635700005C590000585B0000526200004D6B00004776000042800000 +3B8B0000349500002DA2000026B200001EC3000113D4000807E7001200F713 +1300FF26100BFF450009FF5F0007FF760008FF910004FFAA0409FFCD0108FF +CC0108FFCB0108FFCB0108FFCB0108FFCB0108FFCB0108FFCB0108FFCB0174 +55000069560000615800005A5A0000565C0000525E00004C66000047700000 +417A00003B850000338E00002C99000025A700001EB6000016C600020CD700 +0900E9051100F9190E00FF2B0B07FF480005FF600004FF740004FF8D0002FF +A50302FFB80102FFB80102FFB80102FFB80102FFB80102FFB80102FFB80102 +FFB80102FFB801685700005F580000595B0000545D0000505F00004C620000 +466A0000407500003A7F0000328800002B920000249E00001DAB000016B900 +000FC9000305DB000A00ED0C0B00FC1F0900FF2F0603FF4B0001FF600001FF +720002FF890001FFA00101FFB30000FFB30000FFB30000FFB30000FFB30000 +FFB30000FFB30000FFB30000FFB3005E590000575B0000525E00004E610000 +4A63000046660000406F000039790000328200002B8C0000239600001CA100 +0015AD00000FBB000008C9000401DC040800EF140600FD240500FF330101FF +4C0000FF630000FF740000FF870000FF9C0000FFAE0000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200565C0000515F0000 +4C62000048650000436800003F6B000039740000327D00002A860000238F00 +001C99000015A400000EAF000008BC000101CA000500E10B0300EF1A0200FD +280100FF350000FF540000FF690000FF760000FF880000FF9C0000FFA90000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4F6000004A63000045670000416A00003D6C0000396F0000327700002B8000 +00238900001C930000149C00000EA5000007B0000101BC010300CE050000E2 +100000EF1D0000FC2A0000FF370000FF550000FF690000FF740000FF850000 +FF9B0000FFA40000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20048650000436800003E6B00003A6E000036710000327200 +002B7A0000238300001C8C0000159500000D9D000008A6000002B0000300BC +010300CD050000E1100000EE1C0000FB290000FF350000FF530000FF670000 +FF720000FF830000FF960000FF9F0000FFAF0000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<901A0000901A0000911B0000911B0000911B0000911C0000931C0000951B00 +00971800019812000D9106001D90000922940017209800251E9D00351EA000 +4A1EA100601DA000751CA1008C1BA400AB18A100CF139F06F70A9B0CFF009B +0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF00 +9B0CFF009B0CFF00901A0000911A0000911B0000911B0000911C0000921C00 +00931C0000951B0000971900009813000C9307001C90000723940016219800 +241F9E00341EA100491FA1005F1EA100741DA1008B1CA500AB19A100CF149F +06F80C9C0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0DFF00 +9C0DFF009C0DFF009C0DFF009C0DFF00911A0000911B0000911B0000911C00 +00921C0000921D0000931D0000961C0000971A00009914000B9409001B9000 +062494001422980023209E00331FA1004720A2005E1FA100731EA2008A1CA5 +00A91AA200CE159F05F80D9C0EFF009C0EFF009C0EFF009C0EFF009C0EFF00 +9C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF00911B0000911C00 +00911C0000921D0000921D0000921E0000931E0000961D0000981B00009A15 +000A960A001A9100052594001323980022219E003120A2004621A3005C20A2 +00711FA200881DA500A81BA300CD169F05F80F9C0FFF009D0FFF009D0FFF00 +9D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF +00911C0000921C0000921D0000921D0000921E0000921E0000941E0000961D +0000981C00009B17000A980C00199201042594001225980020239E003021A2 +004422A3005B22A2007020A200871FA600A61CA400CC179F04F7109D10FF00 +9D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF +009D10FF009D10FF00921C0000921D0000921E0000921E0000921F0000931F +0000941F0000971E0000991D00009C1800099A0E0018930303259500102698 +001F249E002E23A2004223A4005923A3006E21A3008620A600A41EA400CA19 +9F03F6139E11FF009E11FF009E11FF009E11FF009E11FF009E11FF009E11FF +009E11FF009E11FF009E11FF009E11FF00921D0000921E0000921E0000931F +0000931F00009320000094200000971F0000991E00009D1A00079C11001695 +04022595000D2898001D269D002C24A3004025A5005724A4006D23A3008421 +A600A31FA500C91A9E01F6169F13FF009F13FF009F13FF009F13FF009F13FF +009F13FF009F13FF009F13FF009F13FF009F13FF009F13FF00921E0000921F +0000931F000093200000932000009321000094210000972000009A1F00009D +1C00069E1300159706012595000B2A98001B289D002A26A3003E26A5005426 +A5006B25A4008223A700A021A600C71C9E00F418A014FF00A014FF00A014FF +00A014FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015 +FF00931F000093200000932000009321000093210000932200009522000097 +2200009B2100009E1E0005A0160013990900249500082C9800182A9D002828 +A3003B28A6005128A6006926A5008024A7009E22A700C51E9F00F219A116FF +00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116 +FF00A116FF00A116FF00932000009321000093220000932200009422000094 +23000095230000982300009B2200009F200003A21900129D0C00229500052F +9900152D9C00252BA300382AA7004E2AA8006628A6007E26A7009B24A800C3 +209F00EF1BA319FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218 +FF00A218FF00A218FF00A218FF00A218FF0093220000932200009423000094 +230000942400009424000095240000982400009C240000A0230002A41C0010 +A010002096010131990011309C00222EA300352CA8004B2CA900632BA7007B +29A6009726A800BF23A000EC1EA51BFF00A11CFF00A01DFF009F1EFF009E1F +FF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009423000094 +2300009424000094240000942500009426000096260000992600009D260000 +A1250001A620000DA514001D9A05012F99000D349C001F31A200312FA80047 +2EAB00602DA800782C9C008D2D9300A92C8A00CE2A7D00FE277901FF267701 +FF277601FF287401FF287401FF287401FF287401FF287401FF287401FF2874 +01FF2894240000942500009425000095260000952700009527000097280000 +9A2900009F290000A3280001A824000BA819001BA00A002C9A0009389D001B +36A1002D329F004034960054388A00683B7E007C3A730094396B00B3386500 +F2366406FF316206FF326105FF336005FF346005FF346005FF346005FF3460 +05FF346005FF346005FF349426000095270000952700009528000096290000 +96290000982A00009B2B0000A12C0000A52C0000AA280009AC1E0018A61000 +299D0305389400133F880021457F0030477600414A6B00564C60006D4C5900 +884B5100A4464E03F3426D2AFF1E6D2CFF1D6C2CFF1D6C2DFF1D6C2DFF1D6C +2DFF1D6C2DFF1D6C2DFF1D6C2DFF1D6C2DFF1D952800009629000096290000 +972A0000972B0000972B0000992C00009D2E0000A3300000A9310000AD2D00 +06B0240015AA1700258F0E003B72030450630012575900215A4F00305C4500 +435E3E005D5E3800765C340095573506FE513F17FF3D3A14FF423611FF4532 +0EFF48320EFF48320EFF48320EFF48320EFF48320EFF48320EFF48962A0000 +972B0000972C0000982D0000982D0000982E00009A2F00009F320000A63400 +00AD360000B1330004A82D0013982600217E1E00355C11004E3E0102673000 +1069260020691E00316B1800466B16005E6916007A671300B7640E02FE5F0D +03FE5F0B03FE5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F +0A03FF5F982D0000982E0000982E0000992F0000993000009A3100009C3300 +00A2360000A8390000B03B0000A23C0006953900138633001F6E2C00304E22 +00493016005F0E0600740305127600092573000C396F000D526D0012796C00 +15B5640015E75C0016E75C0017E75B0018E75A0018E75A0018E75A0018E75A +0018E75A0018E75A0018E75A99300000993100009A3200009A3300009B3400 +009B3400009E360000A43B0000A63E00009C4300009144000A85420015763E +00205F39002F453100432827005708190168001B116A002023670023386400 +295B64002D8360002EB756002BF74E002CF64D002DF64D002EF54D002EF54C +002EF54C002EF54C002EF54C002EF54C002EF54C9B3300009B3400009C3500 +009C3600009D3700009D3800009F3A00009E3F0000944500008B4A0003814A +000C764A0016684800205445002C3D40003C2237004F03290160002F125F00 +37235E003D3D5D00415D5A004582540045B34A0043F2420044F3420044F341 +0045F2410045F2410045F2410045F2410045F2410045F2410045F2419D3700 +009D3800009E3900009E3A00009F3B00009F3C0000984000008E460000854B +00007C4E00057350000D695200145C53001D4B520028344F00341B47004701 +3E035800461457004F28560056445300585F4F00597D47005AA640005CFD39 +005DFD38005EFD38005FFD37005FFD37005FFD37005FFD37005FFD37005FFD +37005FFD379F3B00009F3D0000A03D0000A03E0000A03F0000964200008946 +0000804B0000774F00016E5200066756000B5E5B0011535D0019435E00232D +5D002E165800400054054F005E184B00662D47006B4444006D5F3F006F7B3A +0072A7350074FF2E0075FF2D0075FF2D0076FF2D0076FF2D0076FF2D0076FF +2D0076FF2D0076FF2D0076FF2DA03F0000A0400000A1410000A14100009444 +0000864700007C4A0000734E00006A520001635800035C5D00065563000D4B +6700153C6A001F276B002810690037006B084100741A3A007A2D37007E4334 +00825E3100857B2D0088AE2B0086F9260085FF250085FF250086FF250086FF +240086FF240086FF240086FF240086FF240086FF24A1420000A1430000A144 +000092470000844A0000794B0000704D00006751000060570000595D000054 +6500034D6C00094472001135760019227900220D7A002E007F08330088192D +008E2B2A0091432800975E27009C8025009CB1240095F21E0093FF1D0094FF +1D0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1CA145 +0000A146000090490000814C0000764D00006D4E0000665000005E55000057 +5C0000536400004D6D0001477600053D7D000B2F8300131E87001B0C8C0025 +00940628009F162400A5272100A7401E00AE5D1E00B7811E00B7A81D00AEE4 +1A00A8FF1800A9FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9 +FF1700A9FF17A14700008F4B00007F4D0000734F00006A500000635200005D +540000565A0000516200004C6B00004676000040800001378900052C92000A +1F9A001110A2001A01AD021F00BA121B00C5231900CF391700D1591600DC7B +1400E3A21308F0F60F02D3FF1102D3FF1102D4FF1002D4FF1002D4FF1002D4 +FF1002D4FF1002D4FF1002D4FF108D4C00007D4F0000715100006753000060 +5400005A56000055590000506100004A6A0000457500003F800000388B0000 +3196000029A3000021B2000216C100080AD2001000E30B1400F51F1107FF38 +0709FF560108FF6F0006FF890204FFA7050BFFE4000AFFDF000AFFDA0109FF +D90109FFD90109FFD90109FFD90109FFD90109FFD9017B5100006F53000065 +5500005D570000585A0000535C00004F610000496A0000447500003D7F0000 +378900002F930000289F000021AD00001ABD000011CE000506E0010D00F20F +0E00FE220C02FF370605FF560003FF6C0004FF830002FFA00302FFB70102FF +B80002FFB80002FFB70002FFB70002FFB70002FFB70002FFB70002FFB7006D +560000635800005B5A0000565C0000525E00004E61000049650000436F0000 +3D790000368300002E8C00002797000020A3000019B0000012BF00000AD000 +0501E4040B00F4160A00FF280801FF3A0202FF570001FF6C0001FF800001FF +9B0100FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200615800005A5A0000545D0000506000004B62000047650000 +436A00003C740000357D00002E860000269000001F9B000018A6000011B300 +000BC1000103D1000700E60C0700F51C0500FF2C0300FF3B0000FF5A0000FF +6E0000FF810000FF980000FFAD0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200585B0000535E00004E61000049640000 +45670000406A00003C6E0000357800002E810000268A00001F940000179E00 +0010A800000AB4000003C1000300D4050400E8120200F5220100FF2F0000FF +490000FF620000FF6F0000FF820000FF9B0000FFA80000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200515F00004C620000 +47660000426900003E6C00003A6E0000357200002D7B0000268400001F8D00 +001797000010A0000009A9000002B4000300C2030100D7090000E8150000F5 +230000FF2F0000FF480000FF600000FF6E0000FF800000FF960000FFA30000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4A630000456700003F6B00003B6E000036700000327200002D760000267E00 +001F87000017900000109800000BA0000006A9000101B4000400C2020200D6 +090000E8150000F4220000FF2F0000FF450000FF5E0000FF6D0000FF7D0000 +FF900000FF9F0000FFAF0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200426900003D6C0000386F0000337200002F7400002B7600 +00267900001F8100001989000015910000109800000BA0000006A9000101B4 +000400C1020200D5090000E7140000F3210000FF2E0000FF420000FF5C0000 +FF6C0000FF7A0000FF8B0000FF9D0000FFA80000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8D1400008E1500008E1500008E1600008E1600008F1700008F170000911600 +0092130000920D00098B0201188D000B198F00171893002416970033169A00 +47169B005D159C0071149D0087139E00A1119D00C00D9A00E1099805FF0097 +04FF009704FF009704FF009704FF009704FF009704FF009704FF009704FF00 +9704FF009704FF008E1500008E1500008E1600008E1600008F1700008F1700 +008F1800009116000092140000920E00098D0401178D000A1A900016199300 +2317980032179B0046179C005C169C0070159D0086149F00A0129D00BF0E9B +00E20A9906FF009805FF009805FF009805FF009805FF009805FF009805FF00 +9805FF009805FF009805FF009805FF008E1500008E1600008F1700008F1700 +008F1800008F180000901800009117000093150000931000088E0501178D00 +081B9000151A93002218980031179C0045189D005A179D006F169E008515A0 +009F139E00BF0F9C00E20B9907FF009806FF009806FF009806FF009806FF00 +9806FF009806FF009806FF009806FF009806FF009806FF008E1600008F1700 +008F1700008F1800008F180000901900009019000092180000931600009411 +00078F0600168D00071D9000141B9400211A990030189C0043199D0059199D +006E179E008316A0009E149F00BF109D00E30C9A08FF009907FF009907FF00 +9907FF009907FF009907FF009907FF009907FF009907FF009907FF009907FF +008F1700008F1800008F180000901800009019000090190000901A00009219 +00009417000095120006910800158E00061E9100131C9400201B99002E1A9D +00421A9E00581A9E006C199F008218A1009C16A000BE119D00E30D9B09FF00 +9908FF009908FF009908FF009908FF009A08FF009A08FF009A08FF009A08FF +009A08FF009A08FF008F1800008F1800009019000090190000901A0000901A +0000911A0000931A00009518000096140005930A00158E01041F9100111E94 +001E1C99002D1B9D00401C9F00561B9F006B1A9F008019A1009B17A100BC13 +9E00E30F9C0BFF009A09FF009A09FF009A09FF009A09FF009A09FF009A09FF +009A09FF009A09FF009A09FF009A09FF009019000090190000901A0000901A +0000911A0000911B0000911B0000931B00009519000097160004950C00138F +02032091000F2095001D1E9A002B1D9E003E1DA000541DA000691CA0007E1A +A2009919A200BB159F00E3109D0DFF009B0BFF009B0BFF009B0BFF009B0BFF +009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF0090190000901A +0000911B0000911B0000911B0000911C0000921C0000941C0000961A000098 +170003970E00129003012092000D2295001B209A00291E9F003C1EA100521F +A100671DA0007C1CA300971AA400BA169F00E2129F0EFF009B0CFF009B0CFF +009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0C +FF00911A0000911B0000911C0000911C0000921C0000921D0000921D000094 +1D0000961C000098190002991100109205002092000A24950019229A002720 +A0003920A2004F21A200651FA1007A1EA300941CA500B718A000E114A010FF +009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0E +FF009C0EFF009C0EFF00911C0000911C0000921D0000921D0000921E000092 +1E0000921F0000951E0000971D0000991B00019B14000F9608001E92000726 +960016249A002522A0003622A3004C23A3006221A2007820A400921EA600B5 +1BA100DF16A212FF019D10FF009D10FF009D10FF009E10FF009E10FF009E10 +FF009E10FF009E10FF009E10FF009E10FF00921D0000921D0000921E000092 +1F0000931F0000932000009320000095200000981F00009A1D00009D17000D +990C001C92000429960013279A002225A0003324A4004825A5005F24A30076 +22A4008F20A700B31DA000DB199E13FF069A17FF009819FF00971AFF00971A +FF00961BFF00961BFF00961BFF00961BFF00961BFF00961BFF00921E000092 +1F0000931F0000932000009321000093210000932100009521000098210000 +9B1F00009F1A000A9D10001A9503022896000F2A99001F28A0003027A40045 +27A6005C269E007027950085288F009E288700BE277A00E5238F24FF008E25 +FF008921FF05831BFF0C7E16FF117E16FF117E16FF117E16FF117E16FF117E +16FF1193200000932000009321000093210000932200009422000094230000 +96230000992200009C210000A11E0008A11400179906002897000B2E99001C +2C9F002C2A96003C2E8D004F32830062337900743370008B336800A7326100 +D4315F03FF2C5E04FF2D5C05FF2E5C05FF2E5B06FF2E5B06FF2E5B06FF2E5B +06FF2E5B06FF2E5B06FF2E9321000093220000942300009423000094240000 +9424000094250000962500009A2500009D240000A2210006A51900159E0C00 +25980106318B0012388000203D77002D406F003C42650050455C0066455600 +7E454F009A414900BD3C6423FF1E6424FF1E6325FF1E6325FF1E6225FF1E62 +25FF1E6225FF1E6225FF1E6225FF1E6225FF1E942300009424000094240000 +94250000942500009526000095270000972700009B2800009F280000A32500 +03A81E00129C150022840C00356B0205485D00114F53001F534A002D554200 +3F573B00575935006F5632008A522F00B74E3D16FF383712FF3D330FFF412F +0CFF432D0AFF462D0AFF462D0AFF462D0AFF462D0AFF462D0AFF4694250000 +942600009526000095270000952800009628000096290000982A00009D2B00 +00A22B0000A62A00029C2800108D22001E761B0030560F00493A01025F2D00 +0F6324001E641C002F6516004265140058631400716113009A5F0C01FC590A +02FD5A0902FD5A0802FD5A0702FD5A0702FD5A0702FD5A0702FD5A0702FD5A +0702FD5A952700009628000096290000962A0000972A0000972B0000972C00 +009A2D00009F2F0000A0320000973600048C3300117E2E001D6728002D491F +00452D14005A0D05006D0205116F0009236D000B3669000D4E6600116F6600 +149F600015E5560016E4550017E3550018E2540019E2540019E2540019E254 +0019E2540019E2540019E254972A0000972B0000972C0000982D0000982E00 +00982E0000992F00009C3100009A370000933E0000893F00087D3C00136F39 +001E5934002C402D003F2525005307180162001A1164001E22610021355E00 +26545E002B785A002EA252002AEC49002BEC48002CEC47002DEB47002DEB46 +002DEB46002DEB46002DEB46002DEB46002DEB46982D0000982E0000992F00 +00993000009A3100009A3200009A330000953A00008D410000844500017A45 +000B6F4400156142001F4D400029373C00371F34004A0327025A002C125800 +332356003A3A57003F57540042764E00439F460041E03C0041EA3B0042EB3A +0042EB3A0043EB3A0043EB3A0043EB3A0043EB3A0043EB3A0043EB3A9A3100 +009A3200009B3300009B3400009C3500009C360000913D0000884200007F47 +0000764900046D4A000C634C0014564D001C454C00252F4900301842004301 +3A03520042144F004B274E0053404C00545A49005574430056973B0058DB33 +0058F7320059F731005AF831005AF831005AF831005AF831005AF831005AF8 +31005AF8319C3600009D3700009D3800009E3900009D3A00008F4000008443 +00007B470000724A0001694D00056151000A595400104E5700183E57002128 +56002B1251003C004F0648005A184400622C3F0066413C00685939006A7436 +006C97310070E42A006FFF29006FFF290070FF280070FF280070FF280070FF +280070FF280070FF280070FF289E3B00009F3C00009F3D00009D3E00008D43 +000081460000774700006E4A0000664E00015F53000358580006505D000B46 +6100143763001D226300260C6100350065093B006F1B3300742B310078402E +007C592B007F742900819B270081DD23007FFF21007FFF21007FFF210080FF +200080FF200080FF200080FF200080FF200080FF20A03F0000A04000009C41 +00008B4600007E480000744A00006B4A0000644E00005C5200005659000050 +600002496600083F6B00102F6E00181D7100210871002D00790A2D00821928 +00872A26008A412400905A220094762100959F200091D71C008DFF19008EFF +19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19A142 +00009C440000894800007B4B0000714C0000684D0000614E00005B52000054 +5800004F5F000049680000426F00053776000B297B0013187F001B06830024 +008C092300961720009B271D009D3E1A00A3581A00A8771A00AD9E1900A7CD +1800A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0 +FF1300A0FF139C460000874A0000784D00006D4E0000654F00005E50000059 +520000535700004D5E000048670000427100003B7A0002318100062589000C +168E00140896001B00A1071B00AD141700B5231500BA371300BD531100C473 +1000CC960F00CBC51200BEFF0F00BEFF0E00BFFF0E00BFFF0E00BFFF0E00BF +FF0E00BFFF0E00BFFF0E00BFFF0E854C0000764F00006B500000625200005B +53000056560000525800004C5E000047670000417100003A7B000033840000 +2B8E00002399000219A400060DAE000E01BC021300CC0F1000DA1F0D00E732 +0C00ED4D0900F16A0802F6880402FCAD060AFAFF0008F2FF0108F3FF0108F3 +FF0108F3FF0108F3FF0108F3FF0108F3FF0108F3FF01745100006853000060 +55000059570000545A00004F5D00004B6000004667000040710000397C0000 +328600002A900000239C00001CA9000015B600000EC6000204D9000900EC0C +0A00FB1F0800FF300502FF4D0001FF640000FF780001FF950000FFB10000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20066 +5500005D580000565B0000525E00004D61000049640000456700003F6E0000 +39780000318100002A8A0000229500001BA0000014AB00000EB8000007C700 +0300DA040700EE140500FC240400FF340000FF4F0000FF670000FF7B0000FF +930000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2005B5A0000555C0000506000004B6300004666000042690000 +3E6C000038720000317C000029850000228E00001A98000013A200000DAD00 +0006BA000200C7010400DF0B0200EE1A0100FC290000FF380000FF570000FF +6B0000FF7B0000FF930000FFA50000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200535D00004E6100004964000044680000 +3F6B00003B6E00003770000031760000297F0000228800001A910000139B00 +000CA4000004AD000200BA010300CA040100DF0E0000ED1B0000FB290000FF +350000FF550000FF6A0000FF790000FF8E0000FFA00000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2004C62000046660000 +416A00003C6D000038700000337200002F74000029790000228200001A8B00 +00139400000E9B00000AA4000004AD000200B9010300C9040100DF0E0000ED +1B0000FA280000FF340000FF530000FF690000FF760000FF890000FF9E0000 +FFAF0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +446700003F6B0000396E000034710000307300002B75000028770000227C00 +001C840000188C0000139300000E9B00000AA3000004AD000200B9010300C8 +040100DE0D0000EC1A0000F9270000FF330000FF510000FF660000FF730000 +FF860000FF9C0000FFA90000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2003C6D000037700000317300002C75000028770000247800 +0023780000217C00001C840000188B0000139300000E9B00000AA3000004AC +000200B8010300C8040100DD0C0000EB190000F9260000FF320000FF4F0000 +FF640000FF710000FF820000FF990000FFA30000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8A0F00008A0F00008A1000008B1000008B1100008B1100008C1100008C1100 +008D0F00008C0900068701021289000C118A0017108C00220F9000300E9400 +430D9500580D96006C0C9800820B980098099700B0069500CB039501F60093 +01FF009301FF009301FF009301FF009301FF009301FF009301FF009301FF00 +9301FF009301FF008A0F00008A1000008B1000008B1100008C1100008C1200 +008C1200008D1200008E1000008D0A00058802021289000B128B0016118D00 +211091002F0F9500420E9600570E97006B0D9800810C9900970A9800B00796 +00CB049501F5019301FF009401FF009401FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF008B1000008B1000008B1100008C1200 +008C1200008C1200008D1300008D1300008E1000008D0C0005890302128900 +0A148B0015128D00211191002E10950041109700560F97006A0E9900800D9A +00970B9900B0089700CC059601F4029401FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF009401FF009401FF008B1100008C1100 +008C1200008C1200008D1300008D1300008D1400008D1400008F1100008E0D +00048A0401128A0009158C0014148E00201392002D11960040119800551098 +00691099007F0F9B00960D9A00B00A9800CC069601F3039501FF009501FF00 +9501FF009501FF009501FF009501FF009501FF009501FF009501FF009501FF +008C1200008C1200008C1300008D1300008D1400008D1400008D1400008E15 +00008F1200008F0F00038C0500118A0007168D0013158F001F1493002C1397 +003E1299005412990068119A007D109C00950E9B00AF0B9900CC079700F204 +9502FF009502FF009502FF009502FF009502FF009502FF009502FF009502FF +009502FF009502FF008C1200008D1300008D1400008D1400008D1500008E15 +00008E1500008E15000090130000901000028D0600118A0006188D0011168F +001E1593002B1498003D149A0052139A0067129B007C129C0093109C00AF0D +9A00CC099800F3059603FF009603FF009603FF009603FF009603FF009603FF +009603FF009603FF009603FF009603FF008D1300008D1400008E1500008E15 +00008E1600008E1600008F1600008F17000091140000921200018F0900108B +0004198E00101890001C179400291598003B159B0050159B0065149C007A13 +9D0091129D00AE0F9B00CD0A9900F4079704FF009704FF009704FF009704FF +009704FF009704FF009704FF009704FF009704FF009704FF008D1500008E15 +00008E1600008E1600008F1700008F1700008F180000901800009216000093 +130000910B000E8B00021B8E000E1A91001A1895002817990039179C004E17 +9C0063169D0078159E0090149F00AD109D00CD0C9A00F5099805FF009805FF +009805FF009805FF009805FF009805FF009805FF009805FF009805FF009805 +FF008E1600008E1600008F1700008F1700008F1800008F1800009019000090 +1900009217000094150000930E000C8C02011C8F000C1C9100191A95002619 +9A0037199D004C199D0061189D0076179F008D16A000AB139E00CD0E9B00F5 +0A9907FF009907FF009907FF009907FF009907FF009907FF009907FF009907 +FF009907FF009907FF008F1700008F1800008F180000901900009019000090 +190000901A0000911A000093190000951700009510000B8F04001B8F00091E +9200171D9600241B9B00341B9E00491B9F005F1A9F007319A0008B18A200A9 +159F00CC109D04F4099A09FF009A09FF009A09FF009A09FF009A09FF00990A +FF00990AFF00990AFF00990AFF00990AFF008F180000901900009019000090 +1A0000911A0000911B0000911B0000921B0000941A00009619000097130009 +930800198F0006219300141F9600221E9C00311C9F00461DA0005C1DA00071 +1BA100881AA200A6189A00C7169000ED149213FF009114FF009015FF008F16 +FF008F17FF008E17FF008E17FF008E17FF008E17FF008E17FF00901A000090 +1A0000911B0000911B0000911C0000911C0000921D0000921D0000951C0000 +971A000099160007960C0016910204229300112296001F209C002E1FA00042 +209F00582095006A228D007D23890094248500B1237700CF20881FFF01871F +FF028620FF028520FF028421FF028421FF028421FF028421FF028421FF0284 +21FF02911B0000911C0000911C0000921D0000921D0000921E0000921E0000 +931F0000951E0000981D00009B1900059A1000149304012394000D2597001C +23960029248E00382886004A2C7B005C2C72006E2C6C00842D65009D2D5E00 +C12C5A01FE275801FD295701FD2A5602FD2B5503FD2A5503FD2A5503FD2A55 +03FD2A5503FD2A5503FD2A921D0000921D0000921E0000921F0000931F0000 +93200000932000009320000096200000991F00009C1C00039D150011970800 +228F00072B8300123179001E3670002A396700383B5F004A3D57005F3E5200 +773E4D00903C4800AF375010FF2A4E11FF2A4D11FF2A4C12FF2B4C12FF2B4B +12FF2B4B12FF2B4B12FF2B4B12FF2B4B12FF2B921F0000931F000093200000 +9320000093210000932100009322000094220000972200009A2100009D2000 +01A119000E9112001E7A0A003064020541580011474E001D4B46002B4E3E00 +3B5037005152320068503000814D2C00A249350EFD39320EFF3A2E0BFF3E2B +09FF412807FF432706FF442706FF442706FF442706FF442706FF4493210000 +93210000932200009322000094230000942400009424000094240000972400 +009B2400009A2400019223000D841F001B6D18002C510E0043360102582A00 +0F5C22001D5D1A002C5F14003F5F1100535D11006A5C11008A5A0A00E95608 +00FA550600FB550500FB550400FB560300FB560300FB560300FB560300FB56 +0300FB56942300009423000094240000942500009425000094260000952600 +009527000098270000942B00008D2F0003842E000F762A001A6025002B451D +00402A1300550C0500660205106900092267000B3463000D4A600010685F00 +148F5B0015CC520015E14F0016E04E0017DF4E0018DF4D0018DF4D0018DF4D +0018DF4D0018DF4D0018DF4D94250000942600009527000095270000962800 +009629000096290000972A0000903000008937000081390006763700126834 +001D5230002A3B2A003A2322004E0616015D0018115D001D215A0020345800 +234E5700297054002C924C002BC744002AE642002BE741002BE740002CE740 +002CE740002CE740002CE740002CE740002CE7409628000096290000962A00 +00972B0000972B0000972C0000962E00008C330000853B00007E410000743F +000A693E00145A3D001E473B0026313800311C30004502250254002A125100 +30234F0038374F003C524E003E6E4800409040003FC138003FE935003FE934 +0040E9340040E9330041E9330041E9330041E9330041E9330041E933972B00 +00982C0000982D0000982E0000992F0000953200008A380000813D00007942 +0000704400046745000C5D4600135047001A3F4700212A44002C153D003E01 +36044B003E15470048274600503D430051554100526D3D00538C370053BB2F +0054F12C0055F22B0055F22B0056F22B0056F22B0056F22B0056F22B0056F2 +2B0056F22B99300000993100009A3200009B33000095360000883D00007F40 +0000754300006D460000654800055D4C0009544F000F485100163851001E24 +5000270F4B0038004A07410055183D005E2B3800623E350064553100656D30 +00678B2D0069BB270069FF25006AFF25006AFF24006AFF24006AFF24006AFF +24006AFF24006AFF24006AFF249B3500009C3600009D370000953C00008741 +00007B440000724500006A460000624A00005B4E0002545300044C58000941 +5B0012325C001A1E5C002309590032005F0A3400691B2D006F2A2C00733E29 +00775626007A6E25007B8C23007CBF1F0079FD1D0079FD1D007AFD1D007AFE +1C007AFE1C007AFE1C007AFE1C007AFE1C007AFE1C9E3A00009F3C00009440 +000085440000784600006E48000066490000604A0000594E0000525400004C +5B0001456100063A65000E2A6700161869001F0469002B00720C28007B1A23 +0080292200833F1F0089561E008D701D008E901C008DC01A0088FF150089FF +150089FF150089FF150089FF150089FF150089FF150089FF150089FF15A03F +00009443000082470000754900006B4A0000634B00005D4C0000574E000051 +5400004B5B0000456300003D6A0004326F000B247300121276001B017A0023 +00840B1F008E181B0093271900953C16009A5315009E6E1500A3911500A1BC +150099FA0F0099FF0F0099FF0F0099FF0E009AFF0E009AFF0E009AFF0E009A +FF0E009AFF0E93460000804A0000724B0000684C0000604E00005A50000054 +510000505300004A5B0000446300003D6B0000367400022B7A00071E80000D +0E840016038C011900970A1700A2161300A8241100AB360E00AD4E0C00B26A +0C00BB8B0B00BCB20D00B1EA0A00AEFB0900AEFB0900AEFB0900AEFB0900AE +FB0900AEFB0900AEFB0900AEFB097E4C0000704D0000654F00005D51000057 +530000525500004D580000495B0000436300003C6C0000367500002E7E0000 +258600021B8F00060F97000C04A0001100AD070F00BB120C00C4200900CA31 +0700CA480400D3640300DA830300DEA20303EAF20102D3F90202D4F90202D4 +F90102D4F90102D4F90102D4F90102D4F90102D4F9016D500000635200005A +540000545700004F5A00004A5D000046600000426300003C6D000035770000 +2D800000268A00001E94000017A0000010AB000107B9000501C9020800DF0D +0500EF1D0400FD2D0100FF3F0000FF5E0000FF730000FF8B0000FFA70000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20060 +55000058580000525B00004D5F000048630000436700003F6B00003C6D0000 +357700002D800000258900001E930000179D00000FA7000009B2000002BF00 +0300D2050200E7130100F5220000FF300000FF4B0000FF630000FF730000FF +8A0000FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200565C0000505F00004B63000046670000416A00003C6D0000 +386F0000347100002D7A0000258300001E8C0000169600000F9E000008A700 +0101B2000400BF020200D3080000E7130000F4220000FF2F0000FF480000FF +610000FF710000FF860000FF9E0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2004F60000049640000436800003E6C0000 +396F000034710000307300002C750000257D00001E860000168F0000119700 +000C9E000007A7000101B2000400BF020200D2070000E6130000F3210000FF +2E0000FF450000FF5F0000FF6F0000FF830000FF9C0000FFB00000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20047660000416A0000 +3B6D000036700000317300002C75000028770000257800001F7F00001B8700 +00168E0000119600000C9E000008A7000101B1000400BE020200D1070000E5 +120000F2200000FF2D0000FF420000FF5D0000FF6E0000FF800000FF9A0000 +FFA90000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +3E6B0000396F0000337200002D740000297600002478000023780000237800 +001F7F00001B870000168E0000119600000D9E000008A7000002B1000400BE +020200D0060000E4120000F11F0000FE2C0000FF3E0000FF5B0000FF6C0000 +FF7D0000FF930000FFA30000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20036700000307300002A7600002578000023780000237800 +0023780000237800001F7F00001B870000168E0000129600000D9E000008A6 +000002B0000300BD020200CF060000E3110000F01E0000FD2B0000FF3B0000 +FF590000FF6B0000FF790000FF8D0000FF9E0000FFAF0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8409000084090000850A0000860A0000860B0000860B0000870C0000870C00 +00870B0000850600038200040B84000C0A850016098600200889002D078E00 +3E05900052049000670391007C02920090019000A4019000BC009000E2008F +00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF00850A0000850A0000860B0000860B0000870C0000870C00 +00880C0000880D0000880B0000860700028300030C84000C0B8500150A8700 +200989002C088E003D06900051059100660592007B0393008F029100A40190 +00BB009000E0008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF008F00FF008F00FF00850A0000860B0000870B0000870C00 +00880C0000880D0000880D0000890E0000890C0000870800028401020C8500 +0B0C8600140B87001F0B8A002B0A8F003C08910050069200650693007A0493 +008F039200A3029100BB019100DF009000FF009000FF009000FF009000FF00 +9000FF009000FF009000FF009000FF009000FF009000FF00860B0000870C00 +00870C0000880D0000880D0000890E0000890E00008A0E00008A0D00008809 +00028502010D8500090D8700130C88001E0C8B002A0B8F003B0992004F0893 +0064079400790694008E049300A3039200BB019200DD009000FF009100FF00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +00870C0000880D0000880D0000890E0000890E00008A0F00008A0F00008A0F +00008B0E00008A0B00018602010D8600080F8800120E89001D0D8C00290C90 +003A0A93004E09930063099500780896008D069500A3049300BA029200DC00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +009100FF009100FF00880D0000890E0000890E00008A0F00008A0F00008A10 +00008B1000008B1000008C0F00008B0C00008703000D870007108900110F8A +001C0E8D00280D9100380C94004D0B9400620A9600760997008C089600A205 +9400BA039300DB019200FF009200FF009200FF009200FF009200FF009200FF +009200FF009200FF009200FF009200FF00890E00008A0F00008A0F00008A10 +00008B1000008B1100008B1100008C1100008C1000008D0E00008905000C87 +000612890010118B001B108D00270F9200370E95004B0D9600600C9600750B +98008B0A9700A2079600BB049400DB029300FF009300FF009301FF009301FF +009301FF009301FF009301FF009301FF009301FF009301FF008A0F00008B10 +00008B1000008B1100008C1100008C1200008C1200008C1300008D1200008E +0F00008C08000A870004148A000E138C0019128E002611930035109600490F +97005E0E9800730D9900890C9900A1099700BB069600DB039401FF009401FF +009401FF009401FF009401FF009401FF009401FF009401FF009401FF009401 +FF008B1000008B1100008C1200008C1200008C1300008D1300008D1400008D +1400008E1300008F1100008E0A0009880102158B000C158D0018148F002412 +940033119700471198005C10990071109A00870E9B00A00C9900BC089700DC +059501FF009501FF009501FF009501FF009501FF009501FF009501FF009501 +FF009501FF009501FF008C1200008C1200008D1300008D1400008D1400008D +1400008E1500008E1500008F15000090120000900D00078B0301158B000A17 +8E0016169000221495003113990045139A005A139A006F129B0085119C009F +0E9B00BB0B9900DD079603FF009503FF009404FF009204FF009105FF009106 +FF009006FF009006FF009006FF009006FF008D1300008D1400008D1400008E +1500008E1600008E1600008F1600008F170000901600009214000092100005 +8D0500148C0008198F0014189100201796002F169A0042169B0058159B006C +149C008213990099149300B5138B00D5108B0DFF028A10FF008810FF008811 +FF018711FF018611FF018612FF018612FF018612FF018612FF018E1500008E +1500008E1600008F1700008F1700008F1800008F1800009018000091180000 +9316000094130003910900138D01051C8F00111B92001E1997002C189B003F +189600531B8D00641D8500751E81008A1F7F00A41F7400C01C6C00F4177A14 +FF0A7814FF0B7714FF0B7614FF0C7514FF0C7514FF0C7514FF0C7514FF0C75 +14FF0C8F1700008F1700008F1800008F1800009019000090190000901A0000 +901A0000921A00009418000095150002940C00108D01011E90000E1E93001B +1C8D00261E850034237D004526730056256C00672667007C27610094285B00 +B3275600E8255300FA255200F9265101F9265001F9274F01FA274F01FA274F +01FA274F01FA274F01FA27901800009019000090190000901A0000911A0000 +911B0000911B0000911C0000931C0000951A0000971800019711000E910400 +1E860007257C00112A72001C2E680027316000333459004336520059374E00 +6F384B0088364600A7324200EA32460AFF2A460BFF2A450CFF2A450DFF2945 +0DFF29450EFF29450EFF29450EFF29450EFF29901A0000911B0000911B0000 +911C0000921C0000921D0000921D0000921E0000931E0000961D0000981B00 +009716000B8810001B7208002C5E0105395200103F49001B43410028463A00 +384934004C4B2F00624A2D0079472A0095442800D5412E0BFC362A08FB3A27 +06FA3D2404F93F2203F9412203F9412203F9412203F9412203F941911C0000 +921D0000921D0000921E0000921E0000931F0000931F000093200000942000 +00971F0000912000008920000B7B1C0019661600294B0C003C330102502800 +0E5520001C5718002A5912003B590F004F570E0065560F007F550A00C35307 +00F24E0500F24F0400F24F0300F2500200F2500200F2500200F2500200F250 +0200F250921E0000931F000093200000932000009321000093210000932200 +0093220000942300008C260000852A00027C29000D6E26001959220028401B +003A2712004F0B04005F0105106200092161000B325C000D47590010635800 +1384540015B24D0015DC480016DB470017DB470018DA460018DA460018DA46 +0018DA460018DA460018DA4693210000932100009322000094230000942300 +00942400009424000090260000882B0000823100007A3300056F310011602F +001C4C2C002736270035202000480515015600171057001B2153001E325100 +2149510026674E00298545002AAF3F0029E03C002AE03B002AE03A002BE13A +002BE13A002BE13A002BE13A002BE13A002BE13A9423000094240000942500 +009425000095260000952700008F2A0000852F00007E350000773B00006D3A +000A623900145438001C413700232C33002C192C00400223034D0028134A00 +2E23470035364800394D47003B6742003D8339003CAB33003CE72F003DE72E +003DE72E003EE72D003EE72D003EE72D003EE72D003EE72D003EE72D952600 +00952700009628000096290000962A00008E2E0000843500007B390000733D +00006B3F0004623F000C574100134A4200183942001E263F00271338003901 +330544003B153F0044263E004C3A3B004D5039004E6736004F8232004FA92C +0050E9250050EB250051EC250051EC250052ED250052ED250052ED250052ED +250052ED25972A0000972B0000972C0000982D00008D330000823A0000783D +0000703F00006842000060440004584700084F4A000D434C0013334C001A21 +4A00240C4500340046083A0051193600592931005D3B2E0060512A0061672A +006282290064A8240063FF210064FF200064FF200065FF200065FF1F0065FF +1F0065FF1F0065FF1F0065FF1F982F000099300000993100008D380000813E +0000754100006C420000654300005E460000574A0001504F0002485300073C +55000F2D5600171A5600210653002E005A0C2E00641B2900692927006D3B24 +00725221007569200075831F0076A81C0074F3190074FE180075FE180075FE +180075FE180075FE180075FE180075FE180075FE189B3400009C3500008D3D +00007E4200007244000069450000614600005B480000554A00004F50000048 +560000405B0004355F000C266100141462001D01620128006C0D2300741A1F +0079281E007D3B1B0082521900876B18008785180088AC160084EB120084FF +110084FF100084FF100085FF100085FF100085FF100085FF100085FF109E3A +00008B4100007C4600006F470000664800005E490000584B0000534D00004E +50000047570000405E0000396400022D6800091F6C00110E6E001A0073021F +007E0D1B00861917008B2715008E391200924F100095681000998510009CAC +100096E00C0093FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094 +FF0A0094FF0A8A450000794800006C490000634B00005B4C0000554E000050 +5000004B530000465700003F5E000039660000316D0001267300071877000D +097C001500840317008F0C130098170F009E240C00A0350900A24A0700A663 +0700AC830600B0A20500A9CF0500A5FA0500A5FA0400A5F90400A5F90400A5 +F90400A5F90400A5F90400A5F904764B0000694C0000604E00005850000052 +5200004D55000048580000445B00003F5F000038670000306F000029770000 +1F7F000313850009078C000F0095030F00A20B0B00AD150700B4210400B631 +0200B7450000C0600000C67F0000CA990000C8C60000BDF10000BDF10000BE +F10000BEF10000BEF10000BEF10000BEF10000BEF100674F00005D51000056 +530000505600004A5A0000455D0000416100003D6400003869000030710000 +297A0000218300001A8C000011950002069C000700A8020800B8080300C811 +0100D51F0000E42D0000FC3F0000F55B0000F7710000F78A0000FBAA0000F2 +DC0000F3D90000F4D70000F4D60000F4D50000F4D50000F4D50000F4D5005B +540000535800004D5C000048600000436400003E680000396B0000356E0000 +30730000297D0000218700001A900000129900000BA2000005AB000200B701 +0300C7040100DD0D0000EC1A0000FA280000FF360000FF570000FF6C0000FF +7F0000FF9C0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200515D00004B62000045670000406A00003B6E000036700000 +327200002D74000029780000218100001A8A0000149200000F9A00000AA200 +0005AB000200B7010300C6040100DD0C0000EB190000FA270000FF340000FF +550000FF6B0000FF7C0000FF990000FFAE0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20049640000436800003D6C0000386F0000 +337200002E7400002976000026780000227B00001D820000198A0000149200 +000F9900000BA2000005AB000200B6000300C5030100DB0B0000EB180000F9 +260000FF330000FF530000FF690000FF790000FF920000FFA80000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200416A00003B6E0000 +357100002F7400002A760000267800002378000023780000227B00001E8200 +001989000014910000109900000BA1000005AA000201B6000300C5030100DA +0B0000EA180000F8260000FF320000FF510000FF670000FF760000FF8C0000 +FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +386F0000327200002C75000026770000237800002378000023780000237800 +00227A00001E8200001989000015910000109900000BA1000005AA000201B5 +000300C4030100D90A0000E9170000F7250000FF310000FF4E0000FF650000 +FF730000FF870000FF9E0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002F74000029770000237800002378000023780000237800 +002378000023780000227A00001E8200001989000015910000109900000BA1 +000006AA000101B5000300C3030100D80A0000E9160000F6240000FF300000 +FF4C0000FF620000FF700000FF830000FF9B0000FFAA0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<7A0400007B0400007B0400007C0500007D0500007E0600007F0600007F0600 +00800700007D0400007C0005047E000C037F00150380001E02810029028600 +390089004C008A0061008B0075008C0088008B009B008A00B0008A00D0008A +00FF008900FF008900FF008900FF008900FF008900FF008900FF008900FF00 +8900FF008900FF007B0400007C0500007D0500007E0600007E0600007F0600 +008007000081070000810700007E0400007D0004057F000C04800014038100 +1D0382002902870038008A004B008B0060008C0074008D0088008C009A008B +00B0008B00CF008B00FF008A00FF008A00FF008A00FF008A00FF008A00FF00 +8A00FF008A00FF008A00FF008A00FF007C0500007D0500007E0600007F0600 +008007000081070000810800008208000083080000800500007D0003068000 +0B058100130481001D0483002803880037018B004A018B005F018D0073008E +0087008D009A008C00AF008C00CE008C00FF008B00FF008B00FF008B00FF00 +8B00FF008B00FF008B00FF008B00FF008B00FF008B00FF007E0600007F0600 +00800700008107000081080000820800008308000084090000840900008106 +00007E00020781000A068200120682001C0584002704880036028C0049018C +005E018E0072018E0087008E0099008D00AF008D00CE008D00FF008C00FF00 +8C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF +0080070000810700008208000082080000830900008409000084090000850A +0000850A0000830700007F000108810009088200120783001B068500260689 +0035048D0048028E005D028F0071018F0086008F0099008E00AE008E00CD00 +8E00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF +008D00FF008D00FF0081080000820800008309000084090000850A0000850A +0000860A0000860B0000860B00008508000081010009820008098300110884 +001A08860025078A0034058E0046038F005C03900070029100850090009800 +8F00AE008F00CC008F00FF008E00FF008E00FF008E00FF008E00FF008E00FF +008E00FF008E00FF008E00FF008E00FF008309000084090000850A0000850A +0000860B0000860B0000870C0000870C0000880C0000870A00008303000883 +00060B84000F0A85001909870024088B0032078F00450590005A0491006F03 +92008402910098019000AD019000CA009000FF008F00FF008F00FF008F00FF +008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00850A0000860A +0000860B0000870C0000870C0000880C0000880D0000890D0000890E000089 +0B0000860500078400050D85000E0C8600180B8800230A8C00310990004307 +9100590692006D0593008204930097039200AD029100C9009100FE009000FF +009000FF009000FF009000FF009000FF009000FF009000FF009000FF009000 +FF00860B0000870C0000880C0000880D0000890D0000890E0000890E00008A +0F00008A0F00008A0D0000880700058500030E86000C0E8800170D8900220C +8D002F0B910042099300570893006C0895008106950096049300AC039200C8 +009200FA009100FF009100FF009100FF009100FF009100FF009100FF009100 +FF009100FF009100FF00880D0000880D0000890E0000890E00008A0F00008A +0F00008A1000008B1000008B1000008C0E00008A0A00048602020F87000A10 +8900150F8B00200E8E002E0D9200400B9400550A95006A0A96007F09970095 +079500AC049400C7019100F4008D00FF008B01FF008A02FF008902FF008903 +FF008803FF008803FF008803FF008803FF00890E00008A0F00008A0F00008B +1000008B1000008B1100008C1100008C1200008C1200008D1000008D0C0003 +89030110880008128A0013118C001E108F002C0F94003D0E9600530D960067 +0D93007A0E8E008E108A00A50F8300BF0D7E00E70A810AFF01800BFF017F0B +FF027D0BFF037D0BFF037C0BFF037C0BFF037C0BFF037C0BFF038A1000008B +1000008B1100008C1100008C1200008C1200008D1300008D1300008D140000 +8E1200008F0F00018B06000F890006158B0011148D001D139100291193003A +128C004C1684005E177D006E197900811A7600981A6F00B2186800DB146B06 +FF0F6704FE116402FE126201FD136100FD146000FD146000FD146000FD1460 +00FD148C1200008C1200008D1300008D1300008D1400008D1400008E150000 +8E1500008E16000090140000901100008F0A000C890003188C000E178C001A +168400231A7C002F1D74003F206C004F2065006120610075225D008B235700 +A7225300D0215000F5204E00F5214D00F5224C00F5224B00F5234B00F6234B +00F6234B00F6234B00F6238D1300008D1400008E1500008E1500008E160000 +8E1600008F1700008F1700008F1800009116000092140000920E000A8B0301 +187E000720740010246A001A286000232B59002D2D52003D2F4D0052314900 +68314700803144009E2E3F00C82D3F04FE2A3E05FE2A3D05FE2A3D06FE2A3C +06FE2A3C07FE2A3C07FE2A3C07FE2A3C07FE2A8E1500008E1600008F170000 +8F1700008F180000901800009019000090190000901A000092190000941700 +008E1400087F0E001769060027580105324D000F384300193C3B00253F3600 +34412F0047432B005C432900714127008B3F2400B33C2807F6342505F33722 +03F1392002EF3B1E01EE3C1D00ED3D1D00ED3D1D00ED3D1D00ED3D8F180000 +8F1800009019000090190000901A0000911A0000911B0000911B0000911C00 +00931B00008A1D0000801D0009731900165E130025470B0036300102472500 +0D4D1D001A5016002852100038530C004A510B005F4F0B00774E0800AA5106 +00E7470400E6480300E6480200E5480201E4480202E3480202E3480202E348 +0202E348901A0000911A0000911B0000911C0000911C0000921D0000921D00 +00921E00008D1F0000852200007E2600017425000C66230018521F00243C18 +0035251000490A04005801050F5B0009205A000B3055000D435200105D5000 +137B4D0015A0460014D8410015D8400016D83F0017D83F0018D83E0018D93E +0018D93E0018D93E0018D93E911C0000921D0000921D0000921E0000921F00 +00931F0000932000008B230000822700007B2C0000732E0005682D0010592B +001A46280023322400301D1D00420413014F0016104F001A214C001D314A00 +2045490024604700277B3E00299F390028E1360028E1350029E1340029E234 +002AE233002AE233002AE233002AE233002AE233931F000093200000932000 +00932100009322000093220000882600007F2C000078300000703500006735 +00095C3400144D34001A3C32001F292F002817290039012103460026134200 +2B233F00313440003649400037603B00397A3300399C2E0039DE29003AE729 +003BE628003BE628003BE627003CE527003CE527003CE527003CE527932200 +0094230000942300009424000094250000872B00007D310000753500006D38 +0000653A00035C3B000C513C0011453D0015353D001A233A00231034003300 +30063D00381638004026360047383300494B30004A612F004B7A2C004B9B28 +004CD020004DE31F004DE41F004EE51F004EE61F004EE61E004EE61E004EE6 +1E004EE61E94250000942600009527000093280000862F00007C360000723A +00006A3C0000633D00005B400003534200064A4600093F47000F2F4700161D +4500200A3F002F00430933004C192F0053282B00583828005C4D23005D6223 +005E7A24005E9922005FD71B0260FF190260FF190261FF190161FF190161FF +190161FF190161FF190161FF1996290000962A0000932D0000853500007A3B +00006F3E0000663F00005F41000059420000534600004C4B0000444F000338 +51000B285100131750001E044D012B00550D29005E1A240063282300673820 +006C4D1B0070641B00707C1A007099180070D1140070FC130070FC130070FC +130071FC130071FC130071FC130071FC130071FC13982E000093320000853B +0000773F00006C410000634200005C44000056450000514700004B4C000044 +5100003C57000030590009215B0011105B001B005C032400660E1E006E1A1B +0073271A00763817007C4D140081661300827D1200829C110081CE0E0080FF +0C0080FF0B0080FF0B0081FF0B0081FF0B0081FF0B0081FF0B0081FF0B9537 +0000833F000074420000694400006046000059470000534900004E4B00004A +4E0000435200003C590000345F0000286200071A65000F0A670018006C051B +00770F16007F1A13008427100087360D008A4A0B008E620A00917B0900969C +0A0092C908008FFF05008FFF040090FF040090FF040090FF040090FF040090 +FF040090FF048243000072460000664700005D490000564B0000504D00004B +50000046520000425500003B5A0000336100002C670000216C00061370000D +04740014007D061300880F0E0090190A009625070098340400994601009C5E +0100A17A0100A7980000A3BE01009EFC01009EFC01009EFC01009EFC00009E +FC00009EFC00009EFC00009EFC0070490000634A00005A4C0000534F00004D +51000048550000435700003E5A00003A5D0000336300002B6A000024710000 +197700040D7C000A0183000F008D070B00980E0600A2170200A8230000AA31 +0000AB430000B15B0000B7780000BC930000BAB60000AEF50000AEF70000AE +F70000AEF70000AEF70000AEF70000AEF70000AEF700614D00005850000051 +5300004A560000455A0000405D00003B60000036630000326600002B6C0000 +247400001C7C000013830002088B000700920109009B050500A80A0200B411 +0000BF1B0000C6290000CA3A0000D2520000D86C0000DC870000E0A40000DA +F30000D1F60000D1F70000D2F70000D2F70000D2F70000D2F70000D2F70055 +5400004E580000485C0000426000003D64000038680000336B00002E6E0000 +2B700000247700001D80000017880000129100000D99000007A1000101AC00 +0500BB030200CE070000E3120000F2200000FF2E0000FF480000FF630000FF +740000FF8F0000FFAA0000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2004C5D000046620000406700003A6C0000357000002F730000 +2B7600002777000023780000207D00001C850000178D0000129500000D9C00 +0009A5000003AF000300BC010300CE050000E3110000F11F0000FF2D0000FF +440000FF600000FF710000FF8A0000FFA40000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200446800003D6C00003770000031730000 +2C75000027770000237800002378000023780000207D00001C850000178C00 +00139400000E9C000009A5000003AF000300BB010300CD050000E2100000F0 +1E0000FE2C0000FF410000FF5E0000FF6F0000FF850000FF9F0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2003B6E000034710000 +2E740000287700002378000023780000237800002378000023780000207D00 +001C850000178C0000139400000E9C000009A5000003AE000300BB010300CC +050000E1100000EF1D0000FD2B0000FF3D0000FF5C0000FF6E0000FF820000 +FF9C0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +317300002A7600002578000023780000237800002378000023780000237800 +0023780000207D00001C850000188C0000139400000E9C000009A4000003AE +000300BA010300CB050100E00F0000EE1C0000FC2A0000FF3A0000FF590000 +FF6C0000FF7E0000FF9A0000FFAC0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002777000023780000237800002378000023780000237800 +00237800002378000023780000207D00001C840000188C0000139400000E9B +000009A4000003AD000300BA010300CA050100E00E0000ED1B0000FB290000 +FF360000FF560000FF6B0000FF7A0000FF920000FFA40000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<72000000720000007300000073000000740100007501000075010000760100 +0076020000760100007600050177000C007800140079001C007A0026007D00 +3400820045008200590083006C0085007F00850091008400A4008400BD0084 +00F1008300FF008300FF008300FF008300FF008300FF008300FF008300FF00 +8300FF008300FF007300000073000000740000007501000075010000760200 +00760200007702000078020000770200007700040178000B00790013007A00 +1B007B0026007E003300830045008300580084006C0086007F008600910085 +00A4008500BD008500F0008400FF008400FF008400FF008400FF008400FF00 +8400FF008400FF008400FF008400FF00740000007401000075010000760200 +00770200007702000078030000780300007903000078020000780004017A00 +0B007A0012007B001B007C0025007F003200840044008500580086006B0087 +007F00870091008600A4008600BD008600ED008500FF008500FF008500FF00 +8500FF008500FF008500FF008500FF008500FF008500FF0075010000760200 +0077020000770200007803000079030000790300007A0400007A0400007A03 +0000790003027B000A017C0012007C001A017D002401800031008500430086 +00570087006A0088007E00880091008700A4008700BD008700ED008600FF00 +8600FF008600FF008600FF008600FF008600FF008600FF008600FF008600FF +00770200007702000078030000790300007A0300007A0400007B0400007B04 +00007C0500007B040000790002037C0009027D0011017D0019017E00230181 +003000860041008700560088006A0089007E00890090008800A4008800BC00 +8900EB008700FF008700FF008700FF008700FF008700FF008700FF008700FF +008700FF008700FF0078030000790300007A0400007B0400007B0400007C05 +00007D0500007D0500007E0600007E0500007A0001047C0008037E0010027E +0018027F00220282002F018700400088005500890069008B007D008B009000 +8A00A3008900BC008A00EB008900FF008900FF008900FF008900FF008900FF +008900FF008900FF008900FF008900FF007A0400007B0400007C0500007D05 +00007D0500007E0600007F0600008007000080070000800600007C0201047D +0007047F000F04800018038100210383002E0188003F008A0053008B006800 +8C007C008C008F008B00A3008A00BC008B00E9008A00FF008A00FF008A00FF +008A00FF008A00FF008A00FF008A00FF008A00FF008A00FF007C0500007D05 +00007E0600007F060000800700008007000081080000820800008308000082 +0800007F0300037E00060680000E05810017048200200484002D038A003D01 +8C0052018C0067018D007B008E008F008D00A2008C00BB008D00E6008B00FF +008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00 +FF007E0600007F070000800700008108000082080000830800008409000084 +090000850A000084090000810500017F00040881000C078200150683001F06 +86002B058B003C038D0050028E0065028F007A008F008E008E00A1008D00BA +008E00E3008C00FF008C00FF008D00FF008D00FF008D00FF008D00FF008D00 +FF008D00FF008D00FF00810700008208000083080000840900008409000085 +0A0000850A0000860B0000860B0000870B0000840700018101020A83000B09 +8400140885001E0887002A078C003A048F004E038F0063039000780191008D +009000A1008B00B6008800DC008500FF008300FF008100FF008000FF008000 +FF007F00FF007F00FF007F00FF007F00FF008409000084090000850A000086 +0B0000860B0000870C0000870C0000880C0000880D0000880C000087090001 +8301010B8400090B8500120A86001D0A890028098D00380790004C058F0060 +06890072098500840B8000970B7B00AE097700CC077906FF007705FF027505 +FF027405FF037405FF037305FF047305FF047305FF047305FF04860B000086 +0B0000870C0000880C0000880D0000890D0000890E0000890E00008A0F0000 +8A0E00008A0B00008603000B8500060E8700100D88001B0C8A00260B880034 +0D820044107B0056127500671471007A156D008E156800A6146400C8106200 +FE0E6000FD0E5F00FD0F5E00FC0F5D00FC105C00FC105C00FB105C00FB105C +00FB10880C0000880D0000890E0000890E00008A0F00008A0F00008A100000 +8B1000008B1000008C1000008C0D0000890700088600041188000E10830017 +127A00201572002B186B00371A6400471B5E005A1C5A006E1D5700831E5300 +9D1E4F00BF1D4D00F21B4B00F11C4A00F11D4800F11E4800F11E4700F11E47 +00F11F4700F11F4700F11F8A0E00008A0F00008A1000008B1000008B110000 +8B1100008C1200008C1200008C1300008D1200008E1000008D0B0006830201 +147600071B6D000F1F620018225900212551002A274B00372947004B2B4400 +612C4100782B4000932A3C00B6293A01FA273902FA273802FB283702FC2837 +02FC283603FD293603FD293603FD293603FD298B1000008B1100008C120000 +8C1200008D1300008D1300008D1400008D1400008E1500008E150000901200 +0085120005760D0013610400235200052C47000E303E001835360023383000 +313B2B00423C2700563C25006A3B230082392100A2372100E8341F00E9351D +00E7351C00E6361B00E5361A00E4361A00E4371A00E4371A00E4378D130000 +8D1300008D1400008E1500008E1500008E1600008E1600008F1700008F1700 +008B180000821A0000791A00066B17001357110021420900302E01023F2300 +0C461B0019481400264B0E00354C0A00454B08005949080070480600954C05 +00CF420300D8410201D7400201D6400202D6400203D63F0203D63F0203D63F +0203D63F8E1500008E1600008F1700008F1700008F1800008F180000901900 +0090190000871C00007E200000772300006D22000A5F2000154C1C00213816 +002F220E00410903005001040E5300081F52000B2E4E000D404A0010584700 +1372440015923F0014C73A0015D7390016D7380016D7380017D7370017D837 +0018D8370018D8370018D8378F1800009018000090190000901A0000901A00 +00911B0000911B0000851F00007C240000742800006C2A00036129000F5227 +00184125001F2E21002B1B1B003A041201480015104700192144001C304200 +1E42410021594000247237002791330028C8310027E02F0027E12E0028E12E +0028E22E0028E22D0029E32D0029E32D0029E32D911A0000911B0000911C00 +00921C0000921D00008F1E00008223000079280000712D00006A3000006130 +0009552F0012482F0016382E001B272B002415250033011F033F0024133B00 +292338002E32370032443700335A330035712D003690290038C1250037E623 +0038E4230038E3220039E3220039E2210039E2210039E2210039E221921D00 +00921E0000921F0000931F00008C22000080280000772D00006E3100006734 +0000603600015736000A4C38000E40390011313900162136001F0E2F002E00 +2D063600351632003C252F0042352C0044472900465C280047722700489025 +0049BA1C0049E21A004AE319004AE419004BE419004BE419004BE519004BE5 +19004BE5199321000093210000932200008B2500007F2D0000753200006B36 +0000643800005D3A0000573C00014F3F0002474200043B43000B2B4300121A +40001D083B002B003F0A2D00481929004D2626005236230057491E00595E1D +005A731F005A8F1E005BBC17005BF815005BF815005CF815005CF814005CF9 +14005DF914005DF914005DF91494240000942500008A2A00007E3200007237 +0000693A0000603C0000593E0000543F00004F41000048460000404B000034 +4C0007254C0010144A001B0248022700510E2300581A1F005D261E0061351B +00664917006B5F15006C7515006C8F14006CB910006BF80E006CF70E006CF7 +0D006CF60D006DF60D006DF60D006DF60D006DF60D962800008A2F00007D37 +0000703C0000663E00005D40000056410000514300004C450000474800003F +4D0000375200002C5400061D55000F0C5400190057041F00610F1A00681A17 +006C2616007035130075480F007A600D007C760C007D8F0B007DB709007CFD +06007DFD06007DFE05007DFE05007DFE05007DFE05007DFE05007DFE058A34 +00007C3D00006E3F0000634100005A430000534500004E470000494A000044 +4C00003F4F0000375400002F590000245C0005165E000D0660001600670716 +0071101100791B0D007E270A008134080084460500865C04008A7403008F90 +02008EB602008BFE01008BFF01008CFF00008CFF00008CFF00008CFF00008C +FF00008CFF00794100006B4300006045000058470000514900004B4C000046 +4F0000405100003C540000375600002E5C0000276100001C6500050E69000C +016D01120076080E0081110900891B04008E26010090320000924300009358 +0000977100009D8E00009CB1000096ED000096FF000096FF000096FF000096 +FF000096FF000096FF000096FF00694600005D480000554B00004E4E000048 +510000425400003D57000038590000335B00002E5E0000276400001F6A0000 +147000040774000A007B030B00850808008E0F0500961602009B2000009E2C +00009F3C0000A2520000A66C0000AD8A0000AEAB0000A5DC0000A3FB0000A3 +FA0000A3FA0000A3FA0000A3FA0000A3FA0000A3FA005B4C0000524F00004B +520000455600003F5A0000395D0000346000002F6200002B65000027670000 +1F6E000018750000117A0003098000070186000B0090050800990A0400A410 +0200AC190000B3250000B5340000B8490000C0630000C5820000C89D0000C3 +D30000B9F40000BAF40000BAF40000BAF40000BAF40000BAF40000BAF40050 +53000049570000425C00003C60000036640000316700002C6A0000276D0000 +246F0000227000001D770000197F0000148600000F8E000107940005019C01 +0700A8040400B7080100C7100000D41C0000E32A0000FB3A0000F9570000F9 +6F0000FA890000FEAC0000F8CD0000F9CB0000FAC90000FAC80000FBC70000 +FBC70000FBC700475D00004063000039680000336C00002D6F000028730000 +247500002377000023780000237900001F8000001A88000016900000119800 +000CA0000006A9000101B4000400C2030100D80A0000E9170000F8250000FF +330000FF540000FF6B0000FF7F0000FF9D0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2003D6B000037700000307300002A760000 +2578000023780000237800002378000023780000237900001F8000001A8800 +00168F0000119700000C9F000007A8000101B3000400C1020200D7090000E9 +160000F7240000FF320000FF510000FF690000FF7B0000FF9A0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200347100002D750000 +27770000237800002378000023780000237800002378000023780000237800 +001F8000001A870000168F0000119700000C9F000007A8000101B3000400C1 +020200D5090000E8150000F6230000FF310000FF4F0000FF670000FF770000 +FF920000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +2A760000237800002378000023780000237800002378000023780000237800 +0023780000237800001F8000001A870000168F0000119700000C9F000007A8 +000101B2000400C0020200D4080000E7140000F5220000FF300000FF4C0000 +FF640000FF740000FF8C0000FFA30000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800001F7F00001B870000168F00001197 +00000C9F000007A7000101B2000400BF020200D3080000E6130000F3210000 +FF2F0000FF470000FF610000FF700000FF860000FF9E0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<6B0003006B0002006C0002006C0002006D0002006D0001006E0001006E0001 +006E0001006F0001007000050070000B007100130072001A00730024007400 +300078003E007A0051007C0063007D0075007E0087007D0099007C00AD007C +00CD007C00FB007C00FB007C00FC007C00FC007C00FC007C00FC007C00FC00 +7C00FC007C00FC006C0002006C0002006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100040071000B00720012007300 +1A007400230075002F0079003E007C0050007D0062007E0075007F0088007E +0099007E00AD007D00CD007E00FD007E00FD007E00FE007E00FE007E00FE00 +7E00FE007E00FE007E00FE007E00FE006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100010071000000720004007200 +0A0073001100740019007500220077002E007B003D007D0050007E00620080 +00750081008800800099007F00AD007F00CD007F00FF007F00FF007F00FF00 +7F00FF007F00FF007F00FF007F00FF007F00FF007F00FF006E0001006E0001 +006F0001007000010070000100710001007100000072000000720000007200 +0000730003007400090074001100750019007600220078002D007C003C007E +004F007F0062008100740082008800810099008000AD008000CE008000FF00 +8000FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF +006F0001007000010070000100710001007100000072000000730000007300 +00007300000074000000740002007500090076001000770018007800210079 +002C007D003B0080004E00810061008200740083008800820099008100AD00 +8100CE008100FF008100FF008100FF008100FF008100FF008100FF008100FF +008100FF008100FF0070000100710000007200000072000000730000007400 +000074010000750100007501000076010000750001017600080077000F0078 +001700790020007A002B007F003A0081004D00820061008300740085008700 +840099008300AD008300CE008300FF008300FF008300FF008300FF008300FF +008300FF008300FF008300FF008300FF007200000073000000730000007401 +00007501000075010000760200007702000077020000780200007601010177 +00070179000E007A0016007A001F007C002A008000390083004C0084006000 +8500730086008700850099008400AD008500CE008400FF008400FF008400FF +008400FF008400FF008400FF008400FF008400FF008400FF00740000007401 +0000750100007602000077020000770200007803000079030000790300007A +04000078010101790006017A000D007B0015007C001E007D00290082003800 +85004B0085005F008700720088008600870098008600AD008600CE008600FF +008600FF008600FF008600FF008600FF008600FF008600FF008600FF008600 +FF0076020000770200007702000078030000790300007A0300007A0400007B +0400007B0400007C0500007A0300007A0004027C000C017D0014017D001D01 +7F002801830036008700490087005E008800720089008600890098008800AD +008800CD008700FF008700FF008600FF008500FF008400FF008400FF008300 +FF008300FF008300FF0078030000790300007A0400007B0400007B0400007C +0500007D0500007E0600007E0600007F0600007D0400007B0003047D000A03 +7E0013037F001C0280002602840035008900470089005C008A0071008B0085 +00860095008200A8007F00C4007C00FE007A00FF007800FF007800FF007700 +FF007600FF007600FF007600FF007600FF007B0400007B0400007C0500007D +0500007E0600007F0600008007000081070000810800008208000080060000 +7D0001067F0009058000110481001A0482002503860033018B004501850058 +02800069057C007B0677008D077300A1066F00B9046F01EB026F02FF016E02 +FF026D02FF026C02FF026C02FF026B02FF036B02FF036B02FF037E0600007F +06000080070000810700008108000082080000830800008409000084090000 +850A0000840800007F020006800007088200100783001906830023067D002E +0877003D0B72004E0E6C005F0F680072116500861161009B105E00B80D5E00 +EE0A5E02FC095C02FB0A5A01FA0B5900F90C5800F80D5700F80D5700F70D57 +00F70D8107000082080000830800008409000084090000850A0000850A0000 +860B0000860B0000870C0000860A0000830500048200050A83000D0A7A0015 +0D71001E1069002713620032165C003F18570052185400671A51007C1A4F00 +931A4C00B1194A00E0174800ED174600ED184500ED194400EC194400EC1A43 +00EC1A4300EC1A4300EC1A84090000850A0000860A0000860B0000870C0000 +870C0000880C0000880D0000890D0000890E0000890C0000870800027B0201 +0F6F00061665000E1A5A00161D51001F214A00272444003326400045273E00 +5B273C0070273A0089263800A8243600DA243500F4243300F5243200F52532 +00F6253100F6253100F6263000F6263000F626870B0000870C0000880D0000 +890D0000890E0000890E00008A0F00008A0F00008A1000008B100000881000 +007D1000016F0B00105A03001F4C00062542000E2A3800162F310021332B00 +2D3426003D3523005035210064341F0079331D0095321D00C32F1D00E02E1B +00DE2E1A00DD2F1900DC2F1800DC2F1700DB301700DB301700DB30890E0000 +8A0E00008A0F00008A1000008B1000008B1100008B1100008C1200008C1200 +00841500007B1700007118000363150010510F001D3D07002B2B0103382000 +0B3E19001741120024440C003245070040450500544205016A410301864102 +00B4400200CF380201D0380202D0370203D1370203D1370104D1370104D137 +0104D1378B1000008B1100008C1200008C1200008D1300008D1300008D1400 +008C14000081190000781C0000701F0000661F0007581D00124719001D3413 +0029200D00390803004901040E4B00081E49000B2D45000D3D420010523E00 +136A3B001586370015B2340014D4320015D4310016D4310016D4300017D430 +0017D4300017D4300017D4308D1300008D1400008D1400008E1500008E1600 +008E1600008A1800007E1C0000752100006D240000662700015A26000B4D24 +00143D22001B2B1E002619180033031101410014103F0018203C001B2F3900 +1D3F38001F53360022692F0025862C0028B42C0025E02A0026E1290026E229 +0026E3280027E3280027E4280027E4280027E4288E1600008F1700008F1700 +008F18000090180000871B00007B210000722500006A290000632C00005B2D +0005502C000E432C0012342A0017242800201323002D011E04380022133400 +272231002B312F002E412D002F542900326A27003386240036AE220034E81F +0035E71E0035E61E0036E51D0036E51D0036E41D0037E41C0037E41C901900 +00901A0000901A0000911B0000851F00007A250000702A0000672D00006030 +00005A32000152330005483400093D35000D2E3500121E32001B0D2C002900 +2B072F0032162B00382428003C3325003F43230042572100446C2000458620 +0046AA190046E2150047E2150048E3140048E3140048E3140049E4140049E4 +140049E414911C0000921D0000921D000084230000782900006D2E00006532 +00005D34000156360000513800004B3B0000433E000038400006283E000F18 +3B001906360026003C0B270044192300482520004D331D0051451900555917 +00566E180056861A0058AB130057F20F0058F30F0058F30E0059F30E0059F3 +0E0059F20E0059F20E0059F20E932000009320000082270000762F00006B33 +0000623600005A390000533B00004E3C0000493E0000434100003B45000030 +4800032147000D1145001801430222004D0E1E00531A1A00572519005C3316 +0061451200655A100067700F0068880E0068A90B0067E7080068ED070068EB +070068EA070068E9070068E9060068E9060068E90691240000822C00007534 +0000693800005F3A0000573D0000503F00004B41000046430000414500003B +480000324C0000284F00031A4F000C094F00160052061A005B101500621A11 +00672510006B330D006F440A00735A0800766F05007887040079A9030078DC +010079FA010079FB010079FB010079FC01007AFC00007AFC00007AFC008133 +000073390000673C00005C3E0000544100004E43000048450000434800003D +4A0000384C0000324F000029540000205700031258000B035A011300610811 +006B110C00731B0700792704007B3201007D4100007E550100816C00008586 +000087A7000084E2000084FF000084FF000084FF000084FF000084FF000084 +FF000084FF00703E0000644000005A420000524500004B480000454B00003F +4D000039500000345200002F53000029570000225B0000185F00030A62000B +0067030E006F090A00771107007F19040084230200862E0000883C00008950 +00008B6700009182000093A200008FD200008EFF00008EFF00008EFF00008E +FF00008EFF00008EFF00008EFF0061440000574600004F490000484D000042 +5000003B53000036550000305800002C5A0000275B0000225F00001A640000 +12690003096C00090070010D0078070A00810D070089150400901E01009329 +000094370000964A0000986100009E7D0000A39D00009DC5000099FF000099 +FF00009AFE00009AFE00009AFE00009AFE00009AFE00544B00004D4E000046 +5200003F55000038590000325C00002D5E0000286000002462000020640000 +1E6700001A6C0000147100020C760006037B000B0083040A008C090700950F +03009E170100A3220000A62F0000A6410000AC590000B1770000B8940000B4 +BD0000AAF70000AAF70000AAF70000AAF70000AAF70000AAF70000AAF7004A +530000435700003C5C0000355F00002F6300002966000024680000216A0000 +216B0000216C0000206F00001B750000177C00001082000308890006019000 +090098040600A4090300B10F0100BC190000C4260000C8370000CF4F0000D6 +6A0000DB870000DEA80000CFF40000CFF50000CFF50000D0F50000D0F60000 +D0F60000D0F600405E000039620000326700002C6B0000266E000022710000 +22720000227200002273000022740000217800001D7F000018880000149000 +000F9900000AA2000004AC000300B9010300CA050100E00F0000EF1D0000FE +2C0000FF420000FF600000FF730000FF910000FFB00000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200366B0000306F00002974000023770000 +237800002378000023780000237800002378000023780000217B00001D8300 +00198A0000149200000F9A00000AA3000004AC000200B8010300C9040100DF +0E0000EE1C0000FD2A0000FF3E0000FF5E0000FF700000FF8A0000FFA80000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002C75000026770000 +23780000237800002378000023780000237800002378000023780000237800 +00217B00001D830000198A0000149200000F9A00000AA2000004AC000200B8 +010300C8040100DE0D0000ED1B0000FC290000FF3A0000FF5B0000FF6E0000 +FF850000FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +002378000023780000227B00001D820000198A0000149200000F9A00000AA2 +000005AB000200B7010300C7040100DD0D0000EC1A0000FB280000FF360000 +FF580000FF6C0000FF810000FF9D0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +0023780000237800002378000023780000227B00001D820000198A00001492 +00000F9900000BA2000005AB000200B7000300C6030100DC0C0000EB190000 +F9270000FF340000FF550000FF6B0000FF7D0000FF9A0000FFB00000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<63000600630006006400060064000500650005006600050067000400670004 +0068000400680004006800040067000B0068001200690019006A0022006A00 +2C006C003900700048007400590076006A0077007C0077008D007600A00074 +00B8007400E8007400E8007400E8007400E8007400E9007400E9007400E900 +7400E9007400E9006400050064000500650005006600050067000400670004 +00680004006900040069000400690003006A00040069000A00690011006A00 +18006B0021006C002C006E003800720048007500590076006A0078007C0078 +008E007700A0007500B8007500EC007500ED007500ED007500ED007500ED00 +7500ED007500ED007500ED007500ED00660005006600050067000400680004 +006800040069000400690003006A0003006A0003006A0003006B0003006A00 +0A006B0011006C0018006D0020006D002B006F003800730047007600590077 +0069007A007D007A008E007800A0007700B8007600EF007600F2007700F200 +7700F2007700F2007700F2007700F2007700F2007700F20068000400680004 +006900040069000300690003006A0003006A0003006B0003006B0002006B00 +02006C0003006C0009006D0010006E0017006F0020006F002A007100370075 +00470077005900790069007B007D007B008F007900A0007800B8007800F100 +7800F6007800F6007800F6007800F6007800F6007800F6007800F6007800F6 +0069000300690003006A0003006A0003006B0003006B0002006C0002006C00 +02006C0002006D0002006D0002006E0008006E000F006F00170071001F0071 +0029007300360076004600790059007A0069007D007D007D008F007B00A000 +7A00B9007A00F3007A00F8007A00F8007A00F8007A00F8007A00F8007A00F8 +007A00F8007A00F8006A0003006A0003006B0002006C0002006C0002006D00 +02006D0001006D0001006E0001006E0001006E0001006F00070070000E0071 +00160072001E007300280075003500790046007B0058007C0069007E007D00 +7E008F007C00A0007C00B9007C00F0007C00FB007C00FB007C00FB007C00FB +007C00FB007C00FB007C00FB007C00FB006C0002006C0002006C0002006D00 +01006E0001006E0001006F0001006F0001006F000100700001007000010071 +00060072000D007200150074001D0075002700770034007B0045007C005800 +7D0069007F007C007F008F007E00A1007E00BA007E00F5007E00FE007E00FE +007E00FE007E00FE007E00FE007E00FE007E00FE007E00FE006D0001006D00 +01006E0001006F0001006F0001007000010070000100710001007100000072 +000000720000007300050073000C007400140075001C007600260079003300 +7E0044007E0057007F00690081007C0081008F008000A1008000BA008000F4 +008000FF008000FF008000FF008000FF008000FF008000FF008000FF008000 +FF006F0001006F000100700001007100010071000000720000007200000073 +0000007300000074000000740000007400040075000B007600130077001B00 +780025007A0031007F004200800056008100680083007C0083008F008200A1 +008100BA008100F0007E00FF007C00FF007B00FE007A00FD007A00FD007900 +FD007900FD007900FD00710001007100000072000000730000007300000074 +00000074010000750100007601000076020000760200007600030177000A00 +7800110079001A007A0023007C00300081004100820055008300680081007A +007D008B0078009B007500B2007300D6007300FD007100FD007100FD007000 +FD007000FF006F00FF006F00FF006F00FF0073000000730000007401000075 +01000076010000760200007702000078020000780300007903000079030000 +77000202790009007A0010007B0018007C0022007E002E0080003E007A004E +0076006002720071046F0083046B0096036700AC026600CE016901FF006801 +FF006701FF006702FF006602FF006602FF006502FF006502FF007602000076 +020000770200007802000078030000790300007A0400007A0400007B040000 +7C0500007C0500007A0101027B0007027C000F017D0017017900200272002A +046C0036076700450A6300560C6000690E5E007E0F5B00910D5800AB0A5800 +D5085A02FB055801F9075600F8085400F7095400F6095300F60A5200F50A52 +00F50A79030000790300007A0400007B0400007C0400007C0500007D050000 +7E0600007F0600007F060000800700007D0300017C0005047A000C05710013 +0968001B0C6000241059002E135300391550004A164D005F174B0073174900 +89164700A4154600CA144500E9134300E8144200E8144100E7154000E71540 +00E7163F00E7163F00E7167C0500007C0500007D0500007E0600007F060000 +80070000810700008208000082080000830800008409000080060000730201 +0B670006115D000D155200151949001D1E420025223C003023390040233800 +54233600682234007F2233009A203200C11F3200EA1E3000E91F2F00E81F2E +00E8202D00E7202D00E7202C00E6202C00E620800700008007000081080000 +820800008309000084090000850A0000850A0000850A0000860B00007F0D00 +00750E0000670A000C5302001A470006203D000D243300152A2C001F2E2600 +2B2F2200392F1F004A2F1D005D2E1B00712E19008A2D1900AE2A1A00D72719 +00D5281700D5281600D5291500D4291500D4291400D4291400D42984090000 +84090000850A0000860A0000860B0000870C0000870C0000880C0000870D00 +007C110000741500006A1600015C13000C4B0D001938060026280103311D00 +0B371600163A1000223C09002E3E05003C3E03014E3C0302643902037D3801 +029E370201CE300202CE300203CE2F0104CE2F0104CE2F0105CE2F0105CE2F +0105CE2F870C0000870C0000880C0000880D0000890E0000890E00008A0F00 +00841100007915000070190000691C00005F1D0003521B000E421700183011 +00241E0B00310703004100040D4300081C40000B2B3C000D3A39000F4D3500 +12633100157B2D0016A02E0013CE2B0014CE2B0015CE2B0016CE2A0016CE2A +0017CE2A0017CF2A0017CF2A8A0E00008A0F00008A0F00008B1000008B1000 +008B11000082140000771900006D1D0000662100005F240000552300074721 +000F391F0017291B00211716002C0210013A0013103700171F33001A2D3000 +1C3C2E001E4E2B0020622600237B260026A1270023DA250024DB240024DC24 +0025DC230025DD230025DD230026DD230026DD238C1100008C1200008C1200 +008D1300008D1400007F180000741D00006B220000632500005C280000562A +00004B2900093F29000D312700132225001C12200027011C04310020132D00 +25212900282F27002B3E24002D4F21002F641F00317C1F00349E1E0032DC1B +0032E31A0033E1190033E0190034E0190034DF180034DF180034DF188E1500 +008E1500008E1600008D1700007E1C00007222000068260000602A0000582C +0001522E00014D30000044310003393200082B31000E1C2E00170C28002300 +280728002F1625003523210039301E003C401C003F521A0041661900427E1A +00439D160044D1100044E00F0045E10F0045E10F0046E20F0046E20E0046E2 +0E0046E20E8F180000901800008C1A00007C21000070260000662B00005D2E +0001563000014F3200004A340000453600003E390000343C0002253A000B15 +3700150532002000390B210040181D0044241A00483117004D411400505412 +0052681100537F1300549E0F0055D4090055EE080055EE080055EF080056EF +080056EF080056EF070056EF07901C00008A1E00007B2500006E2B00006430 +00005A320001533500004D37000047390000423B00003E3C0000354000002C +4300011E4200090E400014003F031D00480E18004E19140052241200573010 +005B400D005F550A00626B070065820600669E050064C7020063EA020064EA +020064E9010064E9010064E8010065E8010065E8017D280000792A00006C30 +00006134000058370000503900004A3C0000443E00003F4000003941000034 +4300002C470000234A0001164A000807490013004D06140056100F005D1A0A +006124080066310600684005006B5304006E69010071800000729B000070C2 +00006FF000006FF000006FF100006FF1000070F1000070F1000070F1006E34 +00006B3500005F390000563B00004E3E000048400000414300003B45000035 +470000304900002C4A0000244E00001B5100010F53000802540210005C090C +0063110800691905006E230400702E0400723C0300744E0300776401007B7B +00007C9700007BC100007BFF00007BFF00007BFF00007BFF00007BFF00007B +FF00007BFF00603C00005D3D0000534000004C430000454600003E49000037 +4B0000314D00002C4F000028500000245200001C560000145900010A5B0008 +005D010F0064070C006B0E080073170500792003007C2B02007E3700007F48 +0000815E0000857700008894000087BE000085FF000085FF000086FF000086 +FF000086FF000086FF000086FF00534300005144000049480000424B00003A +4E0000345100002E5300002855000024570000205800001E5900001B5D0000 +166100010D6400060266000D006C050C00740B09007D130500841C03008826 +01008A3200008C4200008D58000091710000968F000096B4000091FF000091 +FF000091FF000091FF000091FF000091FF000091FF00494C0000474D00003F +50000037540000305700002A590000255C0000205E00001F5F00001F5F0000 +206000001C64000017690000106D00050670000A0076020C007F080900880E +05009016030096200100992C00009A3B00009D510000A06B0000A78A0000A8 +AE00009FEC00009FFD00009FFD00009FFD00009FFC00009FFC00009FFC003E +5500003C560000345A00002D5E000027600000226300002065000020650000 +2166000021670000216800001D6C000019720000137800020B7D0006028300 +0A008C04090095090500A00F0200A9180000AF230000B2320000B4470000BB +620000C2820000C59F0000BCDA0000B6F50000B6F50000B6F50000B6F50000 +B6F50000B6F50034600000326100002B65000024690000216B0000216C0000 +226D0000226E0000226F000022700000227000001F7600001A7D0000168500 +00118C000009930003029A000700A6030500B5070200C50D0000D4190000E3 +270000F7370000FD540000FE6D0000FF880000FFAD0000FFBD0000FFBC0000 +FFBC0000FFBB0000FFBB0000FFBB002A6D0000286E00002272000022730000 +22740000237500002377000023780000237800002378000023780000207E00 +001B860000178D0000129500000D9D000008A6000002B1000300BE020200D2 +070000E7140000F5230000FF310000FF510000FF6A0000FF7F0000FF9E0000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002378000023780000 +23780000237800002378000023780000237800002378000023780000237800 +0023780000207E00001C850000178D0000129500000D9D000008A6000002B0 +000300BE020200D1070000E6130000F4220000FF300000FF4E0000FF680000 +FF7A0000FF9B0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +00237800002378000023780000207D00001C850000178D0000129500000D9D +000009A5000002B0000300BD010200D0060000E4120000F2200000FF2E0000 +FF4A0000FF640000FF760000FF940000FFB00000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +002378000023780000237800002378000023780000207D00001C850000178C +0000139400000E9C000009A5000003AF000300BC010300CE050000E3110000 +F11F0000FF2D0000FF450000FF610000FF720000FF8C0000FFA70000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<59000900590009005A0009005B0009005B0008005C0008005D0008005D0008 +005E0008005E0007005F0007005F000A005F0011005F001800600020006100 +2A0062003400650041006B0050006F0060007000700071008200700094006E +00AA006C00CA006D00DE006D00DE006D00DE006D00DE006D00DE006D00DE00 +6D00DE006D00DE005B0009005B0009005B0008005C0008005D0008005E0008 +005E0007005F0007005F000700600007006000070060000A00600011006100 +1800610020006200290063003400670041006C005000700060007100700072 +008200710094006F00AA006E00CA006E00DE006E00DE006E00DE006E00DE00 +6E00DE006E00DE006E00DE006E00DE005D0008005D0008005D0008005E0008 +005F0007005F00070060000700600007006100060062000600620006006200 +0900620010006200170063001F006400280065003300680040006E004F0071 +0060007200700073008200720094007000AA006F00CA006F00DE006F00DE00 +6F00DE006F00DE006F00DE006F00DE006F00DE006F00DE005E0007005E0007 +005F0007006000070060000700610006006200060062000600630006006300 +0600640005006300080063000F006400160065001E0066002700660032006A +0040006F004F00720060007300710074008200730094007200AA007100C900 +7000DE007000DE007000DE007000DE007000DE007000DE007000DE007000DE +00600007006000070061000700620006006200060063000600640005006400 +05006500050065000500660005006500080065000E006600150067001D0067 +002600680032006C003F0070004F0073006000740071007500820075009500 +7300AA007200C9007200E2007200E2007200E2007200E2007200E2007200E2 +007200E2007200E20062000600620006006300060064000500650005006500 +050066000500670004006700040068000400680004006700070067000D0068 +00140069001C006A0025006A0031006E003E0072004F007400600076007100 +76008300760095007500AA007400C9007300E8007300E8007400E8007400E8 +007400E8007400E8007400E8007400E8006500050065000500650005006600 +05006700040068000400680004006900040069000300690003006A00030069 +0006006A000C006A0014006B001B006C0024006D00300070003D0074004E00 +760060007700710078008300770095007600AA007600CA007500EE007600EE +007600EF007600EF007600EF007600EF007600EF007600EF00670004006700 +0400680004006800040069000300690003006A0003006A0003006B0003006B +0002006B0002006C0005006C000B006C0013006E001A006F0023006F002F00 +72003C0076004E0078005F00790071007A008300790095007800AA007800CA +007800F5007800F5007800F5007800F5007800F5007800F5007800F5007800 +F50069000300690003006A0003006A0003006B0003006B0002006C0002006C +0002006C0002006D0002006D0001006E0004006E000A006F00120070001900 +7100220072002D0074003B0078004D007A005F007B0071007C0084007B0096 +007800A9007600C9007300EF007200ED007100EC007000EC007000EB006F00 +EA006F00EB006F00EC006B0002006B0002006B0002006C0002006C0002006D +0001006D0001006E0001006E0001006F0001006F0001007000030070000900 +71001000720018007300210074002C0077003A007A004C007A005E0077006E +0073007F00700090006C00A5006A00C1006B00F6006B00FC006A00FF006900 +FF006900FF006800FF006800FF006800FF006D0001006D0001006D0001006E +0001006F0001006F0001007000010070000100710001007100010071000000 +720002007300080073000F00740017007500200076002B00720037006E0045 +006B005600690067026600790363008C026000A2005F00C2006300FF006200 +FF006100FF006001FF005F01FF005F01FF005E01FF005E01FF006F0001006F +00010070000100700001007100010071000000720000007300000073000000 +7300000074000000740001007500070076000E007600160070001D00680026 +01610032045C003E075A004D095800600B5600740C5500880A53009F075200 +C1055501FB045300F9055100F7055000F6064F00F4064E00F4074E00F3074E +00F20772000000720000007200000073000000730000007401000075010000 +75010000760200007702000077020000760100007700050170000B02670012 +055E001A095600220D50002A114B003413480044134600571445006B144400 +8013430098114200B9104100E50E4000E40F3E00E3103D00E2103D00E2113C +00E1113C00E1113B00E1117501000075010000750100007602000077020000 +770200007803000079030000790300007A0400007A040000760400006A0201 +085F00060D55000C114A00131641001B1B3A00232035002E2133003C203100 +4E1F3000611E2F00761E2E008E1D2D00AE1B2E00DD192C00DC192B00DB1A2A +00DB1A2900DA1B2900DA1B2800D91B2800D91B780300007803000079030000 +790300007A0400007B0400007C0500007C0500007D0500007E060000760900 +006D0C0000600900074D0200154200061B37000C202E00132627001C292200 +282A1D00362A1B0045291900572917006A291600802815009E251800CE2116 +00CE221500CE221400CD231300CD231200CD231200CD231200CD237C050000 +7C0500007C0500007D0600007E0600007F06000080070000810700007D0900 +00730D00006B1100006313000056110008460C0014340500212501032B1B00 +0A30140015330D00203507002C36030039370101493501035E320105742F00 +04912E0101C22A0103C9290103C9290104C9290105C8290105C8280005C828 +0006C828800700008007000081070000820800008309000084090000850A00 +007B0D0000701100006815000060190000591B00004C1800093E1400142D0F +001F1C0A002B0602003900040D3B00081B37000B2933000D3830000F492C00 +115D2900157226001691270014BD260014C8250014C8250015C8250016C824 +0016C8240016C8240016C824850A0000850A0000850A0000860B0000870B00 +00870C0000791100006E160000651A00005D1D0000561F00004F210002431F +000A351C00132618001C16140026020E013200120F2F00161E2C00192B2800 +1B3925001C4A22001E5D1F0021731F002491200023C1210022D2200023D31F +0023D31F0024D41F0024D41E0024D41E0024D41E880D0000880D0000890D00 +00890E000085100000771500006C1A0000621E00005A210000532400004D26 +0000462600023A2600092E24000F20220017101D0021011A042A001F122600 +24202300262D1F00293B1C002B4C1A002D5F18002F7419003191190031BB17 +0030D5160031D5150031D4140032D4140032D4140032D4140032D4138B1000 +008B1000008B11000084140000751900006A1F000060230000582600005028 +00004A2A0000452B00003F2D0000352E0004282D000A1A2B00130B25001D00 +260722002D151E0032221B00362E1800393D15003C4E13003E6112003F7613 +004191110042BA0C0041DA0B0042DA0A0043DB0A0043DB090043DC090044DC +090044DC098D1400008D14000082170000731E0000672300005E270000552A +00014E2C0000482E0000423000003D310000373300002F3700002236000713 +330011042E001B00360B1A003C17160040221300452E1000493D0D004C4F0C +004E630A00507909005295070053BE030051EB020052EB020052EB020052EB +020053EB010053EB010053EB017A1E00007A1E000072220000662800005B2C +0000522E00014B310000453300003F3500003A360000343800002F3A000026 +3D00001B3E00050C3C0010003B031700440E110049180D004D220A00522E08 +00563D0600594F05005C6502005E7B0000609501005EB800005CEC00005CEC +00005CEC00005CEC00005CEC00005CEC00005CEC006B2A00006B2A0000642D +0000593000015033000049360000433800003C3A0000363C0000303E00002C +3F0000274100001E440000134500050544000F0049070E0050100900551806 +00582106005B2C06005E3A0600614B050064610300677700006990000067B0 +000064E7000065E7000065E7000065E7000065E7000065E7000065E7005E33 +00015E330001573500014E380000473B0000403D0000393F0000324100002D +43000028450000244700001F480000174C00000D4D0005014C000E0051060D +00580E0A005E160600621F05006529050067360500694705006D5C03007073 +0000728C000072AD000070F1000070F1000070F1000070F1000070F1000070 +F1000070F100523B0000523B00004D3D0000454000003D430000354500002F +48000029490000244B0000204D00001C4E00001B4F0000165200000F540004 +0455000D0059050E005F0C0A00671407006D1D040071270300733303007542 +0200775602007A6D00007E8700007EAA00007CF000007CFF00007CFF00007C +FF00007DFF00007DFF00007DFF004743000047430000424600003A49000032 +4B00002B4D000026500000215100001D5300001D5400001D5400001D550000 +18590000115C0003075E000A0061030E0068090B0070100700781904007D23 +0200802E0100823C000082500000856700008A8300008CA4000089E5000088 +FF000088FF000088FF000088FF000088FF000088FF003C4D00003C4D000037 +4E00002F51000028540000235600001E5800001E5900001E5A00001F5B0000 +1F5B00001E5C00001A610000146500020A680008016B010D0072060B007B0D +0800841504008A1E02008E2900008F3600009149000093600000987D00009D +A0000097CF000095FF000095FF000095FF000095FF000095FF000095FF0031 +560000315600002C580000265B00001F5E00001F5F00002060000020600000 +206100002062000020630000206400001B690000166F00010E730005047700 +0B007E030B0088080800910F0400991701009F210000A22E0000A3400000A7 +580000AC760000B3960000ACC30000A6F90000A6F90000A6F90000A6F90000 +A6F90000A7F900276100002761000023630000206500002166000021670000 +2168000021690000216A0000216B0000216B0000216D00001D730000187A00 +00128000020A870005038E00080096030700A1080400AE0E0100B9170000C2 +240000C7340000CD4C0000D5690000DA870000DDAC0000CEF40000CEF50000 +CFF50000CFF50000CFF50000CFF500216C0000216C0000216D0000226E0000 +226F0000227000002272000022730000227400002375000023750000227700 +001E7F00001A87000015900000109800000BA1000005AA000101B6000300C6 +030100DD0C0000EC1A0000FC290000FF3C0000FF5F0000FF730000FF940000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002376000023760000 +23770000237800002378000023780000237800002378000023780000237800 +0023780000237900001E8100001A88000015900000109800000BA0000006AA +000101B5000300C4030100DC0B0000EB190000FA280000FF380000FF5C0000 +FF6F0000FF8C0000FFAE0000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +00237800002378000023780000237900001F8000001A880000159000001098 +00000CA0000006A9000101B4000400C3030100DA0B0000EA180000F9270000 +FF350000FF580000FF6D0000FF860000FFA40000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +002378000023780000237800002378000023780000237900001F8000001A88 +0000168F0000119700000CA0000006A9000101B4000400C2030100D80A0000 +E9170000F8260000FF330000FF550000FF6B0000FF810000FF9E0000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<50000C0050000C0050000C0051000C0051000C0052000C0053000B0053000B +0054000B0054000B0055000B0055000B005400110054001800540020005600 +2800580031005C003B0061004700670056006A0066006B0077006A008A0068 +009F006600BD006900F2006900F1006900F1006900F1006900F1006900F100 +6900F1006900F10052000C0052000C0052000C0052000C0053000B0054000B +0054000B0055000B0056000A0056000A0057000A0057000A00560010005600 +170056001F0057002700590030005D003B0062004700680056006B0066006C +0077006B00890069009F006700BC006900ED006900ED006900EC006900EC00 +6900EC006900EC006900EC006900EC0054000B0054000B0054000B0054000B +0055000B0056000A0056000A0057000A0057000A0058000A00580009005900 +090058000F005800170058001E00590026005B0030005E003A006300470069 +0056006C0066006D0077006C0089006A009E006900BA006A00E8006A00E800 +6A00E8006A00E8006A00E7006A00E7006A00E7006A00E70055000A0055000A +0055000A0056000A0057000A0058000A0058000A0059000900590009005A00 +09005A0009005B0009005A000F005A0016005A001D005B0025005D002F005F +003A00650047006A0056006D0066006E0077006E008A006C009E006A00B900 +6B00E3006B00E3006B00E3006B00E3006B00E2006B00E2006B00E2006B00E2 +0058000A0058000A0058000A0058000A00590009005A0009005A0009005B00 +09005B0008005C0008005C0008005D0008005D000E005C0015005D001C005E +0025005F002E0061003A00660047006C0056006F0066006F0077006F008A00 +6D009E006C00B8006C00DE006C00DE006C00DE006C00DE006C00DE006C00DE +006C00DE006C00DE005A0009005A0009005A0009005A0009005B0009005C00 +08005C0008005D0008005E0008005E0008005F0007005F0007005F000D005F +0014005F001B006000230061002D0062003900680046006D00560070006600 +7000770071008A006F009E006D00B8006D00DE006D00DE006D00DE006D00DE +006D00DE006D00DE006D00DE006D00DE005C0008005C0008005C0008005D00 +08005D0008005E0008005F0007005F00070060000700600007006100070061 +00060061000C006100130062001A006300220063002C00650038006A004600 +6F005600710067007200780072008A0071009E006F00B7006E00DE006E00DE +006E00DE006E00DE006E00DE006F00DE006F00DE006F00DE005E0007005E00 +07005E0007005F000700600007006100070061000600620006006200060063 +000600630006006400050063000B0063001200640019006500210066002B00 +670037006C00460070005600730067007300780074008A0073009D007100B7 +007000DE007000DE007000DE006F00DE006F00DD006E00DD006E00DD006D00 +DD006100070061000700610007006200060062000600630006006400050065 +0005006500050066000500660005006700040066000A006600100067001800 +6700200068002A00690036006E00450072005600740067007500780073008A +006F009C006C00B5006C00F1006B00F3006A00F6006A00F9006900F9006900 +F9006800F9006800FB00640005006400050064000500650005006500050066 +00050067000400670004006800040069000400690004006900030068000900 +69000F00690017006A001F006B0029006C003500700044006F0053006D0063 +006B0074006700860064009A006100B6006500FF006300FF006200FF006100 +FF006100FF006000FF006000FF006000FF0067000400670004006700040068 +0004006800040069000400690003006A0003006A0003006B0003006B000200 +6B0002006B0007006C000E006C0015006E001D006C0027006500320060003E +0060004C005F005D015E006F025C008201590097005700B5005C00FF005A00 +FF005900FF005800FF005700FF005700FF005700FF005600FF006900030069 +000300690003006A0003006B0003006B0002006B0002006C0002006C000200 +6D0002006D0001006D0001006E0006006F000D006C00140064001B005D0024 +0057002E035300380551004506500056084F006A094E007F084D0094054C00 +B0034E00EA024D00F5024C00F2034A00F0034900EE034900ED044800EC0448 +00EC046C0002006C0002006C0002006C0002006D0002006D0001006E000100 +6E0001006F0001006F00010070000100700001006F00040066000A015E0011 +03550018074D001F0D460027114200301440003E1240004F113F0062113E00 +77103D008E0E3D00AA0C3D00D40A3C00DF0A3B00DE0B3A00DD0B3900DC0C38 +00DC0C3800DC0C3700DB0C6E0001006E0001006E0001006F0001006F000100 +7000010071000100710000007200000072000000730000006D030000620201 +035700050A4D000B0E420012143A0019193200201E2E002B1F2C00391D2B00 +491B2A005A1A2A006D1A2900841928009F172A00C7142900D4142800D31527 +00D2152600D1152500D1152500D0162400D016710000007100000071000000 +720000007200000073000000740000007401000075010000730300006C0600 +00640900005A090003470200113C00051732000B1C2900122222001A251E00 +26261A00322516004023150051231300632412007723120091211400B61D14 +00C81C1300C71D1100C71D1100C61E1000C61E0F00C61E0F00C61E74010000 +74010000740100007501000076020000770200007702000078030000720600 +00690A0000610D00005A10000050100003410B000F3004001C220103251800 +092A1200132C0B001F2E06002A2F0200362E0001462D0003592A00066D2800 +0685270003AA250103C3230104C3230005C2230005C2230006C2230006C223 +0006C122780300007803000078030000790300007A0400007B0400007A0500 +00700A0000670E00005E1200005715000051170000471700043913000F2A0E +001A190900240602003100040C3200081A2E000B282A000D3627000F452400 +10582200136B1F0015841F0014AA210013C1200014C1200014C11F0015C11F +0015C11F0015C11F0015C21F7D0500007D0500007D0500007E0600007F0600 +007B0900006F0E0000641200005B160000541900004E1B0000481D00003E1C +00053119000E2416001714130020020D012A00110F2800151C240018292000 +1A371D001B461B001D5819001F6C180022851A0022AB1C0020CB1B0021CB1B +0022CB1A0022CB1A0022CB1A0022CB1A0023CB198308000083080000830800 +00840900007A0D00006D12000062170000591A0000511D00004A2000004421 +00003F230000362300042B22000B1E2000130F1C001B01190423001E112000 +221F1C00252B180027391500294913002B5A12002D6D12002F8613002FA712 +002ECB11002ECB11002FCB10002FCB100030CB0F0030CB0F0030CA0F870B00 +00870B0000870B0000791100006B160000601B0000571F00004F2200004824 +0000412500003C27000038280000302A0000252A00061829000F0924001800 +25071B002B1418002F201400332C1000373A0E003A4A0C003C5D0B003D700B +003E870A003FA806003FD2050040D3040041D3040041D4030042D4030042D5 +030042D5037715000077150000771500006A1B00005E200000552400004C26 +0000452800003F2A0000392B0000342D0000302F0000293100001F33000211 +30000C032C001600330B130038160F003C200C00412C0800463A06004A4B04 +004A5E03004C7301004D8A00004DAC00004BE200004BE200004BE200004BE2 +00004BE200004BE200004BE2006720000067200000672000005D2500005228 +00004A2A0000432D00003C2E000036300000313200002C3400002836000021 +380000183A00010A38000B0038041000400D0A0044160600461F0500492A05 +004E38050050480500525C0300547101005689000056A9000053E6000052EA +000053EA000053EA000053EA000053EA000053EA005A2A00005A2A00005A2A +0000512C0001482F0000413100003A330000333600002D380000283A000024 +3B0000203D0000193F000010410001053F000B0041050D00460C0A004B1506 +004D1D0500502705005534060057440600595804005C6F01005F8600005FA5 +00005BDB00005BEC00005BEC00005BEC00005BEC00005BEC00005BEC004E32 +00004E3200004E320000463400003F37000037390000303C00002A3E000025 +400000204100001C4300001A44000017450000114700010746000A0047030E +004D0B0B0053130700561B0500592506005D3106005F40060062540500666B +01006882000069A0000065C7000065E7000065E7000065E7000065E7000065 +E7000065E700443A0000443A0000443A00003D3D0000343F00002C41000027 +440000214600001C4700001B4800001B4900001B490000184B0000134D0000 +094E0008004F020F0054090C005B1108006119060065230500672E0500693C +05006C4F04006F650200737D0000749A000071C4000071F3000071F3000071 +F3000072F3000072F3000072F300394300003943000039430000314500002A +480000234A00001E4C00001C4D00001C4E00001C4E00001C4F00001C4F0000 +1A520000155500000C5600070258010E005D070D00640E09006C1606007120 +0400742B030076370200784902007A5F01007E7800008196000080C400007F +FF00007FFF00007FFF00007FFF00007FFF00007FFF002E4C00002E4C00002E +4C0000274E0000205000001D5200001D5300001D5400001D5400001E550000 +1E5600001E5600001C590000175D00000F5F00050461000C0066040D006E0B +0A00771306007E1C0300832601008532000087420000875800008B71000090 +9100008EBB00008CFF00008CFF00008CFF00008CFF00008CFF00008CFF0024 +55000024550000245500001E5800001E5900001E5A00001F5B00001F5B0000 +1F5C00001F5D00001F5D00001F5E00001D61000018660000116A0003086D00 +090071010D007A070A00830E06008C160300921F0100952B0000963A000098 +5000009B6A0000A28B0000A2B200009BFE00009BFE00009BFE00009BFE0000 +9BFE00009BFE001F5F00001F5F00001F5F0000206000002061000020620000 +2063000020640000206500002065000021660000216700001F6A00001A7000 +00147500010C7B00060480000A0089030A00920806009C0E0300A5160100AC +220000AF300000B1450000B8600000BF820000C2A30000B4E90000B3F60000 +B3F60000B3F60000B3F60000B4F60021680000216800002168000021690000 +216A0000216B0000216C0000226D0000226E0000226F000022700000227100 +00207500001C7C000017840000128B00000C930002049A000500A4010600B3 +050300C50A0000D6160000E5240000F9330000FF520000FF6C0000FF880000 +FFB20000FFB50000FFB50000FFB50000FFB50000FFB4002272000022720000 +22720000227300002375000023760000237700002378000023780000237800 +002378000023780000217C00001D830000188B0000139300000E9B000009A4 +000003AE000300BB010300CD050000E3110000F2200000FF2F0000FF4E0000 +FF690000FF7F0000FFA00000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +0023780000237800002378000023780000217B00001D830000188B00001493 +00000E9B00000AA3000004AD000300BA010300CC050000E2100000F11F0000 +FF2E0000FF4A0000FF660000FF7A0000FF9C0000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000217B00001D83 +0000188A0000149300000F9A00000AA3000004AD000200B9010300CB050100 +E10F0000EF1E0000FE2C0000FF440000FF620000FF760000FF970000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<47001000470010004700100047001000480010004800100049000F004A000F +004A000F004B000F004B000E004B000E004B0010004900170049001F004B00 +26004F002D0053003600590041005F004E0063005C0065006D0064007F0062 +0095006000B1006500FC006500FC006500FC006500FC006500FC006500FC00 +6500FC006500FC0049000F0049000F0049000F0049000F004A000F004A000F +004B000F004B000E004C000E004C000E004D000E004D000E004D0010004B00 +17004B001E004D00250050002D00550036005900400060004D0064005C0066 +006D0065007F00640094006100B0006500FB006500FB006500FB006500FB00 +6500FB006600FB006600FA006600FA004A000F004A000F004A000F004B000F +004B000E004C000E004D000E004D000E004E000D004E000D004F000D004F00 +0D004F000F004D0016004D001E004E00250051002C00560036005A00400061 +004D0065005C0067006D0067007F00650093006300AF006600F9006600F900 +6600F9006600F9006600F9006600F9006600F9006600F8004C000E004C000E +004C000E004D000E004D000E004E000D004E000D004F000D0050000D005000 +0C0051000C0051000C0051000E004F0015004F001D005000240053002C0057 +0035005B00400062004D0066005C0068006C0068007F00660093006400AD00 +6700F4006700F7006700F7006700F7006700F6006700F6006700F6006700F6 +004E000D004E000D004E000D004F000D004F000D0050000D0051000C005100 +0C0052000C0052000C0053000B0053000B0053000D005200140052001C0053 +00230055002B00580035005C00400063004D0068005C006A006C0069007F00 +680093006600AC006700E6006800F4006800F4006800F4006800F4006800F4 +006800F4006800F40051000C0051000C0051000C0051000C0051000C005200 +0C0053000B0053000B0054000B0055000B0055000B0055000A0056000C0054 +00130054001B005500220057002B00590034005D003F0064004D0069005C00 +6B006C006B007E00690092006700AB006700D8006900F0006900F0006900F0 +006900F0006900EF006900EF006900EF0053000B0053000B0053000B005300 +0B0054000B0055000B0055000B0056000A0056000A0057000A0058000A0058 +000A0058000B005700120057001900580021005A002A005B0034005F003F00 +66004D006A005C006C006C006C007E006B0092006900AA006800D0006A00E9 +006A00E9006A00E9006A00E9006A00E9006A00E9006A00E90056000A005600 +0A0056000A0056000A0057000A0057000A0058000A0059000900590009005A +0009005A0009005B0009005B000A005A0011005A0018005B0020005C002900 +5E00330061003F0067004D006C005C006E006D006E007E006D0092006B00A9 +006A00CC006A00E8006A00EE006900F3006900F7006900FB006800FC006800 +FD0058000900580009005800090059000900590009005A0009005B0009005B +0008005C0008005C0008005D0008005D0008005E0009005D0010005D001700 +5E001F005F0028006000320063003E0069004C006D005C006D006C006B007D +00670091006300A9006200D8006400FF006300FF006200FF006100FF006100 +FF006000FF006000FF005B0009005B0009005B0009005B0008005C0008005D +0008005D0008005E0008005F0007005F000700600007006000070061000800 +60000F006000160061001D00620026006300310062003D0062004900630058 +006200690060007B005C008F005900AA005C00E6005B00FF005900FF005900 +FF005800FF005700FF005700FF005700FF005E0007005E0007005E0007005E +0007005F000700600007006100070061000600620006006200060063000600 +630006006300070063000D006300140064001C005F00240059002E00560038 +005600440056005300560065015500780052008D004F00A9005100DD005100 +FF005000FF005000FF004F00FF004E00FF004E00FF004E00FF006100060061 +00060061000600620006006200060063000600640005006500050065000500 +6600050066000500670004006700050066000C006000130058001A00530023 +004E002B034B0033054A003F0449004E04480061064800750648008A034600 +A3014600CC014600EE004500EC014400EB014300E9014200E8014200E70141 +00E70165000500650005006500050065000500660005006700040068000400 +680004006900040069000300690003006A000300640003005C000900540010 +024B00160743001D0D3C00231338002D1539003A113900490E38005B0E3800 +6E0D3800840B38009D093800C0073700DB063600D9073500D9073400D80733 +00D7083300D7083200D7086900040069000400690004006900040069000300 +6A0003006A0003006B0003006B0002006C0002006A000200610001005A0101 +014E00040745000A0C3B001011330016172C001E1C2800281C2600351A2600 +4418250054162500661624007B15240094142600B4112600CF0F2500CE1024 +00CD102300CC102200CC112100CB112100CB116B0002006B0002006B000200 +6B0002006C0002006C0002006D0001006D0001006E000100670000005F0300 +005A060000520800004202000C370004132D000A192500101E1F0018211A00 +242116002F2013003C1E11004B1E10005C1F0E006F1F0E00861D1000A51A12 +00C3181000C2180F00C2190E00C1190D00C1190D00C1190D00C1196E000100 +6E0001006E0001006E0001006F000100700001007000010070000000660300 +005E070000570A0000500D0000490E00003C0A000A2C0400161F0102201600 +08240F00122609001D28050028280101342700024225000454230006662100 +087C1F00069A200003BC1E0004BC1E0005BC1E0006BC1D0006BC1D0007BB1D +0007BB1D720000007200000072000000720000007200000073000000700300 +00650700005C0B0000540E00004D11000047130000411500013511000A270C +00151808001F0502002900040C2A00081927000B2623000D3320000F421D00 +10531B0012661900147B1900149A1B0012BC1B0012BC1B0013BC1A0013BC1A +0014BD1A0014BD1A0014BD1A76010000760100007601000076010000770200 +0070060000640B00005A0F0000511200004A150000441700003F190000391A +00012E180009211500121312001A020D012400110E2200151B1E0017281A00 +1A3517001B4314001C5413001E661200207C1300209A16001EC417001FC417 +001FC4160020C4160020C4150020C4150021C4157A0400007A0400007A0400 +007A0400006F090000620F0000581300004F17000048190000411B00003B1D +0000361F000032200000272000061C1E000E0D1B00160118041D001D111A00 +211D16002429120026370E0028460C002A560B002B680B002C7D0C002D980D +002BC20D002CC30C002CC30C002CC30B002DC30B002DC20A002DC20A710C00 +00710C0000710C00006E0E000061130000561800004D1B0000451D00003E20 +000038210000332300002F2500002B260000222800021627000A0822001200 +24071500291311002D1E0D00312A09003538060039470400395903003A6A03 +003A7E02003898020039C0020039C7020039C702003AC702003AC702003AC7 +02003AC70262170000621700006217000060180000551C00004B1F00004322 +00003C24000036260000312700002C290000282B0000242D00001B2F00000F +2E0007022B010F00310A0C0035140800381E05003B2903003F360300424503 +004157030041690200427E01004198000043C4000042D3000042D4000042D4 +000042D4000042D4000042D400552000005520000055200000532100004924 +0000412600003A280000332A00002E2C0000292E000024300000203200001C +33000014350000083500060033020C00380A09003C1306003D1C0500402604 +00453304004842040049540300496802004B7D00004B9900004BC600004ADF +00004ADF00004AE000004AE000004AE000004AE0004A2800004A2800004A28 +0000482800003F2B0000382D0000302F00002B32000025340000203600001C +3700001839000017390000123B00000A3A00050139020D003D090B00421107 +00441A0600462305004B2F04004E3E05005051040052650200547C00005597 +000053C2000052E9000052E9000052E9000052E9000052E9000052E9003F2F +00003F2F00003F2F00003E300000353200002E35000027380000223A00001D +3C0000183D0000183E0000183E0000183F0000134000000C400004023F010D +0043070C00480F08004C1806004E210500522C0500563A0600584C05005B62 +03005E7900005F9401005DBA00005BEC00005BEC00005BEC00005BEC00005B +EC00005BEC00353800003538000035380000333800002B3B0000243E00001E +4000001942000019420000194300001A4300001A4400001A44000015460000 +0E4700030346000D004A060D00500D0A0055160600581F05005B2906005F37 +060061480600645D0300687500006A8F000068B1000066E6000066E6000066 +E6000066E6000066E6000066E6002A4100002A4100002A4100002841000021 +4400001B4600001A4700001B4800001B4800001B4900001B4A00001B4A0000 +1B4B0000174D0000104F0002054F000B0052040E00580B0B005F130700641C +0500682605006B3304006C4205006F580300736F00007689000076AE000074 +F6000074F6000074F6000074F6000074F6000074F600204A0000204A000020 +4A00001F4A00001C4C00001C4D00001C4E00001C4E00001C4F00001C500000 +1D5000001D5100001D510000195500001358000209590009005C020E006209 +0B006A1008007119050077230300792E02007B3C01007C5001007F68000084 +84000085AA000083FC000082FF000082FF000083FF000083FF000083FF001D +5200001D5200001D5200001D5200001D5300001D5400001E5500001E560000 +1E5700001E5700001E5800001E5900001E5900001A5D0000156100010C6400 +070166000E006D060C00750C08007E140500851E0200892801008B3600008C +4900008E610000937E000097A3000091E2000091FF000091FF000091FF0000 +91FF000091FF001F5A00001F5A00001F5A00001F5A00001F5B00001F5C0000 +1F5D00001F5E00001F5F0000206000002061000020610000206200001C6700 +00176C0000107000040674000A007A020C00840808008D0E0500961602009B +2000009E2D0000A03F0000A3570000A9760000B0980000A7CC0000A3FA0000 +A3FA0000A3FA0000A4FA0000A4FA0020630000206300002063000020630000 +2065000021660000216700002168000021690000216A0000216A0000216B00 +00216C00001E71000019780000147F00010C850005058D000800940208009E +070500AB0C0200B8150000C2220000C7320000CC490000D6670000DB880000 +DCAF0000CFF50000D0F50000D0F60000D0F60000D1F600226D0000226D0000 +226D0000226E0000226F000022700000227200002273000022740000237500 +00237600002377000023780000207E00001B860000168E0000119600000C9E +000007A8000101B3000400C1020200D80A0000EA180000FA270000FF380000 +FF5D0000FF730000FF990000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +002378000023780000237800002378000023780000207E00001B860000178E +0000129600000D9E000007A7000101B2000400C0020200D6090000E9170000 +F9260000FF340000FF5A0000FF6F0000FF8F0000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +0023780000237800002378000023780000237800002378000023780000207E +00001B860000178D0000129600000D9E000008A7000001B1000400BF020200 +D4080000E8150000F7250000FF330000FF560000FF6D0000FF870000FFAA00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410012 +0042001200420012004300120043001200430012004200160041001D004300 +230046002A004B00320051003C00570047005C0055005F0065005F0076005D +008B005B00A7005E00DC006100FD006100FD006100FD006100FD006100FD00 +6100FD006100FD004100130041001300410013004100130041001200420012 +00420012004300120043001200440012004400110044001100450011004300 +150042001C004400230047002A004C00320052003B00580047005D00550060 +006400600076005E008A005C00A5005E00D7006200FE006200FE006200FE00 +6200FE006200FF006200FF006200FF00430012004300120043001200430012 +00430012004300120044001100440011004500110045001100460011004600 +1100460010004500150043001C004500230049002A004C00320053003B0059 +0047005E005400610064006100760060008A005D00A4005E00D1006300FE00 +6300FE006300FE006300FE006300FE006300FE006300FE0044001100440011 +00440011004400110045001100450011004600110046001100460010004700 +10004700100048001000480010004700140045001C00460022004A0029004E +00310054003B005A0046005F0054006200640063007500610089005F00A300 +5F00CD006300FE006300FE006300FE006300FE006300FD006300FD006300FD +00460011004600110046001100460011004600100047001000470010004800 +10004800100049000F0049000F004A000F004A000F004900130047001B0048 +0022004C0029005000310055003B005B004600600054006300630064007500 +630089006000A1006000C9006400FD006400FD006400FD006400FD006400FD +006400FD006400FD0048001000480010004800100048001000480010004900 +0F0049000F004A000F004B000F004B000E004C000E004C000E004C000E004B +0012004A001A004A0021004D0028005200300056003A005C00460061005400 +6500630066007500640088006200A0006100C6006500FC006500FC006500FC +006500FC006500FB006500FB006500FB004A000F004A000F004A000F004A00 +0F004B000F004B000E004C000E004C000E004D000E004E000D004E000D004E +000D004F000D004D0012004C0019004D0020004F0027005300300057003A00 +5D0045006300530066006300670074006600880064009F006200C2006600F9 +006600F9006600F9006600F9006600F9006600F9006600F9004D000E004D00 +0E004D000E004D000E004D000E004E000D004E000D004F000D0050000D0050 +000C0051000C0051000C0052000C00500010004F00180050001F0051002600 +55002F00590039005E0045006400530068006300690074006800870065009E +006200C1006400FF006300FF006200FF006100FF006000FF006000FF006000 +FF004F000D004F000D004F000D004F000D0050000D0051000C0051000C0052 +000C0052000C0053000B0053000B0054000B0054000B0054000F0053001600 +53001E005400260057002E005A0039005F0045006500530065006200630073 +005F0086005B009E005900C7005B00FF005A00FF005900FF005800FF005700 +FF005700FF005600FF0052000C0052000C0052000C0052000C0053000B0054 +000B0054000B0055000B0055000A0056000A0057000A0057000A0058000A00 +57000E005600150057001D005800250059002D00570037005700420059004F +005A005F00580071005600860052009F005100C9005100FF005000FF004F00 +FF004F00FF004E00FF004E00FF004D00FF0056000A0056000A0056000A0056 +000A0056000A0057000A0057000A0058000A0059000900590009005A000900 +5A0009005B0009005B000C005A00140058001B00520023004F002B004D0033 +004D003E004E004B004E005C004E006F004C00840049009D004800C3004800 +FD004700FB004600FA004500F9004400F8004400F7004400F7005900090059 +0009005900090059000900590009005A0009005B0009005B0008005C000800 +5D0008005D0008005E0008005E0008005C000B00540012004D001900490021 +004500270442002F0643003A03430048014200580341006C03420081014000 +99003F00BA003E00E9003C00E7003B00E5003B00E4003A00E4003A00E30039 +00E3005C0008005C0008005C0008005C0008005D0008005E0008005E000700 +5F000700600007006000070061000700610006005A000500530008004A000E +02420014073A001A0E3400201430002915310036103200440C3200540B3200 +660A32007A08320092063200B1043100D7033000D6032F00D5042E00D4042E +00D4042D00D3052D00D3056000070060000700600007006000070061000700 +61000600620006006300060064000600640005005E00040057000300500001 +02450003043D00090935000E0F2D00141527001C1924002619220032172100 +401420004F13200060121F0072121F0089112100A60E2200CB0B2100CA0B20 +00C90C1F00C90C1E00C80C1E00C80D1D00C80D640005006400050064000500 +6400050065000500660005006600050067000400670004005C000200550001 +014B030000470500003D0300073200030F2900081521000F1A1B00171C1700 +221D13002D1B100039190E0047190C00571A0B00681A0B007D1A0C00981710 +00BF130E00BE140D00BD140C00BD150B00BC150A00BC150A00BC1569000400 +69000400690004006900040069000400690003006A000300640002005A0101 +00520400014B07000045090000400B0000380A00042A0400111D01021B1400 +081F0E00112107001B22030126220102322000033F1E0005501C0006621B00 +08751900078F1A0004B3190005B7190006B7180006B7180007B7180007B718 +0008B7186C0002006C0002006C0002006C0002006C0002006C000200620000 +005A04000051070000490B0000430D00003E0F00003911000031110004240C +000F160800190502002300040B2300081820000B241C000E3119000F3F1600 +0F4F15001161140013741300148D150011B1160011B8160012B8160013B815 +0013B8150013B8150013B9156F0001006F0001006F0001006F0001006F0001 +0062030000590800004F0C0000470F0000411100003B130000361500003117 +00002A1700041F14000D11110015010C011E00100E1C00141A180017261400 +193310001A410E001B510D001C620C001E750D001F8D0F001DB213001DBD12 +001DBD11001EBD11001EBD10001EBD10001FBD106A0400006A0400006A0400 +006A04000062070000570C00004D100000451300003E150000381800003219 +00002E1B00002A1D0000251E00011A1D00090C1A001100180417001C101400 +201C100023280B00253408002643060027530500296405002A7605002A8D07 +0028AD0A0027BC0A0027BC0A0027BC0A0027BC0A0027BC0A0027BC0A5C0D00 +005C0D00005C0D00005C0D0000561000004C140000431700003C1A0000351C +0000301E00002B20000027210000242300001F250000142500050621000D00 +23070E0027120B002B1D07002E280300303401003243010031530200316303 +0031750400308B05002EAB07002DBF07002DBF07002DBF07002DBF07002EBF +07002EBF07501600005016000050160000501600004A180000411B0000391E +0000332000002D2200002924000024260000202800001D290000172B00000D +2B00020129010A002D0808002F120700301B05003325030036320200394002 +00385002003861030038730300378A030037AA030036C5040036C5030036C5 +030037C5030037C5030037C503441E0000441E0000441E0000441E00003F20 +000037220000302400002B27000026290000212B00001C2D0000182E000015 +2F0000123000000C310002022E000900300709003410070035190600382304 +003B2E0300403D0200404D0300405F0300407202004089010040AB010040D0 +010040D0010040D1010040D1010040D1010040D1013A2500003A2500003A25 +00003A250000362700002E290000282C0000232E00001D3000001932000015 +3300001534000016340000143500000E360001043300090034050B003A0E08 +003B1706003D200500412B040046390300484A0300485D0300497101004A89 +00004AAC000049DE000049DE000049DE000049DE000049DE000049DE00302D +0000302D0000302D0000302D00002C2E0000253100001F3400001A36000016 +37000017380000173800001739000017390000153A00000F3B000106390009 +003A040D003F0C090043150600441D0500482804004C3505004F460500515A +0400526F01005488000055AA000051E9000051E9000052E9000052E9000052 +E9000052E90026360000263600002636000026360000233700001C3A000018 +3B0000183C0000183D0000183D0000183E0000183E0000183F000017400000 +11410000084000080040030E00450A0B004B1207004D1B0500502505005431 +0500574106005A5505005D6D01005F85000060A500005CE300005CEC00005C +EC00005CEC00005CEC00005CEC001D3E00001D3E00001D3E00001D3E000019 +400000194100001941000019420000194300001A4300001A4400001A450000 +1A45000019460000134800000B4800070048010F004D080C00541008005819 +06005B2206005F2E0600623D060064500500686702006B8000006C9E000068 +C9000068E8000068E8000068E8000068E8000068E8001A4600001A4600001A +4600001A4600001A4600001B4700001B4800001B4900001B4A00001B4A0000 +1B4B00001C4B00001C4C00001A4D0000155000000D5200050151000F005706 +0D005D0E0A00641606006A2004006C2A04006F370400714903007460020078 +7A00007998000077C9000078FB000078FB000078FB000078FB000078FB001C +4D00001C4D00001C4D00001C4D00001C4E00001C4E00001C4F00001D500000 +1D5100001D5200001D5200001D5300001D5400001C55000017590000105B00 +04055D000C0061040E00680A0A0071120700781C04007D2602007F32010081 +42000082580000867200008A93000089C6000087FF000087FF000087FF0000 +87FF000087FF001E5500001E5500001E5500001E5500001E5600001E570000 +1E5800001E5900001E5900001F5A00001F5B00001F5C00001F5C00001E5E00 +0019620000136600020A690008016D010D0075070A007E0D0700871504008E +1F0100912B0000923A000094500000976A00009E8C00009DB8000097FF0000 +97FF000097FF000097FF000098FF001F5E00001F5E00001F5E00001F5E0000 +1F5F0000206000002061000020620000206300002064000020650000216500 +0021660000206800001B6E0000167300000E790005067E00090085020A008F +070700990D0300A3150100AA200000AD2F0000AE430000B65F0000BD830000 +BFA80000B1F70000B1F60000B1F60000B1F60000B2F6002169000021690000 +216900002169000021690000216B0000216C0000226D0000226E0000226F00 +00227000002271000022720000227400001D7B000019830000148B00000F93 +0000089B000301A4000500B3040300C5080100D9120000E9200000FE300000 +FF500000FF6B0000FF870000FFB20000FFB20000FFB20000FFB20000FFB200 +23750000237500002375000023750000237600002377000023780000237800 +002378000023780000237800002378000023780000227A00001E8100001989 +000015910000109900000BA2000005AB000200B8010300C9040100E00F0000 +F01E0000FF2D0000FF4B0000FF690000FF810000FFA70000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000237800002279 +00001E8100001A89000015910000109900000BA1000005AB000200B7010300 +C8040100DF0E0000EE1C0000FE2C0000FF450000FF650000FF7B0000FF9E00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +004100130041001300410013004100130041001300410013003F001A003F00 +20004100270047002E004C0036005200410057004E005B005D005C006E005B +00820058009B005900C3005E00F9005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F001A003F0020004100260047002E004C0036005200410057004D005B +005C005C006D005B00810058009B005900C1005E00F9005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F001A003F0020004100260047002E004C00360052 +00400057004D005B005C005C006D005B00810058009A005900BF005E00F900 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F0019003F0020004100260047 +002E004C0036005200400058004D005B005C005D006C005C00800059009800 +5900BD005F00FA005F00FA005F00FA005F00FA005F00FA005F00FB005F00FB +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004200120042001200420013004000190040 +001F004300260048002D004D0035005300400059004D005D005B005E006C00 +5E007F005B0097005A00BA006000FC006000FC006000FC006000FC006000FC +006000FC006000FC0041001300410013004100130041001300410013004100 +13004200120042001200420012004300120043001200440012004400110044 +0012004200180042001F004500260049002D004E00350054003F005A004C00 +5E005B0060006B005F007E005C0096005C00B7006100FE006100FE006100FE +006100FE006100FE006100FE006100FE004300120043001200430012004300 +12004300120043001200440012004400110045001100450011004500110046 +00110046001100460011004400180043001E00470025004A002C004F003500 +55003F005B004C005F005A0061006B0061007E005E0094005D00B5006200FF +006300FE006300FE006300FE006200FF006200FF006100FF00450011004500 +11004500110045001100450011004500110046001100460010004700100047 +001000480010004800100048001000490010004700170046001E0049002500 +4C002C005000340056003F005C004B0061005A0063006A0061007D005D0094 +005900B5005C00FF005B00FF005900FF005800FF005800FF005700FF005700 +FF004700100047001000470010004700100047001000480010004800100049 +000F0049000F004A000F004A000F004B000F004B000E004B000E004A001500 +49001D004A0024004E002B005200340057003E005A004A005C0059005B006A +0058007D00540094005000B8005200FF005000FF004F00FF004E00FF004E00 +FF004D00FF004D00FF004A000F004A000F004A000F004A000F004A000F004A +000F004B000E004C000E004C000E004D000E004D000E004E000D004E000D00 +4F000D004D0014004C001C004D0023004D002A004D0032004E003B00500047 +0051005700510068004F007D004B0095004900B7004800FF004700FF004600 +FE004500FE004500FE004400FE004400FE004D000E004D000E004D000E004D +000E004D000E004E000D004E000D004F000D004F000D0050000D0050000C00 +51000C0051000C0052000C00500013004B001A00470021004500280045002F +004500380046004400470054004600670046007C00430094004000B3003F00 +F3003E00F5003D00F4003C00F3003B00F2003B00F2003A00F10050000C0050 +000C0050000C0050000C0050000C0051000C0052000C0052000C0053000B00 +53000B0054000B0054000B0055000B0051000A004A0010004400180040001E +023B00240739002B093B0036033D0043003C0052003B0064013B0079003900 +90003700AD003500E0003400E6003300E4003200E3003200E2003100E10031 +00E00054000B0054000B0054000B0054000B0054000B0055000B0055000B00 +56000A0057000A0057000A0058000A00550009004E0008004800070041000D +013A0012073300180D2D001E122A0027132B00330E2C00400A2C004F082C00 +60072B0073062C0089042C00A5022B00CD012A00D5012900D3012800D20128 +00D2022700D1022700D10258000A0058000A0058000A0058000A0058000A00 +58000900590009005A0009005A0009005B000900530007004C000600440004 +003E000202370007062F000D0C2900131123001A15200024151E002F131D00 +3C101C004A0F1B005A0E1B006C0E1B00810D1C009A0B1E00BD071D00C8071C +00C7081B00C6081A00C5081900C5091900C5095C0008005C0008005C000800 +5C0008005C0008005D0008005D0008005E0008005A00070052000500460003 +00400001023B010003370400022D00020B250007111E000E15190016181500 +201811002B170D0036150B00421509005215080062160700751608008D140B +00AD110B00BA100A00B9100900B8110800B8110700B7110700B71160000700 +600007006000070060000700600007006100070062000600590004004E0002 +00440101013F0300023A06000136080000330A00002705000B1A0101161200 +071A0C00101C06001A1D0201241C01022F1A00043C1800054C1600065D1400 +087014000886140006A3140006B3130006B2130007B2130007B2130008B213 +0008B212650005006500050065000500650005006500050063000400570002 +004C010002440500003F070000390A0000350C0000300E00002D100000220C +000A140800140402001E00040B1D0008171A000B2316000E2F13000F3C1000 +104B0E00105D0D00126F0D0013840F0011A1110011B3110011B4100012B410 +0012B4100012B4100013B4105F0002005F0002005F0002005F0002005F0002 +00560100014B050000440800003D0B0000370E0000321000002D1200002914 +0000261600001C14000810110010010C011900100D16001419120017250E00 +18310A00193E07001A4D06001B5E06001D6F06001D8308001CA00C001BB60C +001BB60C001BB60C001BB60C001BB60C001BB60C5505000055050000550500 +0055050000550500004B090000430C00003B0F0000351200002F1400002A16 +000027180000231A0000201C0000181C00040A19000C00170411001B100E00 +1F1B0A00222605002333010023400100224F0100235E0200236E0400238206 +00219D0A001FB90C0020B90C0020B90C0020B90C0020B90C0020B90C490D00 +00490D0000490D0000490D0000490D00004110000039130000321600002D18 +0000281B0000241D0000201F00001D2100001A22000011230001051E000800 +2107080024100700261A06002725030028300100283E0100284D0100285C02 +00286C040028800600279B090025BB0B0025BB0B0025BB0B0025BB0B0025BB +0B0025BB0B3F1500003F1500003F1500003F1500003F15000037180000301A +00002A1D0000261F0000212100001D2300001925000015260000122700000D +280000042500070024050800280E07002A1806002B2204002D2E02002F3B01 +002F4A01002E5A02002F6B03002E7F05002D9A07002BBE08002BBE08002BBE +08002BBE08002BBE08002BBE08351C0000351C0000351C0000351C0000351C +00002E1F000028210000232400001E2600001928000015290000132A000013 +2A0000132B00000F2B0000062A00050029030A002D0C07002E160600302004 +00322B020036380100374702003658020036690300367E03003598040034C2 +040034C3040034C3040034C3040034C4040034C4042C2400002C2400002C24 +00002C2400002C24000026260000202900001B2B0000162C0000142D000014 +2E0000142E0000142F0000142F000010300000082F0004002D020B00310A08 +0034130600351D0500382803003C340200404402003F5502003F6802003F7C +01003E9801003FC601003FCE01003FCE01003FCF01003FCF01003FCF01232B +0000232B0000232B0000232B0000232B00001D2E0000173000001531000015 +3200001532000015330000153300001534000016340000123500000A350003 +0032000C0036080A003A1107003C1A06003E24040043310300474003004852 +030048660200497C00004998000049C9000048DD000048DD000049DE000049 +DE000049DE001A3400001A3400001A3400001A3400001A3400001635000016 +360000163600001637000017380000173800001739000017390000173A0000 +133B00000D3B00020238000C003C070C00410F080044180600462105004A2D +04004E3B0500504E040052630300547A00005697000053C5000052E9000052 +E9000052E9000052EA000052EA00173A0000173A0000173A0000173A000017 +3A0000173B0000183C0000183C0000183D0000183E0000183E0000183F0000 +193F000019400000154100000F4200020440000B0043050D00490D09004D15 +06004F1E050053290500573706005A4906005C5F0300607700006293010060 +BB00005DED00005DED00005DEC00005EEC00005EEC00194100001941000019 +410000194100001941000019410000194200001A4300001A4400001A440000 +1A4500001A4600001A4600001A47000017480000124A0001074A000A004C03 +0E00520B0B00581307005C1C0500602605006333050065430600685904006C +7100006E8C00006DB200006BEB00006BEC00006BEC00006BEC00006CEC001B +4800001B4800001B4800001B4800001B4800001B4900001B4A00001B4A0000 +1B4B00001C4C00001C4D00001C4D00001C4E00001C4E000019510000145300 +000A5500080056010F005C080C00641008006B19050070230400722E030074 +3D0200765102007A6900007E8600007EAE00007CFF00007CFF00007DFF0000 +7DFF00007DFF001D5000001D5000001D5000001D5000001D5000001D510000 +1D5200001D5300001D5300001D5400001E5500001E5600001E5600001E5700 +001B5A0000165E00000E6000060362000D0068050C00700C09007914050080 +1D0300842801008635000088480000896100008F7F000092A600008DFD0000 +8DFF00008DFF00008DFF00008DFF001E5900001E5900001E5900001E590000 +1E5900001F5A00001F5B00001F5C00001F5D00001F5E00001F5F00001F5F00 +0020600000206100001D64000018690000116E0003087100090077010C0080 +070900890D060092150200981F00009B2C00009D3E0000A0570000A5770000 +AC9D0000A2DD0000A1FC0000A1FC0000A1FC0000A1FC002063000020630000 +20630000206300002063000020640000216600002167000021680000216900 +00216A0000216B0000216B0000216C00001F7000001B770000167E00000E84 +0003078C000700930109009C060500AA0B0200B7130000C21F0000C92F0000 +CE470000D8660000DD890000E0B70000D2F70000D3F80000D4F80000D4F900 +226F0000226F0000226F0000226F0000226F00002271000022720000227300 +00237500002376000023770000237800002378000023780000217C00001C84 +0000188C0000139400000E9C000009A5000002B0000300BE020200D4080000 +E8150000F8260000FF350000FF5C0000FF740000FF9C0000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000237800002378 +0000217C00001C840000188C0000139400000E9C000009A5000002AF000300 +BD020200D2070000E7140000F6240000FF330000FF580000FF6F0000FF9400 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300400015003E00 +1C004000230042002A00490032004F003B00550047005A0056005C0066005C +007800590090005800B1005E00F9005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300400015003E001C004000230042002A00490032004E003B00550047005A +0055005C0066005C007800590090005800B0005E00F9005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300400015003E001C004000230042002900490032004E +003B0055004700590055005C0065005C00770059008F005800AE005E00F900 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300400015003E001C004000230042 +002900490031004E003B0055004600590055005C0065005C00770059008E00 +5800AD005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300400015003E +001C004000230042002900490031004E003A0054004600590054005C006500 +5C0076005A008D005800AB005E00F7005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300400015003E001C004000230042002900490031004E003A0054004600 +590054005C0064005C0076005A008C005800A9005E00F3005E00F9005E00F9 +005E00F9005E00F9005E00F9005E00F9004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400015003E001C00400022004200290049003100 +4E003A0054004500590053005C0064005C0075005A008B005800A8005D00EB +005E00FC005D00FF005C00FF005B00FF005A00FF005900FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400015003F001C0040002200 +43002900490031004F003A00550045005A0053005C0063005A00750056008A +005100A9005400EE005300FF005100FF005000FF004F00FF004E00FF004E00 +FF004100130041001300410013004100130041001300410013004100130041 +00130042001200420012004200120043001200430012004300120043001400 +41001B0042002200450028004A0030004E0039005100430053005100530062 +00510075004E008B004900AA004900E8004800FE004700FE004600FE004500 +FD004400FD004400FD00420012004200120042001200420012004200120043 +00120043001200440012004400110044001100450011004500110046001100 +460011004600130043001B00430021004200270044002E0045003600490041 +004A005000490061004800750045008D004100AA004000DF003E00F9003D00 +F8003C00F7003C00F7003B00F6003B00F60045001100450011004500110045 +00110045001100450011004600110046001000470010004700100047001000 +480010004800100049000F0047001200420018003E001F003D0025003D002C +003E0034003F003E0040004E003F0060003E0074003C008C003900A8003700 +D6003500F0003400EF003300EE003300ED003200ED003200EC004800100048 +0010004800100048001000480010004800100049000F0049000F004A000F00 +4A000F004B000F004B000E004C000E0046000D0041000F003C00150037001B +0333002108310028093500330336003E0034004D0033005E00320071003100 +88002F00A3002D00CB002C00E4002B00E3002A00E2002A00E1002900E00029 +00E0004B000E004B000E004B000E004B000E004B000E004B000E004C000E00 +4D000E004D000E004E000D004E000D004A000C0044000B003F000A003A000B +00330010052D00160A29001D0E2600250F2700300B28003D0727004B042600 +5B0325006C022500810125009B012500BD002400D4002300D3002200D20021 +00D1002100D1002100D0004F000D004F000D004F000D004F000D004F000D00 +4F000D0050000C0051000C0051000C004F000B0047000A00410009003C0007 +0037000501310006032B000C092500120D200019111D0022111B002D0E1A00 +390C1800460A1700550A1600660916007909170090071800AF051900C50417 +00C5041700C4041600C3051500C3051500C20553000B0053000B0053000B00 +53000B0053000B0053000B0054000B0055000B004E000A00450008003F0006 +0038000401320002022E0001042B0102062200070C1C000D11170015131300 +1F130F0029120C00331109003F1007004D1006005D1105006F110500841007 +009F0E0800B60C0700B50C0600B40D0500B30D0500B30D0400B30D58000A00 +58000A0058000A0058000A0058000A0058000A00570009004C000700430005 +003B00030234010103300200032E0400022B06000125060005180101101000 +07150B00101705001A170201231600022D1400043912000648100007590E00 +086B0E00087F0E0007970E0006AF0E0007AF0E0007AF0D0008AF0D0008AF0D +0008AF0D5800070058000700580007005800070058000700560007004B0005 +00400002023801000433040002300600012C090000290B0000250C0000200C +00041308000F0402001900050B1800081714000B2210000D2D0D000F3A0A00 +0F48080010590700116A0700127D080011950A0010AF0B0010AF0A0011AF0A +0011AF0A0011AF0A0012AF0A4A0003004A0003004A0003004A0003004A0003 +00480002003F02000339050001330800002F0B00002A0D0000260F00002211 +0000201300011A1300030E10000B000C011400100D100013190D0016240800 +172F0400183C0100184A00001859010018690300187C05001793090015B10B +0015B10B0015B10B0015B10B0015B10B0015B10B4105000141050001410500 +0141050001410500013F06000038090000320C00002D0F0000281100002314 +0000201600001D1800001A190000151B0001091800070017040B001B100800 +1D1A06001D2404001D2E01001D3B00001C4900001C5701001C6703001C7905 +001B91090019B40C0019B50C0019B50C0019B50C0019B50C0019B50C390D00 +00390D0000390D0000390D0000390D0000370D0000301000002A1300002516 +0000211800001D1A00001A1C0000161E0000131F00000E1F0000061B000400 +1B0408001E0E08002017070021220400212C02002139000021470100215601 +002165030021780500208F08001EB30D001DB80C001DB80C001DB80C001DB8 +0C001EB80C30140000301400003014000030140000301400002E1500002817 +0000231A00001F1D00001A1F0000162100001222000011220000112300000F +23000008210003001D020800220B070024150700251F0500262A0200263601 +0026450100265402002664030026760500268D070023B00B0023BA0B0023BA +0B0023BA0B0023BB0B0023BB0B281B0000281B0000281B0000281B0000281B +0000261C0000211F00001C2100001723000012250000122500001226000012 +26000012260000112700000A26000100210009002609080027120700291D05 +002B2703002C3401002D4201002C5202002D6203002D7404002C8B06002AAD +090029BD090029BD090029BD090029BD09002ABD0920230000202300002023 +000020230000202300001F2300001926000014280000122800001229000013 +29000013290000132A0000132A0000122A00000C2B000102280008002A0709 +002D1007002E1A06003024030033300200363F0100354F0200356003003572 +0300348A040033AC050032C2050032C2050032C2050033C2050033C205172A +0000172A0000172A0000172A0000172A0000162A0000132B0000132C000014 +2C0000142D0000142D0000142E0000142E0000142E0000132F00000E300000 +042E0007002E050A00330E070034170600362104003A2D03003E3B02003F4B +02003E5D03003E7102003E8901003EAC01003ECD01003ECE01003ECE01003E +CE01003ECE01142F0000142F0000142F0000142F0000142F0000142F000015 +30000015310000153100001532000015320000153300001533000016340000 +1534000010360000063400070033030C00380C08003B1506003D1E05004029 +04004536030048470300485A0300496F01004A8800004AAD000049DE000049 +DE000049DE000049DE000049DE001635000016350000163500001635000016 +35000016350000163600001637000016370000173800001738000017390000 +17390000173A0000173A0000123C0000093B0006003A020D003F0A0A004412 +0700451B0600482505004D3205005042050052560400546D01005687000056 +AA000053EA000053EB000053EB000053EB000053EB00183B0000183B000018 +3B0000183B0000183B0000183C0000183C0000183D0000183E0000183F0000 +193F000019400000194000001941000019410000144300000C430005014201 +0E0047080C004C1008005018060053220600572E06005A3D06005D51050061 +6901006383000064A4000060E9000060EB000060EB000060EA000060EA0019 +43000019430000194300001943000019430000194300001A4400001A450000 +1A4500001A4600001A4700001B4700001B4800001B4800001B490000164C00 +000F4D0004034C000D0050050D00570D0A005D160600621F0500652A050068 +3805006A4A05006E620200717C0000739C00006FCF000070F1000070F10000 +70F1000070F2001B4B00001B4B00001B4B00001B4B00001B4B00001B4B0000 +1C4C00001C4D00001C4E00001C4E00001C4F00001C5000001D5000001D5100 +001D51000018550000125800020759000A005C030E00630A0B006B12070073 +1B040077260300793202007B4201007D590100817400008596000083D30000 +82FF000082FF000082FF000082FF001D5400001D5400001D5400001D540000 +1D5400001D5400001E5500001E5600001E5700001E5800001E5800001E5900 +001F5A00001F5B00001F5B00001A5F0000156400010C670007016A010D0071 +060B007A0D0800831504008A1F02008D2A00008F39000091500000946B0000 +9B8F000098C0000094FF000094FF000094FF000095FF001F5E00001F5E0000 +1F5E00001F5E00001F5E00001F5E00001F5F00002060000020610000206200 +0020630000206400002065000021660000216600001C6C0000187200001077 +0004087C00080083010B008D060800960C0400A1140100A81F0000AC2D0000 +AD420000B45F0000BC840000BDAF0000B0F70000B0F70000B0F70000B1F700 +216A0000216A0000216A0000216A0000216A0000216A0000216B0000216D00 +00226E0000226F000022700000227100002272000022730000227400001F7B +00001A830000158B0000109400000B9D000004A6000300B3010400C5040100 +DE0E0000EF1D0000FF2E0000FF4E0000FF6B0000FF8A0000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000237800002378 +0000237800001F7F00001B870000168F0000119700000CA0000006A9000101 +B5000300C5030100DD0D0000EE1C0000FE2C0000FF480000FF690000FF8300 +00FFB00000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013003F00 +19003F001F004100260046002D004C0036005200400057004E005B005E005C +0070005B0086005800A3005C00E2005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013003F0019003F001F004100260046002D004B0035005200400057 +004D005B005D005C006F005B0085005800A2005B00DA005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013003F0018003F001F004100260046002D004B +0035005100400057004D005B005D005C006F005B0084005800A1005B00D400 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410013003F0018003F001F0041 +00260046002D004B0035005100400057004D005B005C005C006E005B008300 +58009F005A00D0005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410013003F +0018003F001F004100250046002D004B00350051003F0057004C005B005C00 +5C006E005B00820058009E005A00CC005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F0018003F001F004100250045002D004B00350051003F00 +57004C005B005B005C006D005B00820058009D005A00C9005E00F9005E00F9 +005E00F9005E00F9005E00F9005E00F9004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F0018003F001E004100250045002D00 +4B00350051003F0057004C005B005B005C006C005B00810058009B005800C8 +005B00FF005900FF005800FF005700FF005600FF005500FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F0018003F001E00 +4100250045002C004B00340051003F0056004B0057005A0056006C00530081 +004E009D004D00CB004D00FF004C00FF004A00FE004900FE004900FE004800 +FD004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F0018003F001E004100250045002C00460033004B003D004D004A004C005A +004B006D004900830045009E004200CA004100F9004000F8003F00F8003E00 +F7003D00F6003D00F600410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0018003D001E003C0024003C002B003E00320040003B +004200490041005B0040006E003E0085003B00A0003900C7003600F2003500 +F1003400F1003400F0003300EF003200EF0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003B00160037001C0035002300350029 +003600310037003B003700480036005A0035006E003300840031009F002F00 +C4002D00EA002C00EA002C00E9002B00E9002A00E8002A00E8004100130041 +00130041001300410013004100130041001300410013004200120042001200 +420012004300120043001200420011003D00100039000F0035001300310019 +022E001F052D0027052E0030022E003B002D0048002B0059002A006C002800 +810027009B002600BD002500E2002400E1002300E0002300DF002200DE0022 +00DE0044001200440012004400120044001200440012004400120044001100 +4500110045001100450011004500110040000F003B000E0037000D0033000B +002E000F022A00150626001C092400240A24002E0724003A02230047012100 +57001F0067001E007A001E0092001E00B1001D00D4001C00D2001B00D1001B +00D0001A00D0001A00CF004700100047001000470010004700100047001000 +4700100047001000480010004800100044000F003E000D0039000B0034000A +00300008002C00070127000B05230011091E00180C1C00210C1A002B091800 +370716004305140051051300610512007304120088041300A2021400C30113 +00C2021200C1021100C0021000BF021000BE034B000F004B000F004B000F00 +4B000F004B000F004B000F004B000E004B000E0043000C003C000B00360009 +00310007012D0005022A000402250002031E0006071A000D0C1500140E1200 +1E0E0F00280C0B00310B09003C0B0600490B0400590C03006A0C03007D0B03 +00940A0500B2080400B1090300B0090200B0090200AF090201AF094F000D00 +4F000D004F000D004F000D004F000D004F000D004A000C0041000A003A0008 +00330006012E0004022A00020326010103210200031D0400031601010B0F00 +07100A001011050019120201221001022B0E0004360C0005450A0006550800 +0767080008780800078E080006AC080007AD080007AD070008AC070008AC07 +0008AC07440009004400090044000900440009004400090044000900400008 +0038000501300003022B00000429030003250500021F0700021D0900021B0B +0002120800090302001500050C130008170E000A210B000C2C07000E370400 +0E4502000F5501000F6501000F7703000E8C05000CA807000CAC07000CAC07 +000CAC07000CAC07000CAC073A0003023A0003023A0003023A0003023A0003 +023A000302350002022F0100032C04000227070001220900011F0C00011B0E +000218100002161100020D100006000D020E00100E0B001219070013220400 +132C010013370000134400001353000012630200127403001289060010A608 +000FAE08000FAE08000FAE08000FAE08000FAE083104000231040002310400 +023104000231040002310400022F0600012A090000250C0000200E00011D10 +000119130001161500011317000010180000071600020014040700160D0800 +1717070017210500172B020017360000164300001652000016610200167204 +001587070013A30A0013B00A0013B00A0013B00A0013B00A0013B00A2B0C00 +002B0C00002B0C00002B0C00002B0C00002B0C0000280D0000231000001F13 +00011B16000017180000131A00000F1A00000E1B00000E1B0000091A000100 +16020700190B08001A1507001B1F05001B2903001B3401001A4100001A5001 +001A5F02001A7004001A85070018A20B0017B30C0017B30C0017B30C0017B3 +0C0017B30C2413000024130000241300002413000024130000241300002115 +00001D180000181A0000141C00000F1D00000F1D00000F1E00000F1E00000F +1E00000B1D000001190007001C0907001E1208001F1C060020260300203201 +001F3F00001F4E01001F5D02001F6E04001F8307001DA00B001BB70C001CB7 +0C001CB70C001CB70C001CB70C1D1B00001D1B00001D1B00001D1B00001D1B +00001D1B00001A1C0000151F00001020000010200000102000001021000010 +21000010210000102200000D220000031C0005001E06070021100800231A06 +0024240400252F0100253D0100244C0100255B0200256C040025810600239D +0A0021BA0C0021BA0C0021BA0C0021BA0C0021BA0C15220000152200001522 +00001522000015220000152200001222000011230000112300001124000011 +240000112500001125000012250000122600000E2600000624000500210408 +00260D070027170600292104002A2C02002C3A01002B4901002B5902002C6A +03002B7F05002A9B080028BD0A0028BD0A0028BD090028BD090028BD091226 +00001226000012260000122600001226000012260000122700001227000012 +28000012280000122800001329000013290000132A0000132A0000102A0000 +082A00030027020A002B0B08002D1407002E1E050031290300343601003546 +01003457020034680300347D04003399050031C2050031C2050032C2050032 +C2050032C205132B0000132B0000132B0000132B0000132B0000132B000013 +2B0000132C0000132C0000142D0000142D0000142D0000142E0000142E0000 +142F0000112F00000B2F0002012D010A003008090033110600351B06003726 +03003B3202003F4102003F5302003E6602003E7B01003D9801003ECB01003E +CE01003ECE01003ECE01003ECE011430000014300000143000001430000014 +30000014300000153000001531000015320000153200001533000015330000 +163400001634000016350000133500000D3600010233000A0036060B003B0F +07003C1806003F220400432E0400473D0400494F0400496303004A7B00004B +9900004ACF00004ADF00004ADF00004AE000004AE000163600001636000016 +36000016360000163600001636000016370000163700001738000017390000 +17390000173A0000173A0000173B0000183B0000153C00000F3D0001053B00 +0A003D050D00420D090046150600481E05004C29050050380500534A050055 +600300577900005A97000056C9000055EC000055EC000055EC000055EC0018 +3D0000183D0000183D0000183D0000183D0000183D0000183E0000183E0000 +193F0000194000001941000019410000194200001942000019430000174400 +0012460000084500080045030E004B0A0B0051120700551B0500582506005C +3306005E440600615A0400657300006790000065B9000063E8000063E80000 +64E8000064E8001A4500001A4500001A4500001A4500001A4500001A450000 +1A4600001A4700001B4700001B4800001B4900001B4A00001B4A00001B4B00 +001C4B00001A4D0000154F00000C5100060151010F0057070C005E0F090064 +180600692204006C2E04006E3D040070520300746B00007889000077B50000 +76F9000076F9000076F9000076F9001C4E00001C4E00001C4E00001C4E0000 +1C4E00001C4E00001C4F00001C5000001D5000001D5100001D5200001D5300 +001D5300001D5400001E5500001C570000175A00000F5D0004045F000C0064 +040D006B0B0A00741306007C1D030080280100823500008348000085620000 +8B8100008DAD000089FF000089FF000089FF00008AFF001E5800001E580000 +1E5800001E5800001E5800001E5800001E5900001F5A00001F5B00001F5C00 +001F5D00001F5E00001F5E00001F5F0000206000001E6200001A670000136B +00020A6F00080073000D007C060A00860D06008F140300961F0100992B0000 +9B3D00009D570000A3780000A9A200009FFA00009FFD00009FFC00009FFC00 +20640000206400002064000020640000206400002064000020650000216600 +00216700002168000021690000216A0000216B0000216C0000216D0000206F +00001C760000177D000011840002098B000501920009009B040600A9090300 +B7110000C41D0000CD2D0000D4440000DD650000E28B0000F3E60000D9FC00 +00DAFD0000DBFD002272000022720000227200002272000022720000227200 +00227300002274000023750000237700002378000023780000237800002378 +000023780000227A00001D820000198A0000149200000F9A00000AA3000003 +AE000300BB010300CF060000E6130000F6240000FF340000FF5C0000FF7600 +00FF9F0000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004000 +15003F001B004000220042002900490031004E003B00550047005A0056005C +0068005C007B00580096005900C1005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300400015003F001B004000220042002900490031004E003A0055 +0047005A0056005C0067005C007B00590095005900BF005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410014003F001B00400022004200290049 +0031004E003A00550046005A0055005C0067005C007A00590094005800BC00 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410014003F001B0040 +00220042002900490031004E003A0055004600590055005C0066005C007900 +590093005800BA005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0014003F001B004000220042002800490031004E003A005400460059005500 +5C0066005C007900590092005800B7005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410014003F001B004000220042002800490031004E003A00 +54004500590054005C0065005C007800590091005800B5005E00F9005E00F9 +005E00F9005E00F9005E00F9005E00FB004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013004100130041001300410014003F001B004000210042002800 +480030004E00390054004500590054005C0065005C007700570090005300B6 +005700FF005500FF005300FF005200FF005100FF005000FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013004100130041001300410014003F001B00 +4000210042002800480030004D003900510044005300530053006400510079 +004C0091004900B7004900FE004700FD004600FC004500FB004400FB004300 +FB004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +410014003F001B00400021004000280041002F004400370048004200480052 +004700650046007A00420094003F00B7003D00F6003B00F5003A00F4003900 +F4003900F4003800F400410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410014003B001A00390020003800260039002D003B0036 +003D0041003D0052003B0065003A007B00370095003400B7003200EE003100 +ED003000EC002F00EC002E00EB002E00EB0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D001200390012003500180032001E00310025 +0131002D003200360031004200300053002E0066002C007B002B0094002A00 +B5002800E6002700E6002600E5002500E5002500E4002400E4004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D0012003900110035001000310010002E0016 +002B001D02290023032A002D00290037002700440025005400230066002100 +7900200090002000AE001F00DA001E00DD001D00DC001D00DB001C00DB001C +00DA0041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003A0011003500100030000E002D000D +002A000E002700140224001B042200230422002D01200038001E0045001B00 +5400190063001700750017008A001700A4001700CA001600D0001500CF0015 +00CE001400CD001400CC004100130041001300410013004100130041001300 +410013004100130041001300410013003B0011003600100031000E002D000D +002A000B0027000A0024000A01200011041D0018061B00210619002B031600 +35021400400112004E0110005E010F006E010E0080010E0097000E00B6000D +00BE000C00BC010C00BB010B00BA010B00B901430012004300120043001200 +43001200430012004300120043001200400011003A000F0034000D002F000C +002B000A0027000801230007011E0006011B00060218000D07150015091200 +1E080F0027070B002F05090039050600460504005406020067060201770602 +018C050200A7050100AE050000AD050001AD050001AD050001AC053E000F00 +3E000F003E000F003E000F003E000F003E000F003E000F0039000D0032000B +002D00090029000701230005021D0004031A00020317010102140101040E00 +070B0A00100C0500190B0300220A01012A0900033406000542040006500300 +06640200077401000787020006A1030006AB030006AB030006AB030006AB03 +0006AB0336000A0036000A0036000A0036000A0036000A0036000A0036000A +00300008002B000602260004021D0002041901000317030002150500021307 +0003110800040202001100040D0C0007170800092105000B2A01000B340000 +0A4100000A5000000A6100000A7101000A840300089E040008AB040008AB04 +0008AB040008AB040008AB042D0004022D0004022D0004022D0004022D0004 +022D0004022D00040229000203200101031C0300031906000217080002140A +0002110C00020F0E00020B100001000E0206000E0E07000E1706000E200400 +0E2902000E3300000D3F00000D4E00000D5E00000D6F02000D8204000B9A05 +000AAB06000AAB06000AAB06000AAB06000AAB062603000326030003260300 +0326030003260300032603000326030003200500021C080002190B0002150D +0002121000020F1200010B1300000A1400000A1400000011010600110B0700 +11150700111E05001127020011310000113D0000114C0000115B0100106C02 +00107F04000F9707000DAD07000DAD07000DAD07000DAD07000DAD071F0A00 +011F0A00011F0A00011F0A00011F0A00011F0A00011F0A00011B0D00021710 +000213130001101500000B1600000B1600000B1600000C1700000B17000002 +130006001408080015120700151C06001525030015300100153C0000144A00 +0014590100146A0300147D05001395080011AF090011AF090011AF090011AF +090011AF091912000119120001191200011912000119120001191200011912 +000116150001111700000C1800000D1900000D1900000D1900000D1A00000D +1A00000D1A000004170004001706070018100800191A06001A2304001A2E01 +00193A0000194800001857010019670300187A05001793090015B10B0015B2 +0B0015B20B0015B20B0015B20B121A0000121A0000121A0000121A0000121A +0000121A0000121A00000E1B00000E1B00000E1C00000E1C00000E1C00000E +1D00000F1D00000F1D00000F1D0000071A000300190307001B0D08001D1707 +001E2105001E2B02001E3800001D4600001D5501001E6503001E7805001D90 +09001AB60C001AB60C001AB60C001AB60C001AB60C0F1E00000F1E00000F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1F0000101F000010 +200000102000001020000010210000102100001021000009200001001B0108 +001F0A070021140700231E0500232902002435010023430100235301002463 +030024750500238E080020B40C0020B90C0020B90C0020BA0C0020BA0C1122 +00001122000011220000112200001122000011220000112200001122000011 +23000011230000112400001124000011240000112500001125000012250000 +0C25000002200008002308080026110700281B0600292603002A3201002B41 +01002A5102002B6103002B7304002A8C060028B10A0027BC0A0027BC0A0027 +BC0A0027BC0A12260000122600001226000012260000122600001226000012 +26000012270000122700001228000012280000122900001329000013290000 +132A0000132A00000E2B00000428000700290509002C0E07002D1806002F22 +0400322E0200353D0100344D0200345E020034710300338A040032AE050031 +C2050031C2050032C2050032C205132B0000132B0000132B0000132B000013 +2B0000132B0000132B0000132C0000132C0000142D0000142D0000142E0000 +142E0000142E0000142F0000142F00000F300000072F0005002E030B00320C +080034150600361F0500392A03003E380200404902003F5B03003F6F02003F +88010040AF01003FCF01003FCF01003FCF01003FCF01153100001531000015 +31000015310000153100001531000015310000153100001532000015330000 +153300001634000016340000163500001635000016360000123700000A3600 +040034010C0039090A003D1206003E1B050041260400463304004A4304004A +5803004B6E01004D8800004DB000004BE200004BE200004BE200004BE20017 +38000017380000173800001738000017380000173800001738000017380000 +17390000173A0000173A0000173B0000183C0000183C0000183D0000183D00 +00143F00000D3F0003023D010C0040070C00460F0800491806004C22050050 +2E0500543E060056520500596B01005C8500005CAA000058EC000058EC0000 +58EC000059EC00194000001940000019400000194000001940000019400000 +19400000194000001941000019420000194300001A4300001A4400001A4400 +001A4500001A45000016470000104900020548000C004B050E00510D0A0057 +1507005B1F05005E29060061380600644B0500686402006B7F00006CA20000 +68E8000068E8000069E8000069E8001B4900001B4900001B4900001B490000 +1B4900001B4900001B4900001B4900001B4A00001B4B00001C4C00001C4C00 +001C4D00001C4E00001C4E00001C4F00001951000013540001095500090057 +020F005E090B00661108006D1B0500712503007432030076430200785A0100 +7D7600007F9A00007DE600007DFF00007DFF00007EFF001D5200001D520000 +1D5200001D5200001D5200001D5200001D5200001D5300001D5400001E5500 +001E5600001E5700001E5800001E5800001E5900001E5A00001B5D00001661 +00000D6400060267000D006D050C00760C08007F140500861E02008A2A0000 +8C3900008D500000916C00009893000093CF000092FF000092FF000092FF00 +1F5E00001F5E00001F5E00001F5E00001F5E00001F5E00001F5E00001F5F00 +00206000002061000020620000206300002064000020650000206500002166 +00001E6A000019700000127500030A7B00070181010B008B050800940B0500 +9F130200A71D0000AC2C0000AC400000B45F0000BD870000BCBA0000B0F700 +00B0F70000B0F700216C0000216C0000216C0000216C0000216C0000216C00 +00216C0000216D0000226E0000226F00002270000022710000227200002273 +00002374000023750000207A00001B830000178B0000129500000D9E000007 +A8000101B3000400C3030100DC0C0000ED1B0000FE2C0000FF4E0000FF6C00 +00FF910000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F0018003F001E004100250046002D004B0035005200400058004E005B +005F005C0073005A008B005800AE005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F0018003F001E004100250045002D004B00350051 +00400057004E005B005F005C0072005A008A005800AC005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F0017003F001E004100250045 +002D004B0035005100400057004D005B005E005C0071005A0089005800AA00 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013003F0017003F +001E004100250045002C004B00350051003F0057004D005B005D005C007100 +5A0088005800A8005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300400017003F001E004100250045002C004B00350051003F0057004D00 +5B005D005C0070005A0087005800A7005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400017003F001E004100250045002C004B003400 +51003F0057004C005B005C005C006F005B0086005800A5005E00F5005E00F9 +005E00FF005D00FF005B00FF005A00FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400017003F001E0040002500 +44002C004B00340051003F0057004C005B005C0059006E00550085005000A7 +005200F5005000FF004F00FF004D00FF004C00FF004B00FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130040001700 +3F001D004000240044002C00490034004C003D004F004B004E005B004D006F +004A0087004600A8004400E9004300FA004100F9004000F9003F00F8003E00 +F7004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300400017003E001D003C0024003D002A003F00320041003B0043004A +0042005C00410071003F008A003B00A9003900E0003700F3003500F2003400 +F1003400F0003300EF00410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B00160037001C003500220035002900360031 +0036003B003700490036005D003400710031008A002F00A9002D00D8002C00 +EA002B00E9002A00E9002900E8002900E80041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0012003B001100370010003300140030001A002D0020 +022D0028012D0031002C003C002A004B0029005D0027007100250088002400 +A6002300CF002200E2002100E1002100E1002000E0002000DF004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B0011003600100032000F002F000E002C0011 +002900180226001F04250027022500320023003E0020004C001E005D001C00 +6F001B0084001A009E001A00C3001900D7001900D5001800D4001700D30017 +00D30041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003C0011003700100032000F002E000E002B000D +0028000C0025000F01220017041F001E051E0027021C0032001A003E001700 +4B0015005B0013006B0011007E00110095001100B4001100C8001000C6000F +00C5000F00C4000E00C3004100130041001300410013004100130041001300 +4100130041001300410013003F0012003900110033000F002E000E002A000D +0027000C0024000B0021000A001E000D021B00150418001E04170027011400 +310011003B000E0048000C0057000B0068000900780008008C000800A70008 +00B7000700B5000600B4000600B3000500B2003C0011003C0011003C001100 +3C0011003C0011003C0011003C0011003B001100350010002F000E002B000D +0027000C0023000A001F0009001C0008001900070016000B03130014051100 +1D030E0026010C002E00090037000600440004005000020064000200730001 +01850100019F010001AC010002AC000002AC000002AC000002AC0032000F00 +32000F0032000F0032000F0032000F0032000F0032000F0031000F002C000D +0028000C0023000A001F0009001B0007001700060114000401110003010E00 +0704090011060600190403002103010029030002310100033E0000034C0000 +036100000370000003810000039A010003AB010003AB010003AB010003AB01 +0003AB012B000B002B000B002B000B002B000B002B000B002B000B002B000B +002A000B00250009011F0007011A0005011600030212000202100101020F03 +00020D0400020101000D00030F040005160300051F02000528010005300000 +053B0000054B0000055E0000066D0000067E01000596010004AB020004AB02 +0004AB020004AB020004AB0222000601220006012200060122000601220006 +012200060122000601200006021A0003021601010213020003110400020F06 +00020C090002070D0001060E0000010D010300090C050008140500081D0300 +08260200082F0000083A00000849000008590000086A0000087B0100079103 +0006AB030006AB030006AB030006AB030006AB031801010318010103180101 +03180101031801010318010103180101031802010315040002120700030E0A +00030B0D000207100000071000000710000007100000030F0002000D090600 +0C1306000C1B04000C2402000C2D01000C3800000B4600000B5600000B6701 +000B7902000A8F040009AB050009AB050009AB050009AB050009AB05150900 +0315090003150900031509000315090003150900031509000314090003100D +00020C10000108120000091200000912000009120000091200000913000005 +11000200100606000F1007000F1A060010230300102C01000F3700000F4400 +000F5400000F6401000F7603000E8B05000CA906000CAC06000CAC07000CAC +07000CAC070F1200010F1200010F1200010F1200010F1200010F1200010F12 +00010E1200010A1400000A1400000A1400000A1500000B1500000B1500000B +1500000B160000071400020012030600130D08001317070014210500142A02 +0013350000134200001351000013610100137303001289060010A708000FAE +08000FAE09000FAE090010AE090B1600000B1600000B1600000B1600000B16 +00000B1600000B1600000B1600000C1700000C1700000C1800000C1800000C +1800000D1800000D1900000D1900000A1800010115010700160A0800181407 +00181E0500182803001833010018400000174F0000175F0200177004001786 +070015A40A0014B00A0014B00B0014B00B0014B00B0D1A00000D1A00000D1A +00000D1A00000D1A00000D1A00000D1A00000D1A00000E1A00000E1B00000E +1B00000E1B00000E1C00000E1C00000E1C00000E1D00000C1C000002180006 +001A0807001B1108001D1B06001D2503001D3101001D3E00001C4D01001C5D +02001C6E04001C8307001AA20B0019B50C0019B50C0019B50C0019B50C0F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F +1E00000F1F00000F1F0000101F000010200000102000001020000010210000 +0E210000051C0004001C050800200E08002218060023230400232E0200233B +0000224A0100235A0200236B040023810600219F0A001FB90C001FB90C001F +B90C001FB90C10220000102200001022000010220000102200001022000010 +22000011220000112200001123000011230000112400001124000011240000 +112500001125000010250000082400030020020900250B0700261507002820 +05002A2B02002B3801002A4801002A5802002B6903002B7E0500299C080027 +BC0A0027BC0A0027BC0A0027BC0A1227000012270000122700001227000012 +27000012270000122700001227000012270000122800001228000012290000 +1329000013290000132A0000132A0000112A00000B2B000202280109002B08 +08002D1207002E1C0500302703003334020036430100355502003567030035 +7C0300339A040032C2050032C2050032C2050032C205132C0000132C000013 +2C0000132C0000132C0000132C0000132C0000132C0000142C0000142D0000 +142E0000142E0000142E0000142F0000142F000014300000133000000D3100 +01032F00090030060A00350F070036180600382304003C2F0300413E020041 +50030040640300417B0100409A010041D1010041D2010041D2010041D20115 +32000015320000153200001532000015320000153200001532000015320000 +15330000163400001634000016350000163500001636000016360000163700 +001538000010390000063700080037040C003C0C090040150600411F050045 +2A04004A3904004C4B04004D6103004F7A0000519A00004ED800004EE50000 +4EE500004EE500173A0000173A0000173A0000173A0000173A0000173A0000 +173A0000173A0000173B0000183B0000183C0000183D0000183D0000183E00 +00183F0000193F00001840000012410000094100070040020E00450A0B004B +1207004E1B05005125050055330600584506005B5B04005F76000061950100 +5DC900005CEC00005DEC00005DEC0019430000194300001943000019430000 +194300001943000019430000194300001A4400001A4400001A4500001A4600 +001A4700001B4700001B4800001B4800001A490000154C00000D4D0005014C +000F0051070D00580F09005E18060062220500662E0500683D05006B530400 +6F6D0000728C000070BB00006FF0000070F1000070F1001C4C00001C4C0000 +1C4C00001C4C00001C4C00001C4C00001C4C00001C4D00001C4E00001C4E00 +001C4F00001D5000001D5100001D5100001D5200001D5300001D5400001857 +0000115A0003065C000B0060040E00670B0A0070130700771D04007C280200 +7E3501007F480000826300008784000088B6000085FF000086FF000086FF00 +1E5800001E5800001E5800001E5800001E5800001E5800001E5800001E5800 +001E5900001F5A00001F5B00001F5C00001F5D00001F5D00001F5E00001F5F +00001F6000001B650000156A00010C6D00070271000D0079050B00830C0700 +8D140300941E0100972B0000993C00009C570000A27A0000A6AA00009DFD00 +009DFD00009DFD002065000020650000206500002065000020650000206500 +002065000020650000216600002168000021690000216A0000216B0000216C +0000216C0000226D0000226E00001D750000187C0000138400010C8B000403 +930007009B030600A9080300B80E0000C61A0000D22A0000E1410000E66400 +00E98C0000E3FF0000E1FF0000E1FF00> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410014003F001B004000210042002800490031004E003A00550047005A +0057005C0069005B00800058009F005D00E7005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410014003F001B004000210042002800490031004E +003A00550047005A0057005C0069005B007F0058009D005C00DD005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410014003F001A004000210042 +002800490031004E003A00550047005A0056005C0068005C007E0058009C00 +5B00D4005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410014003F +001A003F00210042002800480030004E003A00550046005A0056005C006800 +5C007D0058009B005A00D0005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F001A003F00210042002800480030004E00390054004600 +5A0055005C0067005C007C00580099005A00CB005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F001A003F0021004200280048003000 +4D00390054004500590055005C0067005C007B00580098005900C8005C00FF +005A00FF005800FF005600FF005500FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F001A003F002100 +42002800480030004D00390054004500560054005600660053007C004D0099 +004C00CC004C00FF004A00FE004800FD004700FD004600FC00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F001A003F0020004100270042002E00450037004A0043004A005400490067 +0047007E0043009B004000CA003E00F7003C00F5003B00F5003A00F5003A00 +F4004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003C0019003A001F00380026003A002D003C0036003E0042 +003E0053003C0068003A00800037009C003400C7003200EE003100ED003000 +EC002F00EC002E00EB00410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003A0011003500170032001E003000240131002C +003100360031004200300054002E0068002C007F002A009B002900C3002700 +E6002600E5002500E4002500E4002400E30041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003900110034000F0031000F002E0015002A001C +022800230429002C012800370026004400240055002100670020007C001F00 +96001E00BB001E00DD001D00DB001C00DA001B00D9001B00D8004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003E0012003900110034000F0030000E002C000D0029000D +002600130123001A042100220421002C011E0038001C004500190055001700 +65001500780015008F001500AE001500CF001400CD001300CC001200CB0012 +00CA0041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003A00110034000F0030000E002C000D0028000C +0025000B0022000A001F0011031C0019041A00220319002C00160037001300 +4300100052000E0062000D0073000C0087000B00A1000B00BD000A00BC000A +00BA000900B9000900B8004000120040001200400012004000120040001200 +4000120040001200400012003C0011003600100030000E002C000D0028000C +0024000B0021000A001D0009001A0008001700100415001804120022021000 +2B000D0034000A003F0008004D0006005E0005006E0003007F000200980002 +00AE000201AD000101AD000101AD000101AC00350010003500100035001000 +350010003500100035001000350010003500100032000F002D000D0028000C +0024000B0020000A001C0008001800070015000600130005000F000E040C00 +18030A0020020700280004002F00020039000100480000015B0000016C0000 +017C00000295000001AC000001AC000001AC000001AC000001AC002C000D00 +2C000D002C000D002C000D002C000D002C000D002C000D002C000D0029000C +0025000B0020000A001B0008001700070014000600110004000F0003000D00 +020006000E020300150101001D000000260000002D00000037000001470000 +015A0000016B0000017B00000293000001AB000001AC000001AC000001AC00 +0001AC0024000B0024000B0024000B0024000B0024000B0024000B0024000B +0024000B0021000A001C0008001700070013000500100004000E0002000C00 +0100060000000000000000000E000000140000001D000000250000002C0000 +013600000146000001590000016A000002790000028F000002A9000002AC00 +0002AC000002AC000002AC001A0008001A0008001A0008001A0008001A0008 +001A0008001A0008001A0008001800070013000501100003010E0102010B02 +00010204000002050000020600000206000000030C020003120200031B0100 +03240100032B00000335000003440000045300000467000004760000048B00 +0003A6010003AB010003AB010003AB010003AB011100020211000202110002 +021100020211000202110002021100020211000202100101020E0300010905 +0002040B0000040C0000040C0000040D0000040D0000050D00000009070300 +061104000619030006220200062A0100063400000641000007500000076300 +00077401000687010005A3020005AB020005AB020005AB020005AB020C0700 +020C0700020C0700020C0700020C0700020C0700020C0700020C0700020A0A +0002050E0000050E0000060E0000060F0000060F0000060F0000060F000007 +0F0000000D0304000A0E06000A1705000A2003000A2901000A3200000A3F00 +000A4E00000A6000000A71010009840300089F040007AB040007AB040007AB +040007AB040710000007100000071000000710000007100000071000000710 +00000710000007100000071000000810000008110000081100000811000008 +110000081200000912000001100104000E0B07000E1506000E1E04000E2702 +000E3100000E3D00000D4B00000D5C00000D6D02000D8104000B9A05000AAB +06000AAB06000AAB06000AAB06091200000912000009120000091200000912 +000009120000091200000912000009130000091300000A1300000A1300000A +1400000A1400000A1400000A1500000B150000031200040012080700121207 +00121C060012250300122F0100123B00001249000011590100116A0200117E +0400109707000EAD08000EAD08000EAD08000EAD080B1600000B1600000B16 +00000B1600000B1600000B1600000B1600000B1600000B1600000B1600000C +1700000C1700000C1700000C1800000C1800000C1800000C18000006160003 +0015050700160F08001719060017230400172D020017390000164700001656 +010016670200167B05001594080013B00A0013B00A0013B00A0013B00A0D19 +00000D1900000D1900000D1900000D1900000D1900000D1900000D1900000D +1A00000D1A00000E1A00000E1B00000E1B00000E1B00000E1C00000E1C0000 +0E1C0000081A000100180207001A0B08001C1607001D2005001D2A02001C36 +00001C4400001C5401001C6403001C7805001B91090018B40C0018B40C0018 +B40C0018B40C0F1D00000F1D00000F1D00000F1D00000F1D00000F1D00000F +1D00000F1D00000F1E00000F1E00000F1F00000F1F0000101F000010200000 +1020000010200000102000000B200001021B0107001E09070020120700221D +0500232703002334010022420100225201002262030023750500228F08001F +B90D001FB90D001FB90C001FB90C1122000011220000112200001122000011 +22000011220000112200001122000011220000112300001123000011240000 +11240000112400001125000011250000122500000D26000004220006002205 +0800260F070027190600292404002A3002002B3E01002A4F01002B6002002B +7204002A8C060028B50A0027BC0A0027BC0A0028BC0A122700001227000012 +27000012270000122700001227000012270000122700001228000012280000 +122800001329000013290000132A0000132A0000132A0000132B00000F2B00 +00072A00040028030A002D0C07002E15060030200400322C0200363A010037 +4A0200365C020036700300358A030034B2040034C3050034C3040034C30414 +2D0000142D0000142D0000142D0000142D0000142D0000142D0000142D0000 +142D0000142E0000142E0000142F0000142F00001430000015300000153100 +0015310000123200000A320003002F000C003309090037120600381C05003B +270400403403004445030043590300436E02004389000045B5000044D60000 +44D6000044D600163400001634000016340000163400001634000016340000 +16340000163400001634000016350000163600001636000016370000173800 +00173800001739000017390000143A00000E3B00010238000C003B060C0040 +0F080043180600452205004A2F04004E3F050050530400526B020054870000 +54B2000051E8000051E9000051E900183D0000183D0000183D0000183D0000 +183D0000183D0000183D0000183D0000183D0000183E0000183E0000193F00 +00194000001940000019410000194200001942000017430000114500010644 +000A0045040E004B0C0A0051150700541E0500572906005B3806005E4C0500 +626602006582000065A8000062E9000062E9000062E9001A4600001A460000 +1A4600001A4600001A4600001A4600001A4600001A4600001A4700001B4800 +001B4800001B4900001B4A00001B4B00001B4B00001C4C00001C4C0000194E +0000145100000A5200080053020F0059080C0061110800681A05006C250400 +6F32040070430300745C0200787900007A9F000078FC000078FC000079FC00 +1D5100001D5100001D5100001D5100001D5100001D5100001D5100001D5100 +001D5200001D5300001D5400001D5500001E5500001E5600001E5700001E58 +00001E5800001C5A0000175F00000F6200050464000C006A040D00720B0900 +7C140500831E030087290100893800008B5000008E6E0000959700008FEC00 +008FFF00008FFF001F5E00001F5E00001F5E00001F5E00001F5E00001F5E00 +001F5E00001F5E00001F5F0000206000002061000020620000206300002064 +00002065000020650000216600001F6900001A6F0000147500020C7A000603 +80000A0089040900930A05009E110200A71C0000AC2A0000AC3F0000B55F00 +00BE8A0000B9CD0000B0F70000B1F700> +] 4 { dup 0.1 lt { 1.2 mul 0.02 sub } if + dup 0 lt { pop 0 } if + } bind dup dup dup ] +/RenderingIntent (Perceptual) +>> +setcolorrendering diff --git a/crd/zjs/2300w-1200@150-l250-kx,ucr125,75-per.crd b/crd/zjs/2300w-1200@150-l250-kx,ucr125,75-per.crd new file mode 100644 index 0000000..562eb94 --- /dev/null +++ b/crd/zjs/2300w-1200@150-l250-kx,ucr125,75-per.crd @@ -0,0 +1,4684 @@ +<< +/ColorRenderingType 1 +/BlackPoint [0.000000 0.000000 0.000000] +/WhitePoint [0.964200 1.000000 0.824900] +% Bradford Cone Space +/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] +/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ] +% VonKries-like transform in Bradford Cone Space +/TransformPQR [ +{exch pop exch 3 get mul exch pop exch 3 get div} bind +{exch pop exch 4 get mul exch pop exch 4 get div} bind +{exch pop exch 5 get mul exch pop exch 5 get div} bind +] +/EncodeLMN [ +{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +] +/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] +/EncodeABC [ +{ 116 mul 16 sub 100 div } bind +{ 500 mul 128 add 255 div } bind +{ 200 mul 128 add 255 div } bind +] +/RenderTable [ 33 33 33 [ +<7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600 +C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A36 +00C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A +3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C67A3600C6 +7A3600C67A3600C67A3600C67A3600C6> + + + + + + + + +<9F3D0000A03E0000A13F0000A6430000AC460000B3490000BA4C0000C34D00 +03CC4A000FD541001CD531002CC71D0042BB06045AB400185AB6002E57C300 +4C55C0006C52B1008E52A300B04CA706FF419D0BFF399D0BFF399D0CFF399D +0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF39 +9D0CFF399D0CFF399F3D0000A03E0000A13F0000A6430000AC460000B34900 +00BA4C0000C34D0003CC4B000FD541001CD631002CC81E0042BC06045AB400 +185BB6002E57C2004B55C0006B53B1008E52A400B04CA706FF419D0CFF399D +0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF39 +9D0CFF399D0CFF399D0CFF399D0CFF39A03E0000A03E0000A1400000A64300 +00AC460000B2490000BA4C0000C34E0002CC4C000ED543001CD834002BCA20 +0041BE07025AB500165CB6002C58C2004956C2006A53B2008D53A500AF4DA7 +05FF439E0DFF399E0DFF399E0DFF399E0DFF399E0DFF399E0DFF399E0DFF39 +9E0DFF399E0DFF399E0DFF399E0DFF399E0DFF399E0DFF39A03E0000A03E00 +00A1400000A6430000AC470000B24A0000BA4D0000C34F0002CC4C000ED644 +001BD936002ACC220040C008015AB600145DB6002B59C1004757C3006854B3 +008B54A600AF4EA704FF449F0EFF399F0EFF399F0EFF399F0EFF399F0EFF39 +9F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF +39A03E0000A03F0000A1400000A6440000AC470000B24A0000BA4D0000C24F +0001CC4D000DD646001ADA380029CE25003EC20A005AB700135EB600295AC1 +004458C5006655B4008855A700AE50A703FF46A00FFF3AA00FFF3AA00FFF3A +A00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF3AA00FFF +3AA00FFF3AA00FFF3AA03F0000A03F0000A1410000A6440000AB470000B24A +0000B94D0000C2500001CC4E000CD7480019DB3A0029D027003DC40C0058B7 +00115FB600275BC0004259C7006556B5008656A800AD51A602FF48A110FF3B +A111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF +3AA111FF3AA111FF3AA111FF3AA111FF3AA03F0000A0400000A1410000A645 +0000AB480000B24B0000B94E0000C2500001CC50000CD84A0018DC3D0028D2 +29003CC60F0056B9000F60B700255CC000405AC8006357B6008457AA00AD52 +A601FF4AA210FF3CA211FF3BA211FF3BA211FF3BA211FF3BA211FF3BA211FF +3BA211FF3BA211FF3BA211FF3BA211FF3BA211FF3BA211FF3BA03F0000A040 +0000A2410000A6450000AB480000B14B0000B94E0000C2510001CC51000BD8 +4C0017DE3F0027D52D003AC8130054BA000C61B700235DBF003D5BC9006058 +B7008159AB00AC53A500FA4CA210FF3DA211FF3CA211FF3CA211FF3CA211FF +3CA211FF3CA211FF3CA211FF3CA211FF3CA211FF3CA211FF3CA211FF3CA211 +FF3CA0400000A1400000A2420000A6450000AB480000B14C0000B94F0000C1 +520001CC52000AD84E0016DF430025D8300038C9170051BB000A63B800215F +BE003A5DCB005D5AB9007E5AAE00A955A400F24EA20FFF3FA111FF3DA111FF +3EA111FF3EA111FF3EA111FF3EA111FF3EA111FF3EA111FF3EA111FF3EA111 +FF3EA111FF3EA111FF3EA0400000A1410000A2420000A6460000AB490000B1 +4C0000B84F0000C1530001CC540009D9510015E1460024DB340036CA1C004E +C0040862B9001E61BD00365ECD00595CBB007B5CB001A757A300E951A20FFF +42A111FF3FA111FF3FA111FF3FA111FF3FA111FF3FA111FF3FA111FF3FA111 +FF3FA111FF3FA111FF3FA111FF3FA111FF3FA1410000A1420000A2430000A6 +460000AA490000B14D0000B8500000C1540001CB550008D8530014E34B0022 +DE390034CB21004AC5070661BA001A63BD003260CF00555EBF00775DB301A4 +59A200DE54A410FF43A111FF41A111FF41A111FF41A111FF41A111FF41A111 +FF41A111FF41A111FF41A111FF41A111FF41A111FF41A111FF41A1420000A1 +420000A2440000A5470000AA4A0000B04D0000B7510000C0550000CB570007 +D8560012E34F0020E23F0031CE270047CB0C0360BB001665BD002E62D10051 +60C400725FB702A05BA200D657A711FF45A111FF44A111FF44A111FF44A111 +FF44A111FF44A111FF44A111FF44A111FF44A111FF44A111FF44A111FF44A1 +11FF44A1420000A1430000A2440000A5470000AA4B0000B04E0000B6520000 +BF560000CA590005D7590011E453001DE746002ED52F0044D311015FBF0011 +68BD002965CE004963CB006E60BC029B5EA500D259A113FF499813FF499516 +FF499516FF499516FF499516FF499516FF499516FF499516FF499516FF4995 +16FF499516FF499516FF49A1430000A1440000A2450000A5480000A94B0000 +AF4F0000B5530000BE570000C95A0003D65C000FE559001BEA4C002BDD3800 +40D319005AC3000B6BBD002367CC004166B800646BA100916C7700AD6C5F00 +E76A5800F8695400F86A5400F86B5400F86B5400F86B5400F86B5400F86B54 +00F86B5400F86B5400F86B5400F86B5400F86BA1440000A1440000A2460000 +A4490000A84C0000AE500000B4530000BD580000C85C0002D45F000DE35D00 +19EE540027E642003CD1240054C802056C9C00167584002C7B6F00477D6500 +6E824D009A7E3F00E1773B00FF753800FF763800FF763800FF763800FF7638 +00FF763800FF763800FF763800FF763800FF763800FF763800FF76A1450000 +A1450000A2460000A44A0000A84D0000AD500000B3540000BC590000C65E00 +01D262000BE1620016F15D0023EC4C0037BF36004E9520006B5F0600854700 +158F37002C8F2D004891230070901A00C28A1800FF861500FF881400FF8814 +00FF881400FF881400FF881400FF881400FF881400FF881400FF881400FF88 +1400FF88A1460000A1460000A2470000A44A0000A74E0000AC510000B25500 +00BA5A0000C5600000D0640008DD660013EF630020CA5C0032994B004A7534 +00634A21007E180B00970408189B020D339701135E97001ACA8B1A2AFF731A +2CFF721A2CFF721A2CFF721A2CFF721A2CFF721A2CFF721A2CFF721A2CFF72 +1A2CFF721A2CFF721A2CFF72A1470000A1470000A1480000A34B0000A64F00 +00AB520000B1560000B85B0000C2620000CE680005D66B0011C570001EA76C +002E855F0045644D005D403D00781026018800261590003033900038618A00 +3A9E7E0A3EF3700940F26F0940F26F0940F26F0940F26F0940F26F0940F26F +0940F26F0940F26F0940F26F0940F26F0940F26FA1470000A1480000A14900 +00A34C0000A54F0000A9530000AF570000B65D0000C0640000C36C0004B673 +0011A878001C9278002A7975003D5C6B00583759006D0C4300830047168600 +5336830059657C005FBA700059FF6A005AFF69005BFF69005BFF69005BFF69 +005BFF69005BFF69005BFF69005BFF69005BFF69005BFF69005BFF69A14800 +00A1490000A14A0000A24D0000A5500000A8540000AE580000B45E0000B366 +0000A9710008A17900109581001985870024708A00335B91004F337800610C +6400790069187900713873007F696E0794E9601F91FF4C1E92FF4B1E92FF4B +1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF4B1E92FF +4B1E92FF4BA1490000A14A0000A14B0000A24E0000A3510000A6550000AB5A +0000A86100009F6B0003987600089180000D888B00147B95001A689A002751 +9C003A329400500B8501680087186A0096366400A05F5E00A59A5918BBFF41 +18BCFF4118BCFF4118BCFF4118BCFF4118BCFF4118BCFF4118BCFF4118BCFF +4118BCFF4118BCFF4118BCFF41A14A0000A14B0000A14C0000A14F0000A252 +0000A5560000A15C000096650001906F00048C7B0006868700097D94000D73 +A1001163AB001B4BAD002C32B0003F0FA8005500A4155B00C1325600CA574F +04E9934717ECDC351CF3E6301CF4E6301CF4E6301CF4E6301CF4E6301CF4E6 +301CF4E6301CF4E6301CF4E6301CF4E6301CF4E630A14B0000A14B0000A14D +0000A1500000A15300009B580000906000008969000285740002828100027C +8E0003749D000570B0000763C2000F45C4002131D2002F18E6004200E60C4D +12FF3B3A09FF583B12FF8B310AFFB03106FFB23206FFB23206FFB23206FFB2 +3206FFB23206FFB23206FFB23206FFB23206FFB23206FFB23206FFB232A14C +0000A14C0000A14E0000A0500000995500008C5C0001846400007E6D00007C +790000778600006F9500006FA800006DBF000062D800053FD4001A2CE50027 +17FF003902FF11411DFF49250BFF563012FF842809FFA62A05FFB22B05FFB2 +2B05FFB22B05FFB22B05FFB22B05FFB22B05FFB22B05FFB22B05FFB22B05FF +B22B05FFB22BA14D0000A14D0000A14E0000995200008A590001805F00007A +67000075700000717C00006A8800006397000061A800005EBE00004FCF000B +34D3001A24EB00280EFF023701FF1C3A17FF4B220DFF60280FFF87240AFFA6 +2502FFB02702FFB02702FFB02702FFB02702FFB02702FFB02702FFB02702FF +B02702FFB02702FFB02702FFB027A14E0000A14E00009B4F00008A5500007F +5B000077610000706900006C730000667F0000608B00005A98000057A90000 +53BE00013FCA000F2BD6001A1DF0002806FF073405FF272E14FF511F16FF71 +1B0CFF8A2006FFA42200FFB12400FFB12400FFB12400FFB12400FFB12400FF +B12400FFB12400FFB12400FFB12400FFB12400FFB124A14E00009D4E00008B +5200007F570000755D00006D630000686B0000637600005E820000588E0000 +539B00004FAB000047BD000435CB000F25DB001B17F6002702FF112F0BFF32 +2314FF581910FF721A0DFF8D1908FFA71C00FFB22000FFB22000FFB22000FF +B22000FFB22000FFB22000FFB22000FFB22000FFB22000FFB22000FFB220A0 +4E00008C5100007F540000755900006C5E000065650000606E00005C790000 +57850000529100004D9F000047AD00003DBF00062CCF000F1EE2001B0FF900 +2700FF192A09FF361E10FF5A1715FF780E15FF900B04FFA51A00FFB21D00FF +B21D00FFB21D00FFB21D00FFB21D00FFB21D00FFB21D00FFB21D00FFB21D00 +FFB21D00FFB21D8D51000080530000765600006B5A0000646000005E680000 +5A710000557D0000508800004B95000046A1000040B0000034C4000625D400 +1018E8001A04FB032700FF1F2313FF46100DFF5E130EFF771015FF910504FF +A01600FFB61900FFB71900FFB71900FFB71900FFB71900FFB71900FFB71900 +FFB71900FFB71900FFB71900FFB7197F530000755500006D570000645C0000 +5D620000586B0000547500004F8000004A8C0000449800003FA5000038B500 +002CC900061ED9001012ED001A00FB0F2200FF241E13FF4B090CFF600F13FF +7A0214FF900104FF9F1206FFBB110BFFC40D0BFFC40D0BFFC40D0BFFC40D0B +FFC40D0BFFC40D0BFFC40D0BFFC40D0BFFC40D0BFFC40D755500006C560000 +655800005D5E000058650000536E00004E79000049840000439000003D9B00 +0037A800002FBB000024CC000718DE001009EF011B00FC171C0AFF310F12FF +500309FF620B0DFF780510FF8D0000FF9C100FFFC00513FFC70113FFC70113 +FFC70113FFC70113FFC70113FFC70113FFC70113FFC70113FFC70113FFC701 +6B560000645700005D5A000057600000526800004D720000487E0000438800 +003D930000369F00002FAD000027C000011CD0000811E2001000F1051A00FE +1C160DFF38070FFF510106FF620A09FF77050CFF8A0003FF9B0A08FFB1050A +FFB5040AFFB5040AFFB5040AFFB5040AFFB5040AFFB5040AFFB5040AFFB504 +0AFFB5040AFFB504635800005D590000585C0000526300004D6C0000487700 +00428200003C8C0000359600002EA3000027B2000020C3000115D3000809E5 +001100F40E1500FF211209FF39060AFF520009FF660008FF770008FF880005 +FF970404FFA80504FFAA0504FFAA0504FFAA0504FFAA0504FFAA0504FFAA05 +04FFAA0504FFAA0504FFAA0504FFAA05> +<9C3700009D3800009D380000A13B0000A73F0000AE420000B6440000BD4600 +01C341000CC835001AC827002ABB140040AE010655AE001C51B000314DBA00 +4D4BBC006C49AE008948A200A543A002DB3A9803FF349602FF339602FF3396 +02FF339602FF339602FF339602FF339602FF339602FF339602FF339602FF33 +9602FF339602FF339D3700009D3800009D390000A13C0000A73F0000AE4200 +00B6450000BD460001C342000CC937001ACA280029BD16003FAF020556AE00 +1A52B100304EBA004B4CBD006A4AAF008849A300A544A002D93C9904FF3596 +03FF349603FF349603FF349603FF349603FF349603FF349603FF349603FF34 +9603FF349603FF349603FF349603FF349D3800009D3900009E390000A13C00 +00A7400000AE430000B6450000BE470001C443000BC9390019CC2A0029BF18 +003EB1020456AE001953B1002E4FBA004A4DBE00694AB000874AA300A445A0 +02D73D9A04FF369603FF349703FF349703FF349703FF349703FF349703FF34 +9703FF349703FF349703FF349703FF349703FF349703FF349D3800009E3900 +009E3A0000A13D0000A7400000AF430000B6460000BE480001C444000BCA3A +0019CE2C0028C01A003DB2030257AF001854B1002D50BA00484EBF00674BB0 +00864BA400A346A001D53E9A05FF369704FF359704FF359704FF359704FF35 +9704FF359704FF359704FF359704FF359704FF359704FF359704FF359704FF +359D3900009E3A00009E3A0000A23D0000A7410000AF440000B6460000BE48 +0000C445000ACB3C0018CF2E0027C21C003CB4030157AF001656B2002C51BA +00464FC000664CB100844CA400A248A001D33F9B05FF379704FF369704FF36 +9704FF369704FF369704FF369704FF369704FF369704FF369704FF369704FF +369704FF369704FF369E3900009E3A00009F3B0000A23E0000A8410000AF44 +0000B6470000BE490000C446000ACB3E0017D0300026C41E003BB6050056B0 +001457B2002A52BA004450C100644DB200824DA500A1499F01D0419C06FF38 +9805FF369805FF369805FF369805FF369805FF369805FF369805FF369805FF +369805FF369805FF369805FF369805FF369E3A00009E3B00009F3C0000A23E +0000A8420000AE450000B6480000BD4A0000C5480009CC400016D1320025C7 +200039B9080054B1001258B2002853BA004151C200624EB300804FA600A04B +9F01CE429D07FF399806FF379806FF379806FF379806FF379806FF379806FF +379806FF379806FF379806FF379806FF379806FF379806FF379E3B00009F3C +00009F3D0000A23F0000A8420000AE450000B6480000BD4A0000C5490008CD +420016D3350024CA230037BC0C0052B100105AB3002655B9003E53C3005F50 +B4007D50A7009F4D9F00CC449F08FF3A9A07FF389A07FF389A07FF389A07FF +389A07FF389A07FF389A07FF389A07FF389A07FF389A07FF389A07FF389A07 +FF389F3C00009F3D0000A03D0000A2400000A8430000AE460000B5490000BD +4B0000C64B0007CE450015D5390023CD270035BF10004FB3000D5CB3002357 +B9003B54C4005C52B6007A51A9009F4F9F00C947A109FF3B9B09FF389B09FF +389B09FF389B09FF389B09FF389B09FF389B09FF389B09FF389B09FF389B09 +FF389B09FF389B09FF389F3D0000A03D0000A03E0000A2400000A8440000AE +470000B54A0000BD4C0000C64D0006CF480013D73C0021D12B0033C215004C +B6020A5CB4002059B8003756C5005854B8007753AC009C50A000C549A30AFF +3C9D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0CFF399D0C +FF399D0CFF399D0CFF399D0CFF399D0CFF39A03E0000A03E0000A03F0000A3 +410000A8450000AE480000B54B0000BD4D0000C64E0005CF4B0012D9410020 +D52F0031C61A0048BB04075CB5001C5BB8003358C7005356BB007355AE0099 +53A100C14CA50BFF3E9F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0E +FF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF399F0EFF39A03E0000A0 +3F0000A0400000A3420000A8450000AD480000B44C0000BC4E0000C6500004 +D04E0010DA45001ED935002ECA200044C107045CB600185EB8002F5AC8004F +59BF006F57B2009655A300BE4FA80DFF40A111FF3AA111FF3AA111FF3AA111 +FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA111FF3AA1 +11FF3AA03F0000A0400000A1400000A3430000A8460000AD490000B44D0000 +BC500000C5520003D051000FDC4A001BDF3C002CD0260041C80B015CB90013 +61B8002A5DC600485BC4006A59B50092589D00BC559007F64D9114FF428E15 +FF428B16FF438B16FF438B16FF438B16FF438B16FF438B16FF438B16FF438B +16FF438B16FF438B16FF43A0400000A1410000A1410000A3440000A7470000 +AC4A0000B34E0000BB510000C4540002D054000DDD500019E2430029D72F00 +3DCA130057BC000D64B9002460B6003E62A8005E679500846A7500A2675D00 +D3665500FC635200FC645000FC655000FC655000FC655000FC655000FC6550 +00FC655000FC655000FC655000FC655000FC65A1410000A1420000A1420000 +A3450000A7480000AC4B0000B24F0000BA520000C3560001CF57000BDD5500 +16E54B0025DE390038CC1D0050B403046A8F0015727C002B77690042785D00 +637B4C008A783F00C9733A00FF6F3700FF703600FF703600FF703600FF7036 +00FF703600FF703600FF703600FF703600FF703600FF703600FF70A1420000 +A1430000A1440000A3460000A6490000AB4C0000B1500000B8530000C25700 +00CE5A0009DC5A0014E9530021E6430034B231004A8A1D0068590500814200 +1489330029882A00428A220064891A009C851700FF7F1500FF801300FF8013 +00FF801300FF801300FF801300FF801300FF801300FF801300FF801300FF80 +1300FF80A1440000A1440000A1450000A3470000A54A0000AA4D0000B05100 +00B7550000C1590000CC5D0006D95F0011DD5C001EBA55002F924500466D2F +005F441F0078150A009104071694010C2F90000F4F8E0017998B1725FF6E16 +26FF6D1628FF6C1628FF6C1628FF6C1628FF6C1628FF6C1628FF6C1628FF6C +1628FF6C1628FF6C1628FF6CA1450000A1450000A1460000A2480000A54B00 +00A94E0000AF520000B5560000BF5B0000CA600003C7650010B869001C9D64 +002C7E5700415E4700583A3700700F2401820024148A002C2F890033578500 +378D7C0537FB6B0639FF69073BFF69073BFF69073BFF69073BFF69073BFF69 +073BFF69073BFF69073BFF69073BFF69073BFF69A1460000A1460000A14700 +00A2490000A44C0000A84F0000AD530000B3570000BC5D0000B7640005AC6C +00119E70001C8A6F0029726C003B5460005232510068093D007D0042158000 +4D317E00535C780057966E0053F2650054FF630055FF630055FF630055FF63 +0055FF630055FF630055FF630055FF630055FF630055FF630055FF63A14700 +00A1470000A1480000A14A0000A44D0000A7500000AB540000B2590000A961 +0000A169000A987100118C7800197C7D0024697F0033517E004B2E6C005D08 +5B017500611774006A356F0073606B017798621985FF4B1883FF491884FF49 +1884FF491884FF491884FF491884FF491884FF491884FF491884FF491884FF +491884FF49A1480000A1480000A1490000A14B0000A34E0000A5510000AA55 +0000A05D000097650005906E00098978000E7F8100147189001D608E00284A +8D003A2B86004E077A0167007E18660089356100935B5B00948C5512A9FF42 +10A2FF4010A2FF4010A2FF4010A2FF4010A2FF4010A2FF4010A2FF4010A2FF +4010A2FF4010A2FF4010A2FF40A1490000A14A0000A14A0000A14C0000A24F +0000A4520000995900008F61000289690005847400077E7E0009748A000E69 +940014599B001F449E002D2B9E003F099701540097175700AA325200B3554B +00BF874412E1F43615D0FF3115D1FF3115D1FF3115D1FF3115D1FF3115D1FF +3115D1FF3115D1FF3115D1FF3115D1FF3115D1FF31A14A0000A14B0000A14B +0000A14D0000A1500000945600008A5D0001826500017D6E00027A79000273 +8500046A92000762A0000B54AA00163EB000232CBB003011C0004100C11148 +00E52E4500EA513E10FF902F06FFAF311CFEFF241CFEFE241CFEFE241CFEFE +241CFEFE241CFEFE241CFEFE241CFEFE241CFEFE241CFEFE241CFEFE24A14C +0000A14C0000A14C0000A14E000092530000865A00007D6100007768000073 +7300006E7F0000668C0000619B00005FAF000059C600043FCB00142BD9001F +1BF7002F04FF0D3A0CFF332D04FF492F13FF7E220AFF9C2502FFB02702FFB0 +2602FFB02602FFB02602FFB02602FFB02602FFB02602FFB02602FFB02602FF +B02602FFB026A14D0000A14D0000A14D000092510000845700007A5D000073 +6400006D6C000069770000628300005C910000589F000054B000004BC40006 +35CE001324E0002013FB002E01FF163415FF431E15FF621C10FF811D0AFF9F +1F00FFB12300FFB12300FFB12300FFB12300FFB12300FFB12300FFB12300FF +B12300FFB12300FFB12300FFB123A14E0000A14E0000935000008454000079 +590000705F000069660000656F0000607A00005A8700005594000051A20000 +4BB200003EC300092CD200141EE600200BFD032C00FF1E2D15FF4A1811FF67 +1914FF85130AFF9F1B00FFB12000FFB22000FFB22000FFB22000FFB22000FF +B22000FFB22000FFB22000FFB22000FFB22000FFB220A14E00009350000084 +520000795600006F5B000068610000626900005D730000587E0000538A0000 +4E97000049A4000043B4000135C6000925D7001418ED001F01FE082B00FF24 +2612FF4F1411FF6A131CFF8A0207FF9E1700FFB11C00FFB41C00FFB41C00FF +B41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C00FFB41C95 +4F0000845200007954000070570000665C0000606300005B6C000057760000 +528200004D8E0000479A000042A700003AB900012CCB00091EDC001411F100 +1F00FF14240AFF321813FF540D0CFF6B1218FF890006FF9B1300FFB11909FF +C51209FFC61209FFC61209FFC61209FFC61209FFC61209FFC61209FFC61209 +FFC61209FFC612845200007954000070560000675900005F5E00005A660000 +556F0000507A00004B86000046910000409D00003AAB000032BE000124D000 +0A18E2001408F4041E00FF1C1E0AFF37120DFF550D0CFF6D0B13FF870006FF +990E00FFAE1515FFE00415FFE00415FFE00415FFE00415FFE00415FFE00415 +FFE00415FFE00415FFE00415FFE004785400006F560000675700005F5A0000 +59610000546900004F7300004A7E0000458900003F95000039A1000032B000 +0029C400011DD4000B11E7001400F50A1D00FF201913FF44020EFF590505FF +6C0D0FFF850005FF970A03FFAB0E12FFDA0212FFDA0212FFDA0212FFDA0212 +FFDA0212FFDA0212FFDA0212FFDA0212FFDA0212FFDA026E56000066570000 +5F580000595C0000546400004F6D00004A780000448300003E8D0000389800 +0031A500002AB5000021C7000316D8000B08E9001500F8121700FF25140FFF +460008FF590605FF6D080BFF830007FF950504FFA6070AFFC3030AFFC3030A +FFC3030AFFC3030AFFC3030AFFC3030AFFC3030AFFC3030AFFC3030AFFC303 +655700005E590000595B0000545F00004E67000049710000447C00003E8600 +0037900000309C000029AA000022BA000019CA00040FDB000B02EC051400FA +181200FF290F0BFF460009FF5C0007FF6F0007FF810007FF920102FFA10603 +FFB20403FFB20403FFB20403FFB20403FFB20403FFB20403FFB20403FFB204 +03FFB20403FFB2045D590000575B0000535D00004F630000496B0000437600 +003D800000368A00002F94000028A0000021AE00001BBD000012CD000408DE +000C00EF0B0F00FB1E0D00FF2E0B07FF490005FF5D0004FF6E0004FF7E0004 +FF8F0002FF9E0302FFAB0202FFAB0202FFAB0202FFAB0202FFAB0202FFAB02 +02FFAB0202FFAB0202FFAB0202FFAB02> +<99300000993100009A3200009A330000A0360000A6390000AE3C0000B53D00 +00B9380009BC2D0017BA1F0027AE0E003DA5000A4CA8001E48AB003343B300 +4D41B7006A40AE00853EA400A0399F00C9339901FF2E9400FF2B9400FF2B94 +00FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B +9400FF2B9400FF2B993000009A3100009A3200009B330000A1370000A73A00 +00AE3C0000B53E0000B9390008BD2E0017BC200026AF0F003CA500084DA800 +1D49AB003244B3004C42B8006840AF00843EA4009F3A9F00C6349A01FF2E94 +00FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B9400FF2B +9400FF2B9400FF2B9400FF2B9400FF2B993100009A3200009A3200009B3300 +00A1380000A73A0000AF3D0000B63E0000BA3A0008BD2F0016BD220026B111 +003BA600074EA8001C4AAC003145B3004B43B8006741AF00833FA5009E3B9E +00C4359A01FF2F9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C +9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9A3100009A3200 +009B3300009B340000A1380000A83B0000AF3E0000B73F0000BB3C0007BE31 +0016BF230025B212003AA700054FA9001B4BAC002F46B3004944B9006642B0 +008240A5009D3C9E00C2369B01FF309400FF2D9400FF2D9400FF2D9400FF2D +9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF2D9400FF +2D9A3200009A3300009B3400009C350000A2390000A83C0000B03F0000B740 +0000BC3D0007BF320015C1250024B5140039A8000350A900194CAC002E47B3 +004745BA006443B1008142A5009C3E9E00BF379B01FE319400FF2E9400FF2E +9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF +2E9400FF2E9400FF2E9A3300009B3400009B3400009C350000A23A0000A93D +0000B03F0000B7410000BC3E0006C0340014C2270023B7170037A9000151A9 +00174EAD002C49B3004546BB006244B2008043A6009A3F9E00BC399C01FF32 +9400FF2F9400FF2F9400FF2F9400FF2F9400FF2F9400FF2F9400FF2F9400FF +2F9400FF2F9400FF2F9400FF2F9400FF2F9B3300009B3400009C3500009C36 +0000A33B0000A93E0000B0400000B7420000BD400006C1370013C4290022BA +190036AB030150AA00154FAD002A4AB3004248BC006046B3007E44A6009941 +9D00B93B9C01FF349400FF309400FF309400FF309400FF309400FF309400FF +309400FF309400FF309400FF309400FF309400FF309400FF309B3400009C35 +00009C3600009D370000A33C0000A93F0000B0410000B8430000BE420005C2 +390013C62C0021BE1C0034AF06004EAB001251AE00284CB3003F49BD005E47 +B5007B46A70097439D00B63C9E02FF359401FF319501FF319501FF319501FF +319501FF319501FF319501FF319501FF319501FF319501FF319501FF319501 +FF319C3500009C3600009D3700009D380000A33C0000A9400000B1420000B8 +440000BF440004C43C0012C82F0020C21F0032B30A004CAC000F53AE00254F +B3003C4BBE005B49B6007848A80096469E00B43F9F03FF379502FF329502FF +329502FF339502FF339502FF339502FF339502FF339502FF339502FF339502 +FF339502FF339502FF339C3700009D3800009D3800009E390000A33D0000AA +410000B1430000B9460000C0460003C53F0010CB33001FC6230030B80F0049 +AE010C55AF002251B200384DBE00564BB800754AAA0094499E00B241A104FF +389603FF349603FF349603FF349603FF349603FF349603FF349603FF349603 +FF349603FF349603FF349603FF349603FF349D3800009D3900009E3A00009E +3B0000A33E0000AA420000B1450000B9470000C0480002C642000FCD37001D +CA27002DBD140045B1020956B0001E54B3003450BF00524EBA00714CAC0090 +4BA000B044A305FF3A9704FF359704FF359704FF359704FF369704FF369704 +FF369704FF369704FF369704FF369704FF369704FF369704FF369E3900009E +3A00009F3B00009F3C0000A4400000AA430000B1460000B8480000C04A0002 +C846000DCF3C001BD02D002BC2190041B6040558B1001A57B4003052BF004D +51BC006C4FAE008D4EA100AD47A606FF3C9806FF379806FF37990AFF369A0D +FF369A0DFF369A0DFF369A0DFF369A0DFF369A0DFF369A0DFF369A0DFF369A +0DFF369E3B00009F3C00009F3D0000A03E0000A4410000AA440000B0470000 +B84A0000C04C0001C94A000CD1410019D5330029C81F003EBB060059B30015 +5AB4002B55BE004754C1006851AB0089549500AA518300D54E8813FF3D8614 +FF3E8415FF3E8315FF3E8315FF3E8315FF3E8315FF3E8315FF3E8315FF3E83 +15FF3E8315FF3E8315FF3E9F3D0000A03D0000A03E0000A03F0000A4420000 +AA450000B0480000B74B0000C04E0000C94D000AD3470017D83A0026CF2700 +39C00E0054B5000F5DB5002659A7003B5E9B0058638B007965720097635D00 +C1615A07FD575A09FF565809FF575709FF575709FF575709FF575709FF5757 +09FF575709FF575709FF575709FF575709FF57A03E0000A03F0000A03F0000 +A0400000A4430000AA470000B04A0000B74D0000BF500000C9510008D34C00 +14DC410023D62F0035C618004DA10303688500156E7500297363003E735700 +5A744B007D733F00AF6F3900FF6A3600FF6A3400FF6B3300FF6B3300FF6B33 +00FF6B3300FF6B3300FF6B3300FF6B3300FF6B3300FF6B3300FF6BA03F0000 +A0400000A1410000A1410000A4440000A9480000AF4B0000B64E0000BE5100 +00C8540006D4520012DF4A001FD43B0030A82D00477F1B00635304007D3E00 +13833000278227003E8320005B831B0085801700EC791400FF781100FF7912 +01FF781201FF781201FF781201FF781201FF781201FF781201FF781201FF78 +1201FF78A1410000A1410000A1420000A1430000A4460000A8490000AE4C00 +00B5500000BD530000C7570003D357000FCB55001CAD4E002D8A3F0041662C +005A3F1D00731409008B0407168E010B2C8A000D4887001479870419E8750E +1FFF6C0C20FF6B0C20FF6B0C20FF6B0C20FF6B0C20FF6B0C20FF6B0C20FF6B +0C20FF6B0C20FF6B0C20FF6BA1420000A1430000A1440000A1440000A44700 +00A74A0000AD4E0000B3510000BB550000C5590002BA5E000FAB61001C945B +002A7850003D584100543633006A0D21017D0022138300282B82002F4F7F00 +3480790033D46B0736FF630838FF620839FF620839FF620839FF620839FF62 +0839FF620839FF620839FF620839FF620839FF62A1440000A1440000A14500 +00A1450000A3480000A64C0000AB4F0000B1530000B8570000AC5E0006A264 +00119568001C826600286C6300394F57004D2E4A006207370077003D147A00 +472D78004E54740051836C0050D262004EFF5E0050FF5E0050FF5D0050FF5D +0050FF5D0050FF5D0050FF5D0050FF5D0050FF5D0050FF5D0050FF5DA14500 +00A1460000A1460000A1470000A3490000A54D0000AA500000AD550000A15C +00019863000A906A0011846F00197573002463740032486D00452962005906 +550170005B166F0063326B006B5967006E845F0977EA521076FE491077FE48 +1078FE471078FE471078FE471078FE471078FE471078FE471078FE471078FE +471078FE47A1470000A1470000A1480000A1480000A24B0000A44E0000A452 +000098590000906000058968000A8170000E77780014697E001D5982002942 +7F0038267A004B0571026400761962007F345E0088565700897F500193E648 +0791FF400691FF400591FF400591FF400591FF400591FF400591FF400591FF +400591FF400591FF400591FF40A1480000A1480000A1490000A1490000A24C +00009F50000092560000895D0002826400047C6D00067576000A6C80000E60 +890016518E00213D90002D2590003E058B0252008E1852009A314E00A25147 +00A97E4100B2C43C00A9FF3901AAFF3801AAFF3801AAFF3801AAFF3801AAFF +3801AAFF3801AAFF3801AAFF3801AAFF3801AAFF38A1490000A14A0000A14A +0000A14A00009C4E00008D540000835A00007C60000176680001717200026B +7D0004638900085994000E4A9B001A38A2002426A9003009A8014100AE1443 +00C02E3F00C84E3A05F6883300ECAA3107E8ED2A07E8EC2A07E9EC2A07E9EC +2A07E9EC2A07E9EC2A07E9EC2A07E9EC2A07E9EC2A07E9EC2A07E9EC2AA14B +0000A14B0000A14B00009C4C00008C52000080570000775D0000706400006B +6D000067780000608400005A92000155A0000349AC000D37B8001627C40020 +16D9002E00E60C370AFB312B08FF4B2812FF7F1E0AFF9D2100FFB12400FFB6 +2400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FFB62400FF +B62400FFB624A14C0000A14C00009D4D00008B5000007F550000755B00006C +61000066690000627300005C7F0000578C0000529900004EA8000047B90002 +36CA000D25DA001817F3002501FF112E09FF322214FF5B1713FF79150AFF96 +1A00FFAD1F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FFB21F00FF +B21F00FFB21F00FFB21F00FFB21FA14D00009E4E00008B5100007F53000074 +5800006A5D0000646400005F6C00005A77000055830000509000004B9C0000 +46AA00003CBC00042DCE000D1EE000180EF7012400FF192709FF371C0EFF5C +1615FF7D0A0BFF971300FFAD1B00FFB51B00FFB51B00FFB51B00FFB51B00FF +B51B00FFB51B00FFB51B00FFB51B00FFB51B00FFB51BA14E00008A5100007E +530000745500006A590000635F00005D66000058700000547B00004E870000 +49930000449F00003EAD000034C2000425D3000D18E6001806F9052300FF20 +2113FF470D0BFF5F1312FF7D070CFF960C00FFAE180DFFCE0D0EFFCF0D0EFF +CF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D0EFFCF0D8B +5100007D540000735500006B560000625B00005C610000576A000052740000 +4D7F0000488B0000429600003CA3000035B300002AC700041DD7000E11EB00 +1800F90F1F00FF251B12FF4C070CFF630B12FF7E000CFF940700FFAA1414FF +E00414FFE00414FFE00414FFE00414FFE00414FFE00414FFE00414FFE00414 +FFE00414FFE0047D540000725500006A560000635800005B5D000056640000 +516D00004C78000047840000418E00003B9A000034A700002DB9000022CB00 +0516DC000E06ED011A00FC17190CFF330B11FF500106FF620C0CFF7B020BFF +920302FFA50D12FFDA0113FFE60113FFE60113FFE60113FFE60113FFE60113 +FFE60113FFE60113FFE60113FFE6017155000068570000615800005C590000 +56600000506800004B720000467D0000408700003A920000339E00002CAC00 +0025BE00001ACE00060FE0000E02F0081600FE1D1409FF35080CFF500007FF +65040AFF7B000AFF900003FFA10807FFBC040FFFE5000FFFE5000FFFE5000F +FFE5000FFFE5000FFFE5000FFFE5000FFFE5000FFFE5006757000060580000 +5A5A0000565C0000506300004B6C00004677000040810000398B0000329500 +002BA2000024B100001DC1000013D1000708E4000F00F30F1200FF210F05FF +370708FF510007FF670006FF790006FF8C0002FF9D0503FFB00304FFBB0204 +FFBB0204FFBB0204FFBB0204FFBB0204FFBB0204FFBB0204FFBB0204FFBB02 +5E590000595B0000545D0000505F00004B670000457100003F7B0000398500 +00318E00002A99000023A600001CB4000016C400010CD4000700E6021000F6 +150D00FF260B03FF390505FF540003FF670003FF760003FF880002FF990201 +FFAA0201FFB40101FFB40101FFB40101FFB40101FFB40101FFB40101FFB401 +01FFB40101FFB401575B0000535E00004F6000004B630000456B00003F7500 +00397F0000318800002A920000239D00001CAA000015B700000FC6000206D7 +000800EA090B00F71B0900FF2A0601FF3C0102FF560001FF670000FF750001 +FF850001FF950000FFA50100FFAC0000FFAC0000FFAC0000FFAC0000FFAC00 +00FFAC0000FFAC0000FFAC0000FFAC00> +<96290000972A0000972B0000972C0000992D00009D2E0000A3300000A93100 +00AD2E0006B0240014AD170024A10700399F000E40A200213DA7003539AE00 +4D38B1006836AC008234A6009E30A400C62B9B00FA27A51EFF08A51EFF08A5 +1DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09A51DFF09 +A51DFF09A51DFF09962A0000972B0000972B0000972C0000992D00009E2F00 +00A4310000A9320000AD2F0005B1250014AE190024A30800389F000D41A200 +203EA700343AAE004C38B1006737AC008135A6009D31A400C42C9C00F928A3 +1BFF0CA31BFF0CA31BFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0CA31AFF0C +A31AFF0CA31AFF0CA31AFF0CA31AFF0C972A0000972B0000972C0000982C00 +00992E00009E300000A4320000AA330000AE300005B2270013B01A0023A40A +00379F000B42A2001F3FA700323BAE004B39B2006538AD008036A6009B32A4 +00C22D9C00F828A118FF0FA118FF10A117FF10A117FF10A117FF10A117FF10 +A117FF10A117FF10A117FF10A117FF10A117FF10A117FF10972B0000972C00 +00982C0000982D0000992E00009F310000A5330000AB340000AF310005B228 +0013B11C0022A60C00369F000A43A2001D40A700313CAE00493AB2006439AE +007F37A6009A33A300BF2E9C00F7299F14FF149F14FF149F14FF149F13FF14 +9F13FF149F13FF149F13FF149F13FF149F13FF149F13FF149F13FF149F13FF +14972B0000972C0000982D0000982E00009A2F00009F320000A5340000AC36 +0000B0330004B32A0012B31D0021A80E0035A0000845A3001C42A7002F3DAE +00473BB300623AAF007D38A6009834A300BC2F9D00F62A9C10FF189C10FF19 +9C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF199C0FFF +199C0FFF199C0FFF19972C0000982D0000982E0000982E00009A300000A033 +0000A6350000AD370000B1350003B52C0011B51F0020AB100033A0000546A3 +001A44A7002D3FAD00453DB400603BB0007C39A6009636A300B8309D00F42C +990BFF1D990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF +1E990AFF1E990AFF1E990AFF1E990AFF1E982D0000982E0000982F0000992F +00009A310000A0340000A7370000AE380000B3370003B62E0010B722001FAE +130032A2010447A4001745A8002B41AD00433EB5005E3DB1007A3BA7009438 +A200B5329D00F12D9605FF239605FF249604FF249604FF249604FF249604FF +249604FF249604FF249604FF249604FF249604FF249604FF24982E0000992F +000099300000993000009B320000A1350000A8380000AF3A0000B4390002B7 +31000FB924001EB2160030A4030346A5001548A8002943AD004040B6005C3E +B300783CA900923AA200B1349E00ED2E9400FF299400FF299400FF299400FF +299400FF299400FF299400FF299400FF299400FF299400FF299400FF299400 +FF29992F000099300000993100009A3200009C330000A2370000A93A0000B0 +3C0000B63C0001B934000EBC27001DB619002EA8060145A500124AA9002645 +AD003D42B7005940B400753EA900903CA100AD369F00EC309400FF2B9400FF +2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400FF2A9400 +FF2A9400FF2A9400FF2A993000009A3100009A3200009A3300009D350000A3 +390000AA3B0000B23E0000B83E0001BB37000DBF2B001BBA1C002CAC0A0143 +A7000E4DA9002348AD003944B7005543B6007240AB008E3FA100AA399F00E7 +329500FF2D9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400FF2C9400 +FF2C9400FF2C9400FF2C9400FF2C9400FF2C9A3200009A3300009B3300009B +3400009E360000A43B0000AB3E0000B3400000B9410000BD3B000BC12F001A +BF21002AB20F0040A9000A50AA001F4BAE003547B7005145B8006E43AC008B +42A200A63C9E00DD359600FF2F9400FF2E9400FF2E9400FF2E9400FF2E9400 +FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9400FF2E9B3300009B +3400009C3500009C3600009E380000A53C0000AB3F0000B3410000BA430000 +BF3F000AC3340018C5260028B814003DAB010553AB001B4FAF00314AB7004C +48BA006A46AE008745A200A33F9D00D4389502FF339002FF338D03FF348B04 +FF358B04FF358B04FF358B04FF358B04FF358B04FF358B04FF358B04FF358B +04FF359C3500009C3600009D3700009D3800009F3A0000A53E0000AC410000 +B4430000BB450000C1420008C6390016CA2B0025BE19003AAE010056AD0017 +52AF002C4DB700464BBC006549A300814F8E009B4D7D00B649800DFF3D7E11 +FF3A7C12FF3A7A13FF3A7A13FF3B7A13FF3B7A13FF3B7A13FF3B7A13FF3B7A +13FF3B7A13FF3B7A13FF3B9D3700009D3800009D3900009E3A0000A03C0000 +A63F0000AC430000B4450000BB470000C3460006C83E0014CE310023C52000 +35B50A0050AE001156A90025549A0038598F00515E81006E606F008B5E5E00 +AF5C5400EA586617FF426618FF42651AFF41641AFF42641AFF42641AFF4264 +1AFF42641AFF42641AFF42641AFF42641AFF429E3900009E3A00009F3B0000 +9F3C0000A13E0000A6410000AC440000B3470000BB4A0000C34A0004CA4400 +12D2390020CC280031BD13004A920403637A0014696E00276E5E003A6E5200 +536F4800726E3E009B6B3F09E95F491AFF4E461AFF4F4217FF514217FF5242 +17FF524217FF524217FF524217FF524217FF524217FF524217FF529F3B0000 +9F3C0000A03D0000A03E0000A13F0000A6430000AC460000B3490000BA4C00 +00C34D0003CC4B000FD541001DC235002D9E2900447518005E4E0301793A00 +127C2D00257B25003A7D1E00547D1A00767A1600BD761200FF721101FF7111 +03FF701103FF701103FF701103FF701103FF701103FF701103FF701103FF70 +1103FF70A03E0000A03E0000A03F0000A03F0000A1410000A6450000AB4800 +00B24B0000B94E0000C2500001CC4F000CBA4D001BA246002A833A003D5F29 +00563B1B006E1208008604061588000A2A84000D4381001169810016BC7802 +17FE6D0018FE6D0019FD6C0019FD6C0019FD6C0019FD6C0019FD6C0019FD6C +0019FD6C0019FD6C0019FD6CA03F0000A0400000A1410000A1410000A24300 +00A6460000AB490000B14C0000B8500000BC540001AE57000F9F58001B8C52 +002871490039533D004F322F00650C1F01780020127D0025287B002B487900 +3174750032B36A0834FE5C0935FF5B0A37FF5A0937FF5A0937FF5A0937FF5A +0937FF5A0937FF5A0937FF5A0937FF5A0937FF5AA1410000A1420000A14200 +00A1430000A2450000A5480000AA4B0000B04E0000AE530000A3590006985D +00118C5F001A7B5E0026665900364A5100492B44005D053200710039137300 +422A7200494D6F004C7668004DB75F004AFF58004BFF57004CFF57004CFF57 +004CFF57004CFF57004CFF57004CFF57004CFF57004CFF57004CFF57A14300 +00A1440000A1440000A1450000A2460000A4490000A84C0000A45100009958 +0001905D0009876200107C6700186E6A00225D6B003042640040255A005404 +4E016B0055166A005D2F67006453630067775C0066A853076CFC49076EFD47 +086FFE46086FFE46086FFE46086FFE46086FFE46086FFE46086FFE46086FFE +46086FFE46A1450000A1450000A1460000A1460000A1480000A34B00009C4F +000091560000895B0004816200097968000E706F00146375001D537800283C +7500362270004902690260006F185D00773259007F52540081754C0084AC47 +0187FF3D0188FF3C0188FF3C0188FF3C0188FF3C0188FF3C0188FF3C0188FF +3C0188FF3C0188FF3C0188FF3CA1470000A1470000A1470000A1480000A149 +0000984E00008C530000835900017B600003746700056E6F00096578000E5A +7F00174B8400213785002C1F85003D028103500086194D008F304900964D43 +009C733D00A2AA39009FFD35009DFF33009EFF33009EFF33009EFF33009EFF +33009EFF33009EFF33009EFF33009EFF33009EFF33A1480000A1490000A149 +0000A1490000964C0000885100007E570000755D00006F6400006A6C000164 +7600055C810009538A00104490001C339600241F9A00300399024000A1163E +00AC2D3A00B24B3500CD7C3200CCA62E09CAFF2706BEFF2706BFFF2706BFFF +2706BFFF2706BFFF2706BFFF2706BFFF2706BFFF2706BFFF2706BFFF27A14A +0000A14A0000A14B0000954C0000865000007B550000725A00006A60000065 +690000617300005B7E0000558A00024D950007409F001131A9001822B30022 +0EBE002E00C9103200DA282E00E0452A0BFC7C2206FF9C2100F6B72300F2D1 +2200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3D12200F3 +D12200F3D122A14B0000A14C0000944E0000855000007A5300007058000067 +5E0000616500005D6F0000587A0000538600004E93000048A1000042B10001 +35C4000725D5001218EB001D00FE072A00FF252412FF511210FF6F1115FF90 +0800FFA91A00FFB61B00FFB61B00FFB71B00FFB71B00FFB71B00FFB71B00FF +B71B00FFB71B00FFB71B00FFB71BA14D0000944F0000845200007954000070 +560000665B00005F6200005A6A000056750000518000004C8C000046980000 +40A5000039B600012CCA00071EDB001210F0001D00FF152209FF311710FF55 +0D0DFF700D14FF900201FFA91711FFD50912FFD70812FFD70812FFD70812FF +D70812FFD70812FFD70812FFD70812FFD70812FFD708954F00008353000077 +5400006E560000665800005E5D000059640000546E00004F7900004A840000 +459000003F9B000038A9000030BC000023CE000817E1001207F2041D00FE1C +1C10FF3E090EFF58090AFF700B11FF8D0000FFA41214FFDA0213FFE00313FF +E00313FFE00313FFE00313FFE00313FFE00313FFE00313FFE00313FFE00383 +530000765500006D560000655700005E59000058600000536800004E720000 +497D0000438800003D930000379F00002FAE000027C100011CD2000910E500 +1200F40A1B00FF211712FF44010BFF590606FF70090DFF8A0001FFA10D10FF +CC0013FFE80013FFE80013FFE80013FFE80013FFE80013FFE80013FFE80013 +FFE80013FFE800765500006B560000645800005D590000585C000053630000 +4D6C000048770000438200003C8C0000359700002EA4000027B400001FC500 +0214D6000907E8001400F7131400FF25120DFF450009FF5C0209FF720009FF +880002FF9C0704FFB2050DFFDF000DFFDF000DFFDF000DFFDF000DFFDF000D +FFDF000DFFDF000DFFDF000DFFDF006A560000625800005C590000575B0000 +535F00004D67000048710000427B00003C860000348F00002D9B000026A800 +001FB8000017C800030DD9000A00EA051300F9190F00FF2A0D09FF460006FF +5D0005FF700005FF840003FF990302FFAB0303FFB90203FFB90203FFB90203 +FFB90203FFB90203FFB90203FFB90203FFB90203FFB902615800005A5A0000 +555C0000515F00004D620000476B0000417600003B800000348900002D9300 +00259F00001FAC000018BB000010CB000306DC000B00EE0C0D00FC1E0B00FF +2E0805FF4B0003FF5F0002FF6F0002FF810002FF950101FFA60201FFB50001 +FFB50001FFB50001FFB50001FFB50001FFB50001FFB50001FFB50001FFB500 +595B0000545D0000506000004C62000047660000417000003B7A0000348300 +002C8C0000259700001EA3000017AF000011BD00000ACC000401DF020A00F0 +130800FE230700FF320301FF4B0000FF5F0000FF6F0000FF800001FF920000 +FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200535E00004E6100004A64000046670000416A00003B7400 +00347D00002C860000259000001E9A000017A5000010B100000BBF000003CD +000600E2090600F1190400FE280300FF350000FF4F0000FF630000FF720000 +FF810000FF910000FF9E0000FFAD0000FFAF0000FFAF0000FFAF0000FFAF00 +00FFAF0000FFAF0000FFAF0000FFAF00> +<9424000094240000942500009425000095260000972600009A2700009F2700 +00A3240004A71D0012A2110022980202339A0012349D002331A400362FAA00 +4D2EAB00652DA8007E2BA7009929A800C2259F00EE20A71EFF00A51DFF00A5 +1DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00A51DFF00 +A51DFF00A51DFF009424000094250000942500009426000095260000972700 +009B2700009F270000A3250003A81E0011A4120021980201349A0011359D00 +2232A4003530AA004B2FAC00642EA9007D2CA7009829A800C025A000ED21A8 +1FFF00A51EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00 +A61EFF00A61EFF00A61EFF00A61EFF00942500009425000094260000952600 +0095270000972800009B280000A0280000A3260003A81F0011A51300219903 +00339A000F369D002133A4003431AA004A30AC00632FA9007B2DA700972AA7 +00BE26A000EB22A820FF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00 +A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF0094250000942600 +00952600009527000095280000982800009C290000A0290000A4270003A921 +0010A71500209B0500329B000E389D002035A4003232AA004831AD006230AA +007A2EA700962BA700BC27A000EA23A921FF00A71FFF00A71FFF00A71FFF00 +A71FFF00A71FFF00A71FFF00A71FFF00A71FFF00A71FFF00A71FFF00A71FFF +009426000095260000952700009528000096280000982900009C2A0000A12A +0000A5280002AA22000FA917001F9E0700319B000C399E001E36A4003033AA +004732AD006031AB00792FA700942CA700B928A000E824AA22FF00A720FF00 +A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720FF +00A720FF00A720FF009526000095270000952800009628000096290000982A +00009C2B0000A22B0000A62A0002AB24000EAA19001DA00A00309B00093B9E +001C38A3002E35AA004533AE005E33AC007730A600922EA700B62AA000E625 +AB23FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF00A821FF +00A821FF00A821FF00A821FF00A821FF009527000095280000962900009629 +0000962A0000992B00009D2C0000A32D0000A72C0001AC26000DAC1B001CA3 +0D002E9C00073D9F001A3BA3002C37AA004235AF005C34AD007532A700902F +A700B32BA100E326AD24FF00A923FF00A923FF00A923FF00A923FF00A923FF +00A923FF00A923FF00A923FF00A923FF00A923FF00A923FF00962800009629 +0000962A0000972A0000972B00009A2C00009E2D0000A42F0000A92F0001AD +29000CAE1E001BA710002C9D02053D9F00173DA3002A39AA004037AF005A36 +AE007334A8008E31A600AF2DA100DF28AE26FF00AA24FF00A924FF00A924FF +00A924FF01A924FF01A924FF01A924FF01A924FF01A924FF01A924FF01A924 +FF0196290000962A0000972B0000972B0000972C00009A2D00009F2F0000A5 +310000AB320000AF2B000AB1210019AB13002B9F03033DA0001440A300273C +A9003D39B0005738B0007136A9008C33A500AB2FA100DC2AA91FFF0AA41CFF +0AA41CFF0AA41CFF0AA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41CFF0BA41C +FF0BA41CFF0BA41CFF0B972A0000972B0000972C0000982D0000982D00009B +2F0000A0310000A7330000AD340000B02E0009B4240018AE160029A206023D +A1001143A400243FA900393BB100533AB1006E38AA008935A500A631A200D8 +2CA416FF159F14FF149F14FF149F14FF149F13FF149F13FF149F13FF149F13 +FF149F13FF149F13FF149F13FF149F13FF14972C0000982C0000982D000098 +2E0000992F00009C310000A2340000A9360000AF370000B2320007B6280016 +B31A0026A60A003CA2000D46A5002142A900353EB0004F3CB4006B3BAC0086 +38A500A234A100D02E9C08FF23990BFF1E990AFF1E990AFF1E990AFF1E990A +FF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E990AFF1E982D000098 +2E0000992F000099300000993000009D330000A3360000AA380000B13A0000 +B5370006B82C0014B81F0024AC0E0039A3000849A6001D46AA003141B0004B +3FB600673DAE00833BA5009E379A00C2339203FC2F8A05FF2D8806FF2E8707 +FF2E8507FF2F8507FF2F8507FF2F8507FF2F8507FF2F8507FF2F8507FF2F85 +07FF2F992F000099300000993100009A3200009A3200009E350000A5390000 +AB3B0000B33D0000B83B0004BB310012BD240022B3140035A400034DA70018 +4AAA002D45B0004542AD0060459B00794988008F477900A8447301E742760E +FF36740EFF37720FFF37710FFF38710FFF38710FFF38710FFF38710FFF3871 +0FFF38710FFF38710FFF38993100009A3200009A3300009B3400009B340000 +A0380000A63B0000AD3E0000B5400000BB400002BE370010C12A001FBA1B00 +31AB070249A800124E9D0024509100355486004C587900655A6A007F595D00 +A0575400CB526216FF3C6017FF3D5E17FF3E5D17FF3E5D17FF3E5D17FF3E5D +17FF3E5D17FF3E5D17FF3E5D17FF3E5D17FF3E9B3300009B3400009C350000 +9C3600009D370000A13A0000A73E0000AE400000B6430000BD430002C13D00 +0EC631001CC221002DAB1200468503035E7200136466002568580036684D00 +4C69440069693C008B663700C262481CFF46441AFF483F17FF4C3C14FF4F3C +14FF4F3C14FF4F3C14FF4F3C14FF4F3C14FF4F3C14FF4F3C14FF4F9C360000 +9C3700009D3800009D3900009E390000A13C0000A7400000AF430000B64600 +00BE470001C443000CCA38001AB32F00299325003F6C160059480201743600 +12762B002375220036771C004F7719006B7416009B721201FF6B1102FF6A0F +03FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A0F04FF6A +0F04FF6A9D3800009E3900009E3A00009F3B00009F3C0000A23F0000A84200 +00AE450000B6480000BE4A0000BE49000AAC460019973F00267C3500385826 +00523719006911070080030614820009287F000C3F7B000F5F7A00149B7600 +15F2690016F2680017F2670018F3660018F3660018F3660018F3660018F366 +0018F3660018F3660018F3669F3B00009F3D0000A03D0000A03E0000A03E00 +00A3410000A8440000AE470000B54A0000B14E0001A350000E954F0019844B +00256B4300354E38004B2E2C00600A1D0173001E1277002326740028417200 +2E6A6F0031A0670832FD560933FF550934FF540935FF540935FF540935FF54 +0935FF540935FF540935FF540935FF540935FF54A03E0000A03F0000A03F00 +00A0400000A1410000A3430000A8460000AD490000A54E00009A5300069056 +000F845700197555002460510032464B004428400059042F006B0035126D00 +3E266B0045476A00486C64004BA15C0147F3520047FD500048FD500049FD50 +0049FD500049FD500049FD500049FD500049FD500049FD500049FD50A04000 +00A1410000A1420000A1420000A1430000A3450000A74800009C4D00009253 +000189580008805C000F755F0017686100215761002E3E5C003C2253005003 +4802650050156400582C61005E4D5F00616D590062954F0669FF440668FF42 +0569FF42056AFF41056AFF41056AFF41056AFF41056AFF41056AFF41056AFF +41056AFF41A1430000A1430000A1440000A1440000A1450000A3470000964C +00008B520000825700037A5C00077262000C696800135E6C001C4E6E002737 +6C00331D6700460162035C006918580070305400774D50007A6C49007C9342 +0082F63A0080FF380081FF370081FF370081FF370081FF370081FF370081FF +370081FF370081FF370081FF37A1450000A1450000A1460000A1460000A147 +0000924B0000865000007D560000745B00026D620004676900085F70000E55 +770016467A0021317C002B1A7B003B0079044C00801A4800872F43008C493F +0091693A009596360096E5310093FF2E0093FF2E0094FF2E0094FF2E0094FF +2E0094FF2E0094FF2E0094FF2E0094FF2E0094FF2EA1470000A1470000A148 +0000A14800008F4B0000834F00007954000070590000685F0000646700015E +700004577900094D8100113F87001A2D8B0023198E0030018F043D00981739 +00A02C3400A4473100AE6C2F00B89D2C00B0D72901A8FF2501A9FF2501A9FF +2501A9FF2501A9FF2501A9FF2501A9FF2501A9FF2501A9FF2501A9FF25A148 +0000A1490000A14900008D4C0000814F0000775200006D570000655C000060 +6400005B6D00005678000150830004478C00093A9400132C9D00191BA30024 +05AA012E00B7132D00C3282900C4422500DF6F2600E8912200DAB72201D0F4 +1F01D0F51F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1F71F01D1 +F71F01D1F71FA14A0000A14B00008C4E00007F500000755200006C55000063 +5A00005D610000586A0000547500004F810000498D0000439800013AA50005 +2EB5000A21C3001313D5001D00E50B2400F8232113FF4E0D0CFF691117FF8C +0000FFA61714FFE70914FFEA0915FFEB0815FFEB0815FFEB0815FFEB0815FF +EB0815FFEB0815FFEB0815FFEB08A14C00008B4F00007D520000735400006A +550000625900005B5F000056680000517200004C7E00004789000041950000 +3BA1000034B000002AC500031DD6000C10EA001600F80F1D03FF281712FF4E +0408FF650D10FF830000FF9D1114FFD30113FFE10313FFE10313FFE10313FF +E10313FFE10313FFE10313FFE10313FFE10313FFE1038B5100007C54000071 +55000068570000625800005B5C000055630000506C00004B77000046820000 +408D00003A98000033A500002BB7000021C9000415DB000D05EC011800FC17 +1709FF310C0FFF500005FF650A0CFF810002FF9B0B0EFFC20112FFE70012FF +E70012FFE70012FFE70012FFE70012FFE70012FFE70012FFE70012FFE7007B +5400007056000067570000605800005A5A0000555F0000506700004A710000 +457C00003F86000038910000319C00002AAA000023BB000019CC00050EDF00 +0D01EF081500FE1D1205FF330A0AFF510009FF690008FF7F0005FF970404FF +AE050AFFD4010AFFD3010AFFD3010AFFD3010AFFD3010AFFD3010AFFD3010A +FFD3010AFFD3016F560000655700005E590000585B0000545D00004F620000 +4A6B0000447600003E800000378A00003094000029A1000022AF00001BBF00 +0012CF000606E2000E00F20F1000FE220D03FF360806FF530005FF680004FF +7C0004FF940102FFA80302FFB80102FFB80102FFB80102FFB80102FFB80102 +FFB80102FFB80102FFB80102FFB801645700005C590000575B0000535E0000 +4F6000004A660000447000003E7A0000378400002F8D00002898000021A500 +001AB2000013C200010BD2000600E5030D00F5160B00FE270901FF390403FF +560002FF690001FF7A0002FF910001FFA30101FFB40001FFB40001FFB40001 +FFB40001FFB40001FFB40001FFB40001FFB40001FFB4005B5A0000555C0000 +515F00004D61000049640000436A00003D750000377E00002F870000289100 +00209C000019A8000013B500000DC3000104D4000700E70B0800F61C0600FF +2B0400FF3B0100FF570000FF6A0000FF7A0001FF8D0000FF9F0000FFB00000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +545D00004F6000004B63000046660000426900003D6F0000367900002F8200 +00288B000020950000199F000012AA00000CB6000006C3000300D6040500EA +120300F6210300FF2F0000FF410000FF5C0000FF6D0000FF7C0000FF8D0000 +FF9D0000FFAA0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2004E6100004964000044680000406A00003C6D0000377300 +002F7C000028850000208E00001998000012A100000BAB000005B7000200C4 +020300DA0A0100EA180000F7250000FF300000FF4A0000FF5F0000FF6D0000 +FF7C0000FF8B0000FF9C0000FFA50000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<921F0000931F00009320000093200000932100009421000096210000992000 +009C1E00029F1700109A0B001F9300052B970015299B002427A1003626A500 +4B26A6006225A4007924A6009322A800B71EA200E119A516FF01A015FF00A0 +15FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00 +A015FF00A015FF00931F000093200000932000009321000093210000942200 +0096210000992000009C1F00019F18000F9B0C001F9300042C9700142A9B00 +2328A1003527A5004A27A6006126A5007824A6009223A800B61FA200E01AA6 +17FF02A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00 +A015FF00A015FF00A015FF00A015FF00932000009320000093210000932100 +009322000094220000962200009A2100009D200001A019000E9C0E001E9300 +022D9700122B9B002229A1003428A6004928A7006027A5007725A6009123A8 +00B420A300DF1BA618FF02A116FF00A116FF00A116FF00A116FF00A116FF00 +A116FF00A116FF00A116FF00A116FF00A116FF00A116FF0093200000932100 +0093210000932200009322000094230000972200009A2200009D200001A11A +000D9E0F001D9401022D9700112C9B00212AA1003229A6004729A7005F28A6 +007626A6009024A800B321A300DD1CA719FF02A117FF00A117FF00A217FF00 +A217FF00A217FF00A217FF00A217FF00A217FF00A217FF00A217FF00A217FF +00932100009321000093220000942200009423000094230000972300009A22 +00009D210001A21C000CA011001C9603012C98000F2E9A00202CA100312AA6 +00462AA8005D29A7007427A6008E25A800B122A300DC1DA81AFF03A218FF00 +A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218FF +00A218FF00A218FF0093210000932200009423000094230000942400009424 +0000972400009A2300009E220001A31E000BA213001B9905012B98000D309B +001E2DA0002F2CA600442BA9005B2BA8007329A6008C27A800AF24A400DA1F +A91BFF04A319FF00A319FF00A319FF00A31AFF00A31AFF00A31AFF00A31AFF +00A31AFF00A31AFF00A31AFF00A31AFF009322000094230000942300009424 +00009424000094250000972500009B2500009F240000A420000AA31600199B +08012A98000B329B001C30A0002D2DA700412CA900592CA900712AA6008A28 +A800AC25A400D820AB1CFF04A41BFF00A41BFF00A41BFF00A41BFF00A41BFF +00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00A41BFF00942300009424 +000094240000942500009425000095260000982600009C260000A0260000A5 +220009A51800189E0B0029990108339B0019329F002A2FA7003F2EAA00572D +AA006F2CA700882AA800A927A500D622AC1DFF05A51CFF00A51CFF00A51CFF +00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51CFF00A51C +FF00942400009425000094250000942600009526000095270000982700009D +280000A1270000A5240007A81B0016A20E0027990105359B0017359F002831 +A7003C30AB00542FAB006D2EA800862BA700A528A500D324A917FE0DA61EFF +00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61EFF00A61E +FF00A61EFF00A61EFF00942500009426000095260000952700009528000096 +280000992900009D2A0000A22A0000A6260006AA1E0014A51100259A030336 +9C0013389F002535A6003932AC005131AD006A30A900842EA700A12AA600CF +26A30DFD18A720FF00A720FF00A720FF00A720FF00A720FF00A720FF00A720 +FF00A720FF00A720FF00A720FF00A720FF0095260000952700009528000096 +28000096290000962A00009A2A00009F2B0000A42C0000A8290004AC220013 +A91500239D0500379C000F3BA0002238A6003534AC004D34AE006732AA0081 +30A6009E2DA600C9289C01FB23A822FF00A822FF00A822FF00A822FF00A723 +FF00A723FF00A723FF00A723FF00A723FF00A723FF00A723FF009528000096 +28000096290000962A0000972A0000972B00009B2C0000A02E0000A62F0000 +AA2D0003AE260011AD190020A20A00349D000B3FA0001E3CA5003138AC0049 +36B0006335AC007E33A20097319600B42F8C00E42D8202FF298003FF2A7F04 +FF2B7D04FF2B7D04FF2C7D04FF2C7D04FF2C7D04FF2C7D04FF2C7D04FF2C7D +04FF2C96290000972A0000972B0000972C0000972C0000982D00009C2F0000 +A2310000A8330000AD320002B12A000EB11E001EA90F00319E000642A10019 +40A5002D3CAA00433AA000593F930070428300844176009D3E6D00C23D6C07 +FF356A08FF356A0AFF35690BFF35690CFF35690CFF35690CFF35690CFF3569 +0CFF35690CFF35690CFF35972B0000972C0000982D0000982E0000982E0000 +992F00009E320000A4350000AB370000B1370000B42F000CB624001BB01500 +2DA3050341A00013469100224B8800324E7E00465171005D53650075525B00 +93525300B34C5A12FF3B5D17FF365F1BFF32611FFF2F6220FF2E6220FF2E62 +20FF2E6220FF2E6220FF2E6220FF2E6220FF2E982D0000982E0000992F0000 +99300000993100009A3200009F350000A6380000AD3A0000B43B0000B73500 +0ABB2A0019B71C00299B1000407B0304576A00125E5F002361530033624900 +4764410063643A007F613500A55C481DFF3F4118FF433D15FF473912FF4A37 +11FF4C3711FF4C3711FF4C3711FF4C3711FF4C3711FF4C3711FF4C99300000 +993100009A3200009A3300009B3300009B340000A2390000A83C0000B03E00 +00B7400000BB3C0008B8320016A42B00258821003A641400544302016E3300 +11702800216F200033711A004A711800636E1600876C1101E7661003FF640F +04FF640E04FF640D05FF640D05FF640D05FF640D05FF640D05FF640D05FF64 +0D05FF649A3200009B3400009B3500009C3600009C3600009D370000A33C00 +00A93F0000B1410000B8430000AF430008A03F00168E390023753000345324 +004E341700640F07007A0305137C00092679000C3C75000E58730013877200 +15D2660016EC620017EC610018EC610018EC600018EC600018EC600018EC60 +0018EC600018EC600018EC609C3600009C3700009D3800009D3900009E3A00 +009E3B0000A43E0000AA420000B1450000A6490000994A000C8D4800177D44 +0022653D0032493500472B29005C091B016D001C11700021246E00253C6B00 +2B626A002F9064002ED958042EFE51032FFE510330FE510330FE510330FE51 +0330FE510330FE510330FE510330FE510330FE519E3900009E3A00009F3B00 +009F3C00009F3D0000A03E0000A4410000A84500009C4A0000924E00048850 +000E7D5000176E4E00215A4B002F42450040253B0054042C01660032126600 +3A24640041416400456460004990580046D04F0045F7490046F8490047F849 +0047F8490047F8490047F8490047F8490047F8490047F8490047F8499F3D00 +00A03E0000A03E0000A03F0000A0400000A1400000A0440000954A00008B4F +0000825300077956000E6F580015625A001F5159002A395500381E4D004C02 +42025F004B145E00532A5C005A485A005C6554005D874C005EBD440162FF3F +0162FF3E0163FF3E0163FF3D0163FF3D0163FF3D0163FF3D0163FF3D0163FF +3D0163FF3DA0400000A0400000A1410000A1420000A14200009B4300008F4A +0000854F00007C530002745700066C5C000B646100125965001B4966002532 +640031195F0043005B045600631852006B2E4E0070494B007365450075853E +007AC638007AFF33007BFF32007BFF32007BFF32007BFF32007BFF32007BFF +32007BFF32007BFF32007BFF32A1420000A1430000A1440000A14400009A46 +00008C490000814D0000775200006F570001675C0003616300075A6A000D50 +6F0016417200202C73002A1571003900710647007A1A4100802D3D0084453A +00896335008C8631008FC62E008CFF2A008CFF29008CFF29008CFF29008CFF +29008CFF29008CFF29008CFF29008CFF29008CFF29A1450000A1450000A146 +000099470000894A00007E4C0000745100006B550000645B00005E62000059 +6A000352720009497900113A7E001A278200231283002F0087063800901832 +00962B2F009A452C00A1642B00A9902900A5C327009BFF21009BFF21009BFF +20009CFF20009CFF20009CFF20009CFF20009CFF20009CFF20009CFF20A147 +0000A147000098490000874C00007B4E0000724F000069540000615900005B +60000057680000527200014B7D00054284000B358C00122692001A13970025 +009D032C00A9142800B2272500B4412200BF642200CB8B2000C5B32000BBFA +1C00B8FF1C00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9FF1B00B9 +FF1B00B9FF1BA1490000984B0000854E0000795000006F5100006852000060 +570000595E000055660000507000004B7B0000458700003D910003339B0008 +27A7000D19B100160ABE001F00CB101F00DB231D01F03A1C00EF601908F985 +0F00FBA81613FEF80A12F7FF0912F7FF0912F8FF0912F8FF0912F8FF0912F8 +FF0912F8FF0912F8FF0912F8FF09984C0000844F0000775200006D53000065 +5500005F560000585C0000536400004E6E0000497A0000438500003D910000 +369D00002EAC000027BF00011BD000080FE3001100F30A1900FF211510FF45 +0008FF5B0709FF760409FF94030AFFB70311FFE60011FFE60011FFE60011FF +E60011FFE60011FFE60011FFE60011FFE60011FFE60082510000755400006B +550000635700005C590000585B0000526200004D6B00004776000042800000 +3B8B0000349500002DA2000026B200001EC3000113D4000807E7001200F713 +1300FF26100BFF450009FF5E0007FF760008FF910004FFAA0408FFCC0108FF +CB0108FFCA0108FFCA0108FFCA0108FFCA0108FFCA0108FFCA0108FFCA0174 +55000069560000615800005A5A0000565C0000525E00004C66000047700000 +417A00003B850000338E00002C99000025A700001EB6000016C600020CD700 +0900E9051100F9190E00FF2B0B07FF480005FF600004FF740004FF8C0002FF +A40302FFB80102FFB80102FFB80102FFB80102FFB80102FFB80102FFB80102 +FFB80102FFB801685700005F580000595B0000545D0000505F00004C620000 +466A0000407500003A7F0000328800002B920000249E00001DAB000016B900 +000FC8000205DA000A00ED0C0B00FB1F0900FF2F0603FF4B0001FF600001FF +720001FF890001FFA00100FFB30000FFB30000FFB30000FFB30000FFB30000 +FFB30000FFB30000FFB30000FFB3005E590000575B0000525E00004E610000 +4A63000046660000406F000039790000328200002A8C0000239600001CA100 +0015AD00000FBB000008C9000301DC040800EF140600FC240500FF330101FF +4C0000FF620000FF740000FF870000FF9C0000FFAE0000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200565C0000515F0000 +4C62000047650000436800003F6B000039740000327D00002A860000238F00 +001C99000015A400000EAF000008BC000101CA000500E00B0300EF1A0200FD +290100FF350000FF540000FF690000FF760000FF880000FF9C0000FFA90000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4F6000004A63000045670000416A00003D6C0000396F0000327700002A8000 +00238900001C930000149C00000DA5000007AF000101BC010300CE050000E2 +100000EF1D0000FC2A0000FF370000FF550000FF690000FF740000FF850000 +FF9B0000FFA30000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20048650000436800003E6B00003A6E000036710000327300 +002B7A0000238300001C8C0000159500000D9D000008A6000002B0000300BC +010200CD050000E1100000EE1C0000FB290000FF350000FF530000FF670000 +FF720000FF830000FF960000FF9F0000FFAF0000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<901A0000901A0000911B0000911B0000911B0000911C0000931C0000951B00 +00971800019812000D9106001D90000922940017209800251E9D00351EA000 +4A1EA100601DA000751CA1008C1BA400AC18A100D0149F07F80A9B0CFF009B +0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF009B0CFF00 +9B0CFF009B0CFF00901A0000911B0000911B0000911B0000911C0000921C00 +00931C0000951B0000971900009813000C9307001C90000723940016219800 +241F9E00341EA100491FA1005F1EA100741DA2008B1CA500AB19A200CF149F +06F80C9C0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0DFF00 +9C0DFF009C0DFF009C0DFF009C0DFF00911B0000911B0000911C0000911C00 +00921C0000921D0000931D0000961C0000971A00009914000B9409001B9000 +062494001422980023209E00331FA1004720A2005E1FA100731EA2008A1DA5 +00A91AA200CE159F05F80D9C0EFF009C0EFF009C0EFF009C0EFF009C0EFF00 +9C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF00911B0000911C00 +00911C0000921D0000921D0000921E0000931E0000961D0000981B00009A15 +000A960A001A9100052594001323980022219E003120A2004621A3005C21A2 +00711FA200891EA600A81BA300CD169F05F80F9D0FFF009D0FFF009D0FFF00 +9D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF009D0FFF +00911C0000921C0000921D0000921D0000921E0000921E0000941E0000961D +0000981C00009B170009980C00199201042594001225980020239E003021A2 +004422A3005B22A2007020A300871FA600A61CA400CC189F04F8109D10FF00 +9D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF009D10FF +009D10FF009D10FF00921C0000921D0000921E0000921E0000921F0000931F +0000941F0000971E0000991D00009C1800089A0E0018930303259500102698 +001F249E002E23A2004223A4005923A3006F21A3008620A600A51EA400CB19 +9F03F7139E11FF009E11FF009E11FF009E11FF009E11FF009E11FF009E11FF +009E11FF009E11FF009E11FF009E11FF00921D0000921E0000921E0000931F +0000931F00009320000094200000971F0000991E00009D1A00079C11001695 +04022595000D2898001D269E002C24A3004025A5005725A4006D23A4008421 +A600A31FA500C91A9E01F6169F13FF009F13FF009F13FF009F13FF009F13FF +009F13FF009F13FF009F13FF009F13FF009F13FF009F13FF00921E0000931F +0000931F000093200000932000009321000094210000972000009A1F00009E +1C00069E1300159706012595000B2A98001A289D002A26A3003E26A6005426 +A5006B25A4008223A700A121A600C71C9E00F518A014FF00A014FF00A015FF +00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015FF00A015 +FF00931F000093200000932000009321000093210000932200009522000098 +2200009B2100009E1E0005A0160013990900249500082C9800182B9D002828 +A3003B28A6005128A6006926A5008025A7009E22A700C51E9F00F31AA116FF +00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116FF00A116 +FF00A116FF00A116FF00932000009321000093220000932200009423000094 +23000095230000982300009B2200009F200003A31900119D0C00229500052F +9900152D9D00252BA300382AA7004E2AA8006628A6007E27A7009B24A800C3 +209F00F01BA319FF00A218FF00A218FF00A218FF00A218FF00A218FF00A218 +FF00A218FF00A218FF00A218FF00A218FF0093220000932200009423000094 +230000942400009424000095240000982400009C240000A0230002A41C0010 +A010002096010131990011309C00222EA300352CA8004B2CA900632BA7007B +29A7009727A800C023A000ED1EA51BFF00A21CFF00A01DFF009F1EFF009E1F +FF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009E1FFF009423000094 +2300009424000094250000942500009426000096260000992600009D260000 +A1250001A620000DA514001D9A05012F99000D349C001F31A200312FA80047 +2EAB00602DA800782C9C008E2D9300AA2C8A00CF2A7D00FE277901FF267701 +FF277601FF287401FF287401FF287401FF287401FF287401FF287401FF2874 +01FF2894240000942500009425000095260000952700009527000097280000 +9A2900009F290000A3280001A824000BA819001BA00A002C9A0009389D001B +36A1002D329F003F34960054398B00683B7F007C3A730094396B00B3386500 +F3366607FF2F6407FF316307FF316107FF326107FF326107FF326107FF3261 +07FF326107FF326107FF329426000095270000952700009628000096290000 +96290000982A00009B2B0000A12C0000A52C0000AA280009AC1E0018A61000 +299D03053894001340880021457F0030487600414A6B00564C60006D4C5900 +884B5100A5464E03F3426D2AFF1E6D2CFF1D6C2CFF1D6C2DFF1D6C2DFF1D6C +2DFF1D6C2DFF1D6C2DFF1D6C2DFF1D6C2DFF1D952800009629000096290000 +972A0000972B0000972B0000992C00009D2E0000A3300000A9310000AD2D00 +06B0240015AA1700258F0E003A72030450630012575900215A4F00305C4500 +435E3E005D5F3800765C340096573506FE513F17FF3E3A14FF423611FF4532 +0EFF48320EFF49320EFF49320EFF49320EFF49320EFF49320EFF49972A0000 +972B0000972C0000982D0000982D0000982E00009A2F00009F320000A63500 +00AD360000B1340004A92D0013982600217F1E00355D11004E3E0102673000 +1069260020691E00316B1800466B16005D6916007A671200B7640E02FF5F0C +03FF5F0B03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F0A03FF5F +0A03FF5F982D0000982E0000982F0000992F0000993000009A3100009C3300 +00A2360000A8390000B03B0000A23D0006953900138633001F6E2C00304E22 +00493016005F0E0600740305127600092573000C396F000E526D0012796C00 +15B5640015E75C0016E75C0017E75B0018E75A0018E75A0018E75A0018E75A +0018E75A0018E75A0018E75A99300000993100009A3200009A3300009B3400 +009B3400009E370000A43B0000A73E00009C4400009144000985420015763E +00205F39002F453100432827005708190168001B116A002023670023386400 +295B64002D8360002EB757002BF74E002CF64E002DF64D002EF54D002EF54D +002EF54D002EF54D002EF54D002EF54D002EF54D9B3300009B3400009C3500 +009C3600009D3700009D3800009F3A00009E3F0000954600008B4A0002814A +000C764A00166848001F5445002C3D41003C2237004F03290160002F125F00 +37235E003D3D5D00415D5A004581540045B34B0043F2420044F3420044F241 +0045F2410045F2410045F2410045F2410045F2410045F2410045F2419D3700 +009D3800009E3A00009E3B00009F3C00009F3C0000984000008E460000854B +00007C4E00057350000D695200145C53001D4B520028344F00341B47004701 +3E035800461457004F28560056435300585F4F00597D48005AA640005CFC39 +005DFD38005EFD38005FFD37005FFD37005FFD37005FFD37005FFD37005FFD +37005FFD379F3C00009F3D0000A03E0000A03E0000A03F0000964200008946 +0000804B0000774F00016E5200056756000B5E5B0011535D0019435E00232D +5D002E1658003F0055054F005E184B00662D47006B4444006D5F3F006F7B3A +0072A7350074FF2E0075FF2D0075FF2D0076FF2D0076FF2D0076FF2D0076FF +2D0076FF2D0076FF2D0076FF2DA03F0000A0400000A1410000A14100009444 +0000864800007C4A0000734E00006A530000635800035C5D00065563000C4B +6700153C6A001F276B002811690037006B084100741A3A007A2C37007E4334 +00825E3100857B2D0088AE2B0086F9260085FF250085FF250086FF250086FF +240086FF240086FF240086FF240086FF240086FF24A1420000A1430000A144 +000092470000844A0000794B0000704D00006751000060570000595D000054 +6500034E6C00084472001035760019227900220D7A002E007F08330088192D +008E2B2A0091432800975E27009C8025009CB1240095F21E0093FF1D0094FF +1D0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1C0094FF1CA145 +0000A146000090490000814C0000764D00006D4E0000665000005E55000057 +5C0000536400004D6D0000477600053D7D000B2F8300121E88001B0C8C0025 +00940628009F162400A5272100A7401E00AE5D1E00B7811E00B7A81D00AEE3 +1A00A8FF1800A9FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9FF1700A9 +FF1700A9FF17A14800008F4B00007F4D0000734F00006A500000635200005D +540000565A0000516200004C6B00004676000040800001378900052C92000A +1F9A001010A2001901AD021F00BA121B00C5231900CF381700D1581500DC7B +1400E3A21307F1F61002D3FF1102D4FF1002D4FF1002D4FF1002D4FF1002D4 +FF1002D4FF1002D4FF1002D4FF108D4C00007D4F0000715100006753000060 +5400005A56000055590000506100004A6A0000457500003F800000388B0000 +3196000029A3000021B2000216C100080AD2001000E30B1400F51F1107FF38 +0709FF560108FF6F0006FF890204FFA7050BFFE4000AFFDE0009FFD90109FF +D80109FFD80109FFD80109FFD80109FFD80109FFD8017B5100006F53000065 +5500005D570000585A0000535C00004F610000496A0000447500003D7F0000 +368900002F930000289F000021AD00001ABD000011CD000406E0000D00F20F +0E00FE220C02FF360605FF550003FF6C0003FF830002FFA00302FFB70102FF +B70002FFB70002FFB70002FFB70002FFB70002FFB70002FFB70002FFB7006D +560000635800005B5A0000565C0000525E00004E61000049650000436F0000 +3D790000368300002E8C00002797000020A3000019B0000012BF00000ACF00 +0501E4040B00F4160900FF280701FF390202FF570000FF6C0001FF800001FF +9B0100FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200615800005A5A0000545D0000506000004B62000047650000 +436A00003C740000357D00002E860000269000001F9B000018A6000011B200 +000BC1000103D1000700E60C0600F51C0500FF2C0300FF3B0000FF5A0000FF +6E0000FF810000FF980000FFAD0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200585B0000535E00004E61000049640000 +45670000406A00003C6E0000357800002E810000268A00001F940000179E00 +0010A800000AB4000003C1000300D4050300E8120200F5220100FF2F0000FF +490000FF620000FF6F0000FF820000FF9B0000FFA80000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200515F00004C620000 +47660000426900003E6C00003A6E0000357200002D7B0000268400001F8D00 +001797000010A0000009A9000002B4000300C2030100D70A0000E8150000F5 +230000FF2F0000FF480000FF600000FF6E0000FF800000FF960000FFA30000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +4A630000456700003F6B00003B6E000036700000327200002D760000267E00 +001F87000017900000109800000BA0000006A9000101B4000300C2020100D6 +090000E8150000F5220000FF2F0000FF450000FF5E0000FF6D0000FF7D0000 +FF900000FF9F0000FFAE0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB200426900003D6C0000386F0000337200002F7400002B7600 +00267900001F8100001989000015900000109800000BA0000006A9000101B4 +000300C1020100D5090000E7140000F4210000FF2E0000FF420000FF5C0000 +FF6C0000FF7A0000FF8B0000FF9D0000FFA80000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8D1400008E1500008E1500008E1600008E1600008F1700008F170000911600 +0092130000920D00098B0201188D000B198F00171893002417970033169B00 +47169B005D159C0071159D0087139E00A1119D00C00D9A00E2099805FF0097 +04FF009705FF009705FF009705FF009705FF009705FF009705FF009705FF00 +9705FF009705FF008E1500008E1500008E1600008F1600008F1700008F1700 +008F1800009116000092140000920E00098D0401178D000A1A900016199300 +2317980032179B0046179C005C169C0070159D0086149F00A0129D00C00E9B +00E20A9906FF009805FF009805FF009805FF009805FF009805FF009805FF00 +9805FF009805FF009805FF009805FF008E1500008E1600008F1700008F1700 +008F1800008F180000901800009117000093150000931000088E0501178D00 +081B9000151A93002218980031189C0045189D005A179D006F169E008515A0 +009F139E00C00F9C00E30B9907FF009806FF009806FF009806FF009806FF00 +9806FF009806FF009806FF009806FF009806FF009806FF008E1600008F1700 +008F1700008F1800008F180000901900009019000092180000931600009411 +0007900600168D00071D9000141B9400211A990030199C0043199D0059199D +006E189E008317A0009E149F00BF109D00E30C9A08FF009907FF009907FF00 +9907FF009907FF009907FF009907FF009907FF009907FF009907FF009907FF +008F1700008F1800008F180000901800009019000090190000901A00009219 +00009417000095120006910800158E00061E9100131C9400201B99002E1A9D +00421A9E00581A9E006C199F008218A1009D16A000BE119D00E40D9B09FF00 +9A08FF009A08FF009A08FF009A08FF009A08FF009A08FF009A08FF009A08FF +009A08FF009A08FF008F180000901800009019000090190000901A0000901A +0000911A0000931A00009518000096140005930A00158E01041F9100111E94 +001E1C99002D1B9D00401C9F00561C9F006B1A9F008019A2009B17A100BD13 +9E00E30F9C0BFF009A09FF009A09FF009A09FF009A09FF009A09FF009A09FF +009A09FF009A09FF009A09FF009A09FF009019000090190000901A0000901A +0000911B0000911B0000911B0000931B00009519000097160004950C00138F +02032091000F2095001D1E9A002B1D9E003E1DA000541DA000691CA0007E1B +A2009919A200BB159F00E3119D0DFF009B0BFF009B0BFF009B0BFF009B0BFF +009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF009B0BFF0090190000901A +0000911B0000911B0000911B0000911C0000921C0000941C0000961A000098 +170003970F00129003012092000D2295001B209A00291E9F003C1FA100521F +A100671EA0007C1CA300971BA400BA169F00E3129F0FFF009B0CFF009B0DFF +009B0DFF009B0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0DFF009C0D +FF00911A0000911B0000911C0000911C0000921D0000921D0000921D000094 +1D0000971C000098190002991100109205002092000A24950019229A002720 +A0003920A2004F21A200651FA1007A1EA300941CA500B819A000E214A010FF +009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0EFF009C0E +FF009C0EFF009C0EFF00911C0000911C0000921D0000921D0000921E000092 +1E0000921F0000951E0000971D0000991B00019B14000E9608001E92000726 +960016249A002523A0003622A3004C23A3006222A2007820A400921EA600B6 +1BA100DF16A212FF019D10FF009E10FF009E10FF009E10FF009E11FF009E11 +FF009E11FF009E11FF009E11FF009E11FF00921D0000921D0000921E000092 +1F0000931F0000932000009320000095200000981F00009A1D00009D17000D +990C001C92000429960013279A002225A0003324A4004825A5005F24A40076 +22A4008F20A700B31DA000DB199E14FF069A17FF009819FF00971AFF00971A +FF00961BFF00961BFF00961BFF00961BFF00961BFF00961BFF00921E000093 +1F0000931F0000932000009321000093210000932100009621000098210000 +9B1F00009F1A000A9D10001A9503022896000F2A99001F28A0003027A50045 +27A6005C269E007027950085288F009F288700BE277A00E6238F24FF008E25 +FF008921FF05831BFF0C7E16FF117E16FF117E16FF117E16FF117E16FF117E +16FF1193200000932000009321000093220000932200009423000094230000 +96230000992200009C210000A11E0008A11400179907002897000B2E9A001C +2C9F002C2A96003C2E8D004F32830062347900753370008C336800A8326100 +D5315F03FF2C5E04FF2D5C05FF2E5C05FF2E5B06FF2E5B06FF2E5B06FF2E5B +06FF2E5B06FF2E5B06FF2E9321000093220000942300009423000094240000 +9424000094250000962500009A2500009D240000A2220006A51900159E0C00 +25980106318B0012388000203E77002D416F003C42650050455C0066465600 +7F454F009A414900BE3C6423FF1E6424FF1E6325FF1E6325FF1E6225FF1E62 +25FF1E6225FF1E6225FF1E6225FF1E6225FF1E942300009424000094240000 +94250000942600009526000095270000972700009B2800009F280000A32600 +03A81E00129C150022850C00356B0205485D00114F53001F534A002D554200 +3F573B00575935006F5632008A522F00B74E3D16FF383712FF3D330FFF412F +0CFF442D0AFF462D0AFF462D0AFF462D0AFF462D0AFF462D0AFF4694250000 +942600009526000095270000952800009628000096290000992A00009D2B00 +00A22C0000A62A00029C2800108D22001E761B0030561000493A01025F2D00 +0F6324001E641C002E6516004265140058631400716113009A600C01FD590A +02FD5A0902FD5A0802FD5A0702FD5A0702FD5A0702FD5A0702FD5A0702FD5A +0702FD5A952700009628000096290000962A0000972A0000972B0000972C00 +009A2D00009F2F0000A0320000973600038C3300117E2E001D6728002D491F +00442D14005A0D05006D0205116F0009236D000B3669000D4E6600116F6600 +149F600015E5560016E4550017E3550018E2540019E2540019E2540019E254 +0019E2540019E2540019E254972A0000972B0000972C0000982D0000982E00 +00982E0000992F00009C3100009A370000933E0000893F00077D3C00136F39 +001E5934002C402E003F2525005307180162001A1164001E22610021355E00 +26545E002B785B002EA252002AEC49002BEC48002CEC47002DEB47002DEB46 +002DEB46002DEB46002DEB46002DEB46002DEB46982D0000982E0000992F00 +00993000009A3100009A3200009B330000953A00008D410000844600017A45 +000B6F4400146142001E4D400029373C00371F34004A0327025A002C125800 +332356003A3957003F57540042764E00439F460041E03C0041EA3B0042EB3A +0042EB3A0043EB3A0043EB3A0043EB3A0043EB3A0043EB3A0043EB3A9A3100 +009A3200009B3400009B3500009C3600009C360000913D0000884200007F47 +0000764900046D4B000C634C0014564D001C454C00252F4900301842004301 +3A03510042144F004B274E0053404C00545A49005574430056973C0058DB33 +0059F7320059F731005AF831005AF831005AF831005AF831005AF831005AF8 +31005AF8319C3600009D3700009D3800009E3900009D3A00008F4000008443 +00007B470000724B0000694E00056151000A5955000F4E5700183E58002128 +56002B1251003C004F0648005A184400622C3F0066413C00685939006A7436 +006C97310070E42A006FFF29006FFF290070FF280070FF280070FF280070FF +280070FF280070FF280070FF289E3B00009F3C00009F3D00009D3E00008D43 +000081460000774700006E4A0000664E00005F53000258580005505D000B46 +6100143763001D226300260D6100350065093B006F1B3200742B310078402E +007C592B007F742900819B270081DD23007FFF21007FFF21007FFF210080FF +200080FF200080FF200080FF200080FF200080FF20A03F0000A04000009D41 +00008B4600007E490000744A00006B4A0000644E00005C5200005659000050 +600002496600073F6B0010306F00181D7100210871002D00790A2D00821928 +00872A26008A412400905A220094762100959F200091D71C008EFF19008EFF +19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19008EFF19A142 +00009C440000894800007B4B0000714C0000684D0000614E00005B52000054 +5800004F5F000049680000427000053876000B297B0012187F001B06830024 +008C092300961720009B271D009D3E1A00A3581A00A8761A00AD9D1900A7CD +1800A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0FF1300A0 +FF1300A0FF139C460000874A0000784D00006D4E0000654F00005E51000059 +520000535700004D5E000048670000427100003B7A0002318200062589000C +168F00140896001A00A1061B00AD141700B5231500BA371300BD531100C472 +1000CC960F00CBC51200BEFF0E00BEFF0E00BFFF0E00BFFF0E00BFFF0E00BF +FF0E00BFFF0E00BFFF0E00BFFF0E854D0000764F00006B500000625200005B +53000056560000525800004C5E000047670000417100003A7B000033840000 +2B8E00002399000219A400060DAE000D01BB021300CC0F1000D91F0D00E732 +0C00ED4C0900F06A0702F6880402FCAC060AFAFF0008F3FF0108F3FF0108F3 +FF0108F3FF0108F3FF0108F3FF0108F3FF0108F3FF01745100006853000060 +55000059570000545A00004F5D00004B6000004667000040710000397C0000 +328600002A900000239C00001CA9000015B600000EC6000204D8000900EC0C +0A00FB1F0800FF300502FF4D0000FF630000FF780001FF940000FFB00000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20066 +5500005D580000565B0000525E00004D61000049640000456700003F6E0000 +39780000318100002A8A0000229500001BA0000014AB00000EB8000007C700 +0300DA040700EE140500FB250400FF340000FF4F0000FF660000FF7A0000FF +930000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2005B5A0000555C0000506000004B6300004666000042690000 +3E6C000038730000317C000029850000228E00001A98000013A200000DAD00 +0006B9000200C7010400DF0C0200EE1A0100FC290000FF380000FF570000FF +6B0000FF7B0000FF930000FFA50000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200535D00004E6100004964000044680000 +3F6B00003B6E00003770000031760000297F0000228800001A910000139A00 +000CA3000004AD000200B9010300CA040000DF0E0000ED1B0000FB290000FF +350000FF550000FF6A0000FF790000FF8E0000FFA00000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2004C62000046660000 +416A00003C6D000038700000337200002F74000029790000228200001A8B00 +00139400000E9B000009A4000004AD000200B9010300C9040100DF0E0000ED +1B0000FA280000FF340000FF530000FF690000FF760000FF890000FF9E0000 +FFAF0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +446700003F6B0000396E000034710000307300002B75000027770000227C00 +001C840000188C0000139300000E9B00000AA3000004AD000200B8010300C8 +040100DE0D0000EC1A0000FA270000FF330000FF510000FF660000FF730000 +FF860000FF9C0000FFA90000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2003C6D000037700000317300002C75000028770000247800 +0023780000217C00001C840000188B0000139300000E9B00000AA3000004AC +000200B8010300C7040100DD0D0000EB190000F9260000FF320000FF4F0000 +FF640000FF710000FF820000FF990000FFA30000FFB20000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8A0F00008A0F00008A1000008B1000008B1100008B1100008C1100008C1100 +008D0F00008C0900068701021289000C118A0017108C0022109000300E9400 +430D9600580D96006C0C9800820B980098099700B0069500CC039501F60093 +01FF009301FF009301FF009301FF009301FF009301FF009301FF009301FF00 +9301FF009301FF008A0F00008B1000008B1000008B1100008C1100008C1200 +008C1200008D1200008E1000008D0A00058802021289000B128B0016118D00 +211091002F0F9500420F9600570E97006C0D9800810C9900970A9800B00796 +00CC049501F5009401FF009401FF009401FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF008B1000008B1100008B1100008C1200 +008C1200008C1200008D1300008D1300008E1000008D0C0005890301128900 +0A148B0015128D00211191002E10950041109700560F97006A0E9900800D9A +00970B9900B0099700CC059601F4029401FF009401FF009401FF009401FF00 +9401FF009401FF009401FF009401FF009401FF009401FF008B1100008C1100 +008C1200008C1200008D1300008D1300008D1400008E1400008F1100008E0D +00048A0401128A0009158C0014148E00201392002D11960040119800551098 +0069109A007F0F9B00960D9A00B00A9800CC069601F4039501FF009501FF00 +9501FF009501FF009501FF009501FF009501FF009501FF009501FF009501FF +008C1200008C1200008D1300008D1300008D1400008D1400008D1500008E15 +0000901200008F0F00038C0500118A0007168D0013158F001F1493002C1397 +003E1299005412990068119A007D109C00950E9B00B00B9900CD079700F304 +9502FF009502FF009502FF009502FF009602FF009602FF009602FF009602FF +009602FF009602FF008C1200008D1300008D1400008D1400008E1500008E15 +00008E1500008F15000090130000901000028D0700118A0006188D00111690 +001E1594002B1498003D149A0052149A0067139B007C129D0093109C00AF0D +9A00CD099800F4069603FF009603FF009603FF009603FF009603FF009603FF +009603FF009603FF009603FF009603FF008D1300008D1400008E1500008E15 +00008E1600008E1600008F1600008F17000091150000921200018F0900108B +0004198E00101890001C179400291598003B159B0050159B0065149C007A14 +9D0092129E00AE0F9C00CD0B9900F5079704FF009704FF009704FF009704FF +009704FF009704FF009704FF009704FF009704FF009704FF008E1500008E15 +00008E1600008E1600008F1700008F1700008F180000901800009216000093 +130000910B000E8B00021B8E000E1A91001A1995002817990039179C004E17 +9C0063169D0078159E0090149F00AD119D00CD0C9A00F5099805FF009805FF +009805FF009805FF009805FF009805FF009805FF009805FF009805FF009805 +FF008E1600008E1600008F1700008F1700008F180000901800009019000090 +1900009317000094150000930E000C8C02011C8F000C1C9100191B95002619 +9A0037199D004C199D0061189E0076179F008D16A000AB139E00CD0E9B00F6 +0B9907FF009907FF009907FF009907FF009907FF009907FF009907FF009907 +FF009907FF009907FF008F1700008F1800008F180000901900009019000090 +190000901A0000911A000093190000951700009510000B8F04001B8F00091E +9200171D9600241B9B00341B9E00491B9F005F1A9F007319A0008B18A200A9 +15A000CC119D04F5099A09FF009A09FF009A09FF009A09FF009A09FF00990A +FF00990AFF00990AFF00990AFF00990AFF0090180000901900009019000090 +1A0000911A0000911B0000911B0000921B0000941A00009619000097130009 +930800198F0006219300141F9600221E9C00311D9F00461DA0005C1DA00071 +1BA100881AA200A6189B00C7169000ED149213FF009114FF009015FF008F16 +FF008F17FF008E17FF008E17FF008E17FF008E17FF008E17FF00901A000091 +1A0000911B0000911B0000911C0000921C0000921D0000921D0000951C0000 +971A000099160007960C0016910204229300102296001F209C002E1FA00042 +209F00582095006A228D007D23890094248500B1237700D020881FFF008720 +FF018620FF018521FF018521FF018521FF018521FF018521FF018521FF0185 +21FF01911B0000911C0000921C0000921D0000921D0000921E0000921E0000 +931F0000951E0000981D00009B1900059A1000149304012394000D2597001C +24960029248E00382986004A2C7B005C2C72006E2D6C00842D65009D2D5E00 +C22C5A01FE285801FE295701FE2A5602FE2B5503FE2B5503FE2A5503FE2A55 +03FE2A5503FE2A5503FE2A921D0000921D0000921E0000921F0000931F0000 +93200000932000009420000096200000991F00009C1C00039E150011970800 +228F00072B8300123179001E3670002A396700383B5F004A3D57005F3E5200 +773E4D00903C4800AF375011FF294F11FF2A4E12FF2A4D12FF2A4C12FF2A4C +13FF2A4C13FF2A4C13FF2A4C13FF2A4C13FF2A921F0000931F000093200000 +9321000093210000932200009322000094220000972200009A2100009D2000 +01A119000E9212001E7A0A003064020541580010474E001D4B46002B4E3E00 +3B5037005152320068502F00814D2C00A249350EFD39320EFF3A2E0BFF3E2B +09FF412807FF432706FF442706FF442706FF442706FF442706FF4493210000 +93210000932200009422000094230000942400009424000094240000972400 +009B2400009A2400019223000D841F001B6E18002C510E0043360102582A00 +0E5C22001D5D1A002C5F14003F5F1100535D11006A5C11008A5A0A00EA5608 +00FA540600FB550500FB550400FB560300FC560300FC560300FC560300FC56 +0300FC56942300009423000094240000942500009425000094260000952600 +009527000099270000942B00008D2F0002842E000F762A001A6025002B451D +00402A1300550C0500660205106900092267000B3463000D4A600010685F00 +148F5B0015CC520015E14F0017E04E0017E04E0018DF4D0018DF4D0018DF4D +0018DF4D0018DF4D0018DF4D94250000942600009527000095270000962800 +009629000096290000972A00009030000089370000813A0006763700116834 +001D5230002A3B2A003A2322004E0616015D0018105D001D215A0020345800 +244E5700297054002C924D002BC744002AE642002BE741002CE740002CE740 +002CE740002CE740002CE740002CE740002CE7409628000096290000962A00 +00972B0000972B0000972C0000962E00008C330000853B00007E410000743F +000A693E00145B3D001D473B0026313800311C30004502250254002A125100 +31234F0038374F003C524E003F6E4800409040003FC138003FE935003FE934 +0040E9340040E9330041E9330041E9330041E9330041E9330041E933972C00 +00982D0000982E0000982E0000992F0000953200008B380000823E00007942 +0000704400046745000C5D4600135047001A3F4700212A44002B153D003E01 +37044B003E15470048274600503D430051554100526E3D00538C370053BB2F +0054F12C0055F22B0055F22B0056F22B0056F32B0056F32B0056F32B0056F3 +2B0056F32B99300000993100009A3200009B33000095370000893D00007F41 +0000754300006D460000654900045D4C0009544F000E485100153852001E25 +5000270F4B0038004A07410055183D005E2B3800623E350064553100656D30 +00678B2D0069BB270069FF25006AFF25006AFF24006AFF24006AFF24006AFF +24006AFF24006AFF24006AFF249B3500009C3600009D370000953C00008741 +00007C440000724500006A460000624A00005B4E0001545300044C58000941 +5B0012325C001A1E5C002309590032005F0A3400691B2D006F2A2C00733E29 +00775626007A6E25007B8C23007CBF1F0079FD1D0079FD1D007AFD1D007AFD +1C007AFE1C007AFE1C007AFE1C007AFE1C007AFE1C9E3A00009F3C00009440 +000085440000784600006E48000066490000604A0000594E0000525400004C +5B0000456100063A65000E2A6800161869001F0469002B00720C28007B1A23 +0080292200833F1F0089561E008D6F1D008E901C008DC01A0088FF150089FF +150089FF150089FF150089FF140089FF140089FF140089FF140089FF14A03F +00009443000082470000754900006B4A0000634B00005D4C0000584E000051 +5400004B5B0000456300003D6A0004326F000A247300121276001B017A0023 +00850B1F008E181B0093271900953C16009A5315009E6E1500A3911500A1BB +150099FA0F0099FF0F0099FF0F009AFF0E009AFF0E009AFF0E009AFF0E009A +FF0E009AFF0E93460000804A0000724B0000684C0000604E00005A50000054 +510000505300004A5B0000446300003D6B0000367400012B7A00071E80000D +0E840015038C01190097091700A2161300A8241000AB360E00AD4E0C00B26A +0C00BA8B0B00BCB20D00B1EA0A00AEFA0900AEFA0900AEFA0900AEFA0900AE +FA0900AEFA0900AEFA0900AEFA097E4C0000704D0000654F00005D51000057 +530000525500004D580000495B0000436300003C6C0000357500002E7E0000 +258600021C8F00050F97000C04A0001100AD070F00BA120B00C4200900CA31 +0700CA480400D3640300DA830300DEA10302EAF10102D3F90202D4F90102D4 +F90102D4F80102D4F80102D4F80102D4F80102D4F8016D500000635200005A +540000545700004F5A00004A5D000046600000426300003C6D000035770000 +2D800000268A00001E94000017A0000010AB000107B9000501C9020800DF0D +0500EF1D0400FC2D0100FF3F0000FF5E0000FF730000FF8B0000FFA70000FF +B20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20060 +55000058580000525B00004D5F000048630000436700003F6B00003C6D0000 +357700002D800000258900001E930000169C00000FA7000009B2000002BF00 +0300D2050200E7130100F5220000FF300000FF4C0000FF630000FF730000FF +8A0000FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200565C0000505F00004B63000046670000416A00003C6D0000 +386F0000347100002D7A0000258300001E8C0000169600000F9E000008A700 +0001B2000400BF020200D3080000E7130000F4220000FF2F0000FF480000FF +610000FF710000FF860000FF9E0000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2004F60000049640000436800003E6C0000 +396F000034710000307300002C750000257D00001E860000168F0000119700 +000C9E000007A7000101B2000400BF020200D2070000E6130000F3210000FF +2E0000FF450000FF5F0000FF6F0000FF830000FF9C0000FFB00000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB20047660000416A0000 +3B6D000036700000317300002C75000028770000257800001F7F00001B8700 +00168E0000119600000C9E000007A7000001B1000300BE020200D1070000E5 +120000F2200000FF2D0000FF420000FF5D0000FF6E0000FF800000FF9A0000 +FFA90000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +3E6B0000396F0000337200002D750000297600002478000023780000237800 +001F7F00001B870000168E0000119600000C9E000008A6000002B1000300BE +020200D0060000E4120000F11F0000FE2C0000FF3F0000FF5B0000FF6C0000 +FF7D0000FF930000FFA30000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB20036700000307300002A7600002578000023780000237800 +0023780000237800001F7F00001B870000168E0000119600000D9E000008A6 +000002B0000300BD020200CF060000E3110000F01E0000FD2B0000FF3B0000 +FF590000FF6B0000FF790000FF8D0000FF9E0000FFAF0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<8409000085090000850A0000860A0000860B0000870B0000870C0000870C00 +00870B0000850600038200040B84000C0A850016098600200989002D088E00 +3E05900052049000670491007C02920090019100A4019000BC009000E2008F +00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF00850A0000850A0000860B0000860B0000870C0000870C00 +00880C0000880D0000880B0000860700028300030C84000C0B8500150A8700 +200A89002C098F003D06900051059100660592007B0393008F029100A40190 +00BB009000E0008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00 +8F00FF008F00FF008F00FF008F00FF00850A0000860B0000870B0000870C00 +00880C0000880D0000890D0000890E0000890C0000870800028401020C8500 +0B0C8600140B87001F0B8A002B0A8F003C08910050069200650693007A0593 +008F039200A4029100BB019100DF009000FF009000FF009000FF009000FF00 +9000FF009000FF009000FF009000FF009000FF009000FF00860B0000870C00 +00880C0000880D0000890D0000890E0000890E00008A0E00008A0D00008909 +00018502010D8600090D8700130C88001E0C8B002A0B90003B0992004F0893 +0064079400790695008E059400A3039200BB019200DD009100FF009100FF00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +00870C0000880D0000880D0000890E0000890E00008A0F00008A0F00008A0F +00008B0E00008A0B00018602010D8600080F8800120E89001D0D8C00290C90 +003A0B93004E09940063099500780896008D069500A3049300BB029300DC00 +9100FF009100FF009100FF009100FF009100FF009100FF009100FF009100FF +009100FF009100FF00880D0000890E0000890E00008A0F00008A0F00008A10 +00008B1000008B1000008C0F00008B0C00008703000D870007108900110F8A +001C0F8D00280D9100380C94004D0B9500620A9600760A97008C089600A305 +9400BB039400DB019200FF009200FF009200FF009200FF009200FF009200FF +009200FF009200FF009200FF009200FF00890E00008A0F00008A0F00008B10 +00008B1000008B1100008B1100008C1100008D1000008D0E00008905000C87 +000512890010118B001B108E00270F9200370E95004B0D9600600C9700750C +98008B0A9800A2079600BB059500DC029301FF009301FF009301FF009301FF +009301FF009301FF009301FF009301FF009301FF009301FF008A0F00008B10 +00008B1000008B1100008C1100008C1200008C1200008D1300008D1200008E +0F00008C08000A870004148A000E138C0019128E002611930035109600490F +97005E0E9800730E9900890C9900A10A9800BC069600DC039401FF009401FF +009401FF009401FF009401FF009401FF009401FF009401FF009401FF009401 +FF008B1000008B1100008C1200008C1200008D1300008D1300008D1400008D +1400008E1300008F1100008E0A0009880102158B000C158D0018148F002412 +940033129700471198005C11990071109A00870F9B00A00C9900BC089700DD +059501FF009501FF009501FF009501FF009501FF009501FF009501FF009501 +FF009501FF009501FF008C1200008C1200008D1300008D1400008D1400008E +1500008E1500008E1500008F15000090120000900D00078B0301158B000A17 +8E0016169100221495003113990045139A005A139A006F129C0085119D009F +0E9B00BC0B9900DD079603FF009503FF009404FF009204FF009205FF009106 +FF009106FF009106FF009106FF009106FF008D1300008D1400008D1400008E +1500008E1600008E1600008F1600008F170000901600009214000092100005 +8D0500148C0008198F0014189100201796002F169A0042169B0058159B006C +149C00821499009A159300B5138B00D5118B0DFF028A10FF008911FF008811 +FF008712FF008612FF018612FF018612FF018612FF018612FF018E1500008E +1600008E1600008F1700008F1700008F1800008F1800009018000091180000 +9316000094130003910900138D01051C8F00111B92001E1997002C189B003F +189600531C8D00641D8500751E81008A1F7F00A41F7400C01C6C00F5177B15 +FF097915FF0A7815FF0B7715FF0B7615FF0C7615FF0C7615FF0C7615FF0C76 +15FF0C8F1700008F1700008F180000901800009019000090190000901A0000 +901A0000921A00009418000095150002940D00108D01011E90000E1E93001B +1C8D00261E850034237D004526730056256C00682667007C28610094285B00 +B3275600E9255300FA255200F9265101FA265001FA265002FA275002FA2750 +02FA275002FA275002FA27901800009019000090190000901A0000911A0000 +911B0000911B0000911C0000931C0000951A0000971800019711000E910500 +1E860007257C00112A72001C2E680027316000333459004336520059374E00 +6F384B0088364600A7324200EB32470BFF29470CFF29460DFF29460EFF2946 +0EFF28460FFF28460FFF28460FFF28460FFF28901A0000911B0000911B0000 +911C0000921C0000921D0000921D0000921E0000931E0000961D0000981B00 +009716000B8810001B7208002C5E0105395200103F49001B44410028463A00 +384934004C4B2F00624A2D0079482A0095442800D6422E0BFC362A08FB3A27 +06FA3D2404FA3F2203F9412203F9412203F9412203F9412203F941911C0000 +921D0000921D0000921E0000921E0000931F00009320000093200000942000 +00971F0000912000008920000B7B1C0019661600294C0C003C330102502800 +0E5520001C5718002A5912003B590F004F570E0065560F007F550900C35307 +00F24E0500F24F0400F24F0300F2500200F3500200F3500200F3500200F350 +0200F350921E0000931F000093200000932000009321000093210000932200 +0093220000942300008C260000852A00027C29000D6E26001959220028401B +003A2712004F0B04005F0105106200092161000B325C000D47590010635800 +1384540015B24D0015DC480016DB470017DB470018DA460018DB460018DB46 +0018DB460018DB460018DB4693210000932100009322000094230000942300 +00942400009424000090260000882B0000823100007A3400056F320011602F +001C4C2C002736270035202000480515015600171057001B2153001E325100 +2249510026674E00298545002AAF3F0029E03C002AE03B002AE13A002BE13A +002BE13A002BE13A002BE13A002BE13A002BE13A9423000094240000942500 +009425000095260000952700008F2A0000852F00007E350000773B00006D3A +000A623900145438001C413700232C33002C192C003F0223034D0028134A00 +2E23470035364800394D47003B6742003D8339003CAB33003CE72F003DE72E +003DE72E003EE72D003EE72D003EE72D003EE72D003EE72D003EE72D952600 +00952700009628000096290000962A00008E2E0000843500007B390000733D +00006B3F00036240000C574100124A4200183942001D273F00271339003901 +340544003B153F0044263E004C3A3B004D5039004E6736004F8232004FA92C +0050EA250051EB250051EC250051EC250052ED250052ED250052ED250052ED +250052ED25972A0000972B0000972C0000982D00008D330000833A0000783D +0000703F00006842000060440004584700074F4A000C434C0012334C001A21 +4A00240C4500330046083A0051193600592931005D3B2E0060512A0061672A +006282290064A8240063FF200064FF200064FF200065FF200065FF1F0065FF +1F0065FF1F0065FF1F0065FF1F982F0000993000009A3100008D380000813E +0000754100006C420000654400005E460000574A0000504F0002485300063D +56000E2D5600171A5600200653002E005A0C2E00641B2900692927006D3B24 +00725220007569200075831F0076A81C0074F3190074FE180075FE180075FE +180075FE180075FE180075FE180075FE180075FE189B3400009C3600008D3E +00007E4200007244000069450000614600005B480000554B00004F50000048 +560000405C0003355F000C266100141462001D01620128006C0D2300751A1F +0079281E007D3B1B0082521900876B18008785170088AC160085EB120084FF +100084FF100085FF100085FF100085FF100085FF100085FF100085FF109E3B +00008B4100007C4600006F470000664800005E490000584B0000534D00004E +50000047570000405E0000396400022D6800091F6C00110E6E00190073021F +007E0D1B00861917008B2715008E391200924F10009568100099850F009CAC +100096E00C0093FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094FF0A0094 +FF0A0094FF0A8A450000794800006C490000634B00005B4C0000554E000050 +5100004B530000465700003F5E000039660000316D0001267300061878000D +097C001500840317008F0C120098170F009E240C00A0350900A24A0700A663 +0700AC830500B0A20500A9CF0500A5FA0400A5F90400A5F90400A5F90400A5 +F90400A5F90400A5F90400A5F904764B0000694C0000604E00005850000052 +5200004D55000048580000445B00003F5F0000386700003070000029770000 +1F7F000313850009078C000E0095030F00A20B0A00AD150700B4210400B631 +0100B7450000C1600000C67F0000CA990000C8C60000BDF00000BDF10000BE +F10000BEF10000BEF10000BEF10000BEF10000BEF100674F00005D51000056 +530000505700004A5A0000455D0000416100003D6400003869000030710000 +297A000021830000198C000011950002069C000700A8020700B8080300C911 +0100D51F0000E52D0000FC3F0000F55B0000F7710000F88A0000FBA90000F2 +DB0000F3D90000F4D70000F4D50000F4D50000F4D50000F4D50000F4D5005B +540000535800004D5C000048600000436400003E680000396B0000356E0000 +30730000297D0000218700001A900000129900000BA2000005AB000200B701 +0300C7040100DD0D0000EC1A0000FA280000FF350000FF570000FF6C0000FF +7F0000FF9C0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB200515D00004B62000045670000406A00003B6E000036700000 +327300002D74000028780000218100001A8A0000149200000F9900000AA200 +0005AB000200B7000300C6040100DD0C0000EB190000FA270000FF340000FF +550000FF6B0000FF7C0000FF990000FFAE0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB20049640000436800003D6C0000386F0000 +337200002E7400002976000026780000227B00001D820000198A0000149100 +000F9900000BA1000005AB000100B6000300C5030100DB0C0000EB180000F9 +260000FF330000FF530000FF690000FF790000FF920000FFA70000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200416A00003B6E0000 +357100002F7400002A760000257800002378000023780000227B00001D8200 +0019890000149100000F9900000BA1000005AA000101B6000300C4030100DA +0B0000EA180000F8260000FF320000FF510000FF670000FF760000FF8C0000 +FFA10000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +386F0000327200002C75000026770000237800002378000023780000237800 +00227A00001E8200001989000015910000109900000BA1000005AA000101B5 +000300C4030100D90B0000E9170000F7250000FF310000FF4F0000FF650000 +FF730000FF870000FF9E0000FFB20000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002F74000028760000237800002378000023780000237800 +002378000023780000227A00001E8200001989000015910000109900000BA1 +000006AA000101B5000300C3030100D80A0000E9160000F6240000FF300000 +FF4C0000FF620000FF700000FF830000FF9B0000FFAA0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<7A0400007B0400007C0400007C0500007D0500007E0600007F0600007F0600 +00800700007D0400007C0005047E000C037F00150380001E03810029028600 +390089004C008A0061008B0075008C0088008B009B008A00B0008A00D0008A +00FF008900FF008900FF008A00FF008A00FF008A00FF008A00FF008A00FF00 +8A00FF008A00FF007B0400007C0500007D0500007E0600007F0600007F0600 +008007000081070000810800007E0400007D0004057F000C04800014048100 +1D0382002902870038008A004B008B0060008C0074008D0088008C009A008B +00B0008B00CF008B00FF008A00FF008A00FF008A00FF008A00FF008A00FF00 +8A00FF008A00FF008A00FF008A00FF007C0500007D0500007E0600007F0600 +008007000081070000810800008208000083080000800500007D0003068000 +0B058100130481001D0483002803880037018B004A018C005F018D0073018E +0087008D009A008C00AF008C00CE008C00FF008B00FF008B00FF008B00FF00 +8B00FF008B00FF008B00FF008B00FF008B00FF008B00FF007E0600007F0600 +00800700008107000082080000820800008308000084090000840900008206 +00007E00020781000A068200120682001C0584002704880036028C0049028D +005E018E0072018F0086008E0099008D00AF008D00CE008D00FF008C00FF00 +8C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF008C00FF +0080070000810700008208000082080000830900008409000084090000850A +0000850A0000830700007F000108810009088200120783001B068500260689 +0035048D0048028E005D028F007101900086008F0099008E00AE008E00CD00 +8E00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF +008D00FF008D00FF0082080000830800008309000084090000850A0000850A +0000860A0000860B0000860B00008508000081010009820008098300110884 +001A08860025078A0034058E0046038F005C03900070029100850090009800 +8F00AE008F00CC008F00FF008E00FF008E00FF008E00FF008E00FF008E00FF +008E00FF008E00FF008E00FF008E00FF008409000084090000850A0000850A +0000860B0000860B0000870C0000870C0000880C0000870A00008303000883 +00060B84000F0A85001909870024098B0033078F00450590005A0491006F03 +92008402920098019000AD019000CA009000FF008F00FF008F00FF008F00FF +008F00FF008F00FF008F00FF008F00FF008F00FF008F00FF00850A0000860A +0000860B0000870C0000870C0000880C0000880D0000890D0000890E000089 +0B0000860500078400050D85000E0C8600180B8800230A8C00310990004307 +9100590692006D0693008204930097039200AD029100C9009100FE009000FF +009000FF009000FF009000FF009000FF009000FF009000FF009000FF009000 +FF00860B0000870C0000880C0000880D0000890D0000890E0000890E00008A +0F00008A0F00008A0D0000880700058500030E86000C0E8800170D8900220C +8D002F0B910042099300570893006C0895008106950096059300AD039200C8 +019300FA009100FF009100FF009100FF009100FF009100FF009100FF009100 +FF009100FF009100FF00880D0000890D0000890E00008A0E00008A0F00008A +0F00008A1000008B1000008B1000008C0E00008A0A00048702020F87000A10 +8900150F8B00200E8E002E0D9200400C9400550B95006A0A96007F09970095 +079500AC059400C8019100F4008D00FF008B01FF008A02FF008902FF008903 +FF008803FF008803FF008803FF008803FF00890E00008A0F00008A0F00008B +1000008B1000008B1100008C1100008C1200008C1200008D1000008D0C0003 +89030110880008128A0013118C001E108F002C0F94003D0E9600530D960067 +0D93007A0E8E008E108A00A50F8400C00D7E00E70A810AFF00800BFF017F0B +FF027E0BFF027D0BFF037C0BFF037C0BFF037C0BFF037C0BFF038B1000008B +1000008B1100008C1200008C1200008C1300008D1300008D1300008D140000 +8F1200008F0F00018B06000F890006158B0011148D001D139100291293003A +128C004C1684005E187D006E197900821A7600981A6F00B2186800DC146B07 +FF0F6704FE116403FE126201FE136100FE146000FE146000FE146000FE1460 +00FE148C1200008C1200008D1300008D1300008D1400008D1400008E150000 +8E1500008E16000090140000901100008F0A000C890003188D000E178C0019 +178400231A7C002F1D74003F206C004F2065006120610075225D008B235700 +A7235300D1215000F6204E00F5214D00F6224C00F6234B00F6234B00F6234B +00F6234B00F6234B00F6238D1300008D1400008E1500008E1500008E160000 +8E1600008F1700008F1700008F1800009116000092140000920E000A8C0301 +187E000720740010246A001A286100232B59002D2D52003D2F4D0052314900 +68314700803144009E2E3F00C82D3F04FE2A3E05FE2A3D06FE2A3D06FE2A3D +07FE2A3C07FE2A3C07FE2A3C07FE2A3C07FE2A8E1600008E1600008F170000 +8F1700008F180000901800009019000090190000901A000092190000941700 +008E1400087F0E001769060027580105324D000F384300193C3B00253F3600 +34412F0047432B005C432900714127008B3F2400B43C2907F6342505F43722 +03F1392002F03B1E01EF3C1D00EE3E1D00EE3E1D00EE3E1D00EE3E8F180000 +901800009019000090190000901A0000911A0000911B0000911B0000911C00 +00931B00008A1D0000811D0009731900165E130025470B0036300102472500 +0D4D1D001A5016002852100038530C004A510B005F4F0B00774F0800AA5106 +00E8470400E7480300E6480200E6480201E5480202E4480202E4480202E448 +0202E448901A0000911A0000911B0000911C0000911C0000921D0000921D00 +00921E00008D1F0000852300007E2600017426000B66230018521F00243C18 +0035251000490A04005801050F5B0009205A000B3055000D435200105D5000 +137B4D0015A0460014D9410016D8400016D83F0017D93F0018D93E0018D93E +0018D93E0018D93E0018D93E921C0000921D0000921E0000921E0000921F00 +00931F0000932000008B230000822700007B2C0000732F0004682D0010592B +001A46280023322400301D1D00420413014F0016104F001A214C001D314A00 +2045490024604700277B3E00299F390028E1360028E2350029E2340029E234 +002AE233002AE233002AE233002AE233002AE233931F000093200000932000 +00932100009322000093220000882600007F2C000078300000703500006735 +00095C3400144E34001A3C32001F292F002817290039012103460026134200 +2B233F00313440003649400037603B00397A3300399C2E0039DE29003AE729 +003BE628003BE628003BE627003CE527003CE527003CE527003CE527932200 +0094230000942300009424000094250000872B00007E310000753500006D38 +0000653B00025C3B000B523C0011453D0015353D001A233A00231034003300 +30063D00381638004026360047383300494B30004A612E004B7A2C004B9B28 +004CD020004DE31F004DE51F004EE51F004EE61F004EE71E004EE71E004EE7 +1E004EE71E94250000942600009527000093280000862F00007C360000723A +00006A3C0000633D00005B400002534300064B4600093F48000F2F4700161D +4500200A40002F00430933004C192F0053282B00583828005C4D23005D6223 +005E7A24005E9922005FD71B0260FF190260FF190261FF190161FF190161FF +190161FF190161FF190161FF1996290000972A0000932D0000853500007A3B +00006F3E0000663F00005F4100005A420000534600004C4B0000444F000238 +51000B285100131750001E044D012A00550D29005E1A240063282300673820 +006C4D1B0070641B00707C1A007099180070D1140070FC130070FC130070FC +130071FC130071FC120071FC120071FC120071FC12982E000094320000853B +0000773F00006C410000634300005C44000056460000514700004B4C000044 +5200003C57000030590009215B0011105B001B005C022400660E1E006E1A1B +0073271A00773817007C4D140081661300827D1200829C110081CE0E0080FF +0C0080FF0B0080FF0B0081FF0B0081FF0B0081FF0B0081FF0B0081FF0B9537 +0000833F000074430000694400006046000059470000534900004E4B00004A +4E0000435300003C590000345F0000286200071A65000F0A670018006C051B +00770F16007F1A13008527100087360D008A4A0B008E620A00917B0900969C +0A0092C907008FFF05008FFF040090FF040090FF040090FF040090FF040090 +FF040090FF048243000072460000664700005D490000564B0000504D00004B +50000046520000425500003B5A0000336100002C670000216C00061370000D +04740014007D061300880F0E0090190A009625070098330400994601009C5E +0100A17A0100A7980000A3BE01009EFC01009EFC01009EFC00009EFC00009E +FC00009EFC00009EFC00009EFC0070490000634A00005A4C0000534F00004D +51000048550000435800003E5A00003A5D0000336300002B6A000024710000 +1A7700040D7C000A0183000F008D070B00980E0500A2170200A8230000AA31 +0000AB430000B15B0000B7780000BC930000BAB60000AEF50000AEF70000AE +F70000AEF70000AEF70000AEF70000AEF70000AEF700614D00005850000051 +5300004A560000455A0000405D00003B60000036630000326600002B6C0000 +247400001C7C000013840002088B000600920109009B050500A80A0200B411 +0000BF1B0000C6280000CA3A0000D3520000D86C0000DC870000E0A40000DA +F30000D1F60000D1F70000D2F70000D2F70000D2F70000D2F70000D2F70055 +5400004E580000485C0000426000003D64000038680000336B00002E6E0000 +2B700000247700001D80000017880000129100000D99000007A1000101AC00 +0400BB030200CE070000E3120000F2200000FF2E0000FF480000FF630000FF +740000FF8F0000FFAA0000FFB20000FFB20000FFB20000FFB20000FFB20000 +FFB20000FFB2004C5D000046620000406700003A6C0000357000002F740000 +2B7600002777000023780000207D00001C850000178D0000129500000D9C00 +0009A5000003AF000300BC010200CE050000E3110000F11F0000FF2D0000FF +440000FF600000FF710000FF8A0000FFA40000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200446800003D6C00003770000031730000 +2C75000027770000237800002378000023780000207D00001C850000178C00 +00129400000D9C000009A5000003AF000300BB010300CD050000E2100000F0 +1E0000FE2C0000FF410000FF5E0000FF6F0000FF860000FF9F0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2003B6E000034710000 +2E740000287700002378000023780000237800002378000023780000207D00 +001C850000178C0000139400000E9C000009A4000003AE000300BB010300CC +050000E1100000EF1D0000FD2B0000FF3D0000FF5C0000FF6E0000FF820000 +FF9C0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +317300002A7600002578000023780000237800002378000023780000237800 +0023780000207D00001C850000178C0000139400000E9C000009A4000003AE +000200BA010300CB050000E00F0000EE1C0000FC2A0000FF3A0000FF590000 +FF6C0000FF7E0000FF9A0000FFAC0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002777000023780000237800002378000023780000237800 +00237800002378000023780000207D00001C840000188C0000139400000E9B +000009A4000003AD000200B9010300CA040000DF0E0000ED1C0000FB290000 +FF360000FF560000FF6B0000FF7A0000FF920000FFA40000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<72000000720000007300000073000000740100007501000075010000760200 +0076020000760100007600050177000C007800140079001C007A0026007D00 +3400820045008200590083006C0085007F00850091008400A4008400BD0084 +00F1008300FF008300FF008300FF008300FF008300FF008300FF008300FF00 +8300FF008300FF007300000073000000740100007501000075010000760200 +00770200007702000078020000770200007700040178000B00790013007A00 +1B007B0026007E003300830045008300580084006C0086007F008600910085 +00A4008500BD008500F0008400FF008400FF008400FF008400FF008400FF00 +8400FF008400FF008400FF008400FF00740000007401000075010000760200 +00770200007702000078030000780300007903000078020000780004017A00 +0B007A0012007B001B007C0025007F003200840044008500580086006B0087 +007F00870091008600A4008600BD008600ED008500FF008500FF008500FF00 +8500FF008500FF008500FF008500FF008500FF008500FF0075010000760200 +0077020000770200007803000079030000790300007A0400007A0400007A03 +0000790003027B000A017C0012007C001A017D002401800031008500430086 +00570087006A0088007E00880091008700A4008700BD008800ED008600FF00 +8600FF008600FF008600FF008600FF008600FF008600FF008600FF008600FF +00770200007702000078030000790300007A0400007A0400007B0400007C04 +00007C0500007C040000790002037C0009027D0011017D0019017E00230181 +003000860041008700560088006A0089007E00890090008800A4008800BC00 +8900EC008700FF008700FF008700FF008700FF008700FF008800FF008800FF +008800FF008800FF0078030000790300007A0400007B0400007B0400007C05 +00007D0500007D0600007E0600007E0500007A0001047C0008037E0010027E +0018027F00220282002F018700400089005500890069008B007D008B009000 +8A00A3008900BC008A00EB008900FF008900FF008900FF008900FF008900FF +008900FF008900FF008900FF008900FF007A0400007B0400007C0500007D05 +00007D0600007E0600007F0600008007000080070000800600007C0201047D +0007057F000F04800018038100210383002E0188003F008A0053008B006800 +8C007C008C008F008B00A3008A00BC008B00E9008A00FF008A00FF008A00FF +008A00FF008A00FF008A00FF008A00FF008A00FF008A00FF007C0500007D05 +00007E0600007F060000800700008107000081080000820800008308000082 +0800007F0300037E00060680000E05810017058200200485002D038A003D01 +8C0052018C0067018D007B008E008F008D00A2008C00BB008D00E7008B00FF +008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00FF008B00 +FF007E0600007F070000800700008108000082080000830800008409000084 +090000850A000085090000810500017F00040882000C078200150683001F06 +86002B058B003C038D0050028E0065028F007A008F008E008E00A2008D00BA +008E00E3008D00FF008D00FF008D00FF008D00FF008D00FF008D00FF008D00 +FF008D00FF008D00FF00810700008208000083080000840900008509000085 +0A0000850A0000860B0000860B0000870B0000840700018101020A83000B09 +8400140885001E0887002A078C003A058F004E038F0063039000780191008D +009000A1008B00B6008800DC008500FF008300FF008200FF008100FF008000 +FF007F00FF007F00FF007F00FF007F00FF008409000085090000850A000086 +0B0000860B0000870C0000870C0000880C0000880D0000890C000087090001 +8301010B8400090B8500120B86001D0A890028098D00380790004C058F0060 +06890072098500840B8100970B7B00AE097700CD077906FF007706FF027606 +FF027506FF037406FF037306FF047306FF047306FF047306FF04860B000086 +0B0000870C0000880C0000880D0000890D0000890E0000890E00008A0F0000 +8A0E00008A0B00008603000B8500060E8700100D88001B0C8A00260B880034 +0D820044107B0056127500671471007A156D008E156800A6146400C8116200 +FE0E6000FE0F5F00FD0F5E00FD105D00FD105C00FC105C00FC105C00FC105C +00FC10880C0000880D0000890E0000890E00008A0F00008A0F00008A100000 +8B1000008B1000008C1000008C0E0000890700088600041188000E10830017 +127A00201572002B186B00371A6400471B5E005A1C5A006E1E5700841E5300 +9D1E4F00C01D4D00F21B4B00F21C4A00F21D4800F21E4800F21E4700F21F47 +00F21F4700F21F4700F21F8A0E00008A0F00008A1000008B1000008B110000 +8C1100008C1200008C1200008C1300008D1200008E1000008D0B0006830201 +147600071B6D000F1F620018225900212551002A274B00372947004B2B4400 +612C4100782B4000932A3C00B7293A01FA273902FB273803FB273703FC2837 +03FD283603FD283603FD283603FD283603FD288B1100008B1100008C120000 +8C1200008D1300008D1300008D1400008D1400008E1500008E150000901200 +0085120004760D0013610400235200052C47000E303E001835360023383000 +313B2B00423C2700563C25006A3B230082392100A3372100E9341F00EA351D +00E8351C00E6361B00E6361A00E5371A00E5371A00E5371A00E5378D130000 +8D1300008D1400008E1500008E1500008E1600008E1600008F1700008F1700 +008B180000821A0000791A00066B17001357110021420900302E01023F2200 +0C461B0019481400264B0E00354C0A00454B08005949080071480500954C05 +00D0420300D8400201D7400201D7400202D7400203D73F0203D63F0203D63F +0203D63F8E1500008E1600008F1700008F1700008F1800008F180000901900 +0090190000871C00007E200000772300006D2200095F2000154C1C00213816 +002F220F00410903005001040E5300091F52000B2E4E000D404A0010584700 +1372440015923F0014C73A0015D7390016D7380016D8380017D8370017D837 +0018D8370018D8370018D8378F1800009018000090190000901A0000911A00 +00911B0000911B0000851F00007C240000742800006C2B00036129000E5327 +00184125001F2E21002B1B1B003A041201480015104700192144001C304200 +1E42410021594000247237002792330028C8310027E02F0027E12E0028E22E +0028E22E0028E32D0029E32D0029E32D0029E32D911A0000911B0000911C00 +00921C0000921D00008F1E00008223000079280000712D00006A3000006130 +00085530001248300016382E001B272B0024152600330120033F0024133B00 +292338002E32370032443700335A330035712D003690290038C1250037E623 +0038E5230039E4220039E3220039E3210039E2210039E2210039E221921D00 +00921E0000921F0000931F00008C22000080280000772D00006E3100006734 +000060360001573700094C38000E41390011313900162136001F0E30002E00 +2D063600351632003C252F0042352C0044472900465C280047722700489024 +0049BA1C0049E21A004AE319004AE419004BE419004BE519004BE519004BE5 +19004BE5199321000093210000932200008B2500007F2D0000753200006C36 +0000643800005D3A0000573C00004F3F0002474200043B44000A2B4300121B +40001D083B002A003F0A2D00481929004D2626005236230057491E00595E1D +005A731F005A901E005BBC17005BF815005BF815005CF815005CF914005CF9 +14005DF914005DF914005DF91494240000942500008A2A00007E3200007237 +0000693A0000603C0000593E0000543F00004F41000048460000404B000034 +4C0007254C0010144A001B0248022600510E2300591A1F005D261E0061351B +00664916006B5F15006C7515006C8F14006CB910006BF80E006CF70E006CF7 +0D006CF70D006DF60D006DF60D006DF60D006DF60D962800008A2F00007D37 +0000703C0000663E00005D40000056410000514300004C450000474800003F +4D0000375200002C5400051D55000E0D5500190057041F00610F1A00681A16 +006D2616007035130075480F007A600D007C760C007D8F0B007DB709007CFD +06007DFD06007DFE05007DFE05007DFE05007DFE05007DFE05007DFE058B34 +00007C3D00006E3F0000634100005A430000534500004E470000494A000044 +4C00003F4F0000375400002F590000245D0005165F000D0660001600670716 +0071101100791B0D007E270A008134070084460500865C04008A7403008F90 +02008EB702008BFE01008BFF01008CFF00008CFF00008CFF00008CFF00008C +FF00008CFF00794100006B4300006045000058470000514900004B4C000046 +4F0000405100003C540000375600002E5C0000276100001C6600040F69000C +016D01120076080E0081110900891B04008E26010090320000924300009358 +0000977100009D8F00009CB1000096EE000096FF000096FF000096FF000096 +FF000096FF000096FF000096FF00694700005D480000554B00004E4E000048 +510000425400003D57000038590000335C00002E5E0000276400001F6B0000 +147000040874000A007B030B00850808008E0F0400961602009B2000009E2C +00009F3C0000A2520000A66C0000AD8A0000AEAB0000A5DC0000A3FB0000A3 +FB0000A3FB0000A3FB0000A3FB0000A3FB0000A3FB005B4C0000524F00004B +520000455600003F5A0000395D0000346000002F6200002B65000027670000 +1F6E000018750000117B0003098000070186000B0090050800990A0400A410 +0100AC190000B3250000B5340000B8490000C0630000C5820000C89D0000C3 +D30000B9F40000BAF40000BAF40000BAF40000BAF40000BAF40000BAF40050 +53000049580000425C00003C60000036640000316700002C6A0000276D0000 +236F0000227000001D770000197F0000148600000F8E000107940005019B01 +0700A8040400B7080100C7100000D41C0000E32A0000FB3A0000F9570000F9 +6F0000FA890000FEAC0000F8CD0000F9CB0000FAC90000FAC70000FBC70000 +FBC70000FBC700475D00004063000039680000336C00002D6F000028730000 +247500002377000023780000237900001F8000001A88000015900000109700 +000CA0000006A9000101B4000300C2030100D80A0000E9170000F8250000FF +330000FF540000FF6B0000FF7F0000FF9D0000FFB20000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB2003D6B000037700000307300002A760000 +2578000023780000237800002378000023780000237900001F8000001A8800 +00168F0000119700000C9F000007A8000101B3000300C1020100D6090000E9 +160000F7240000FF320000FF510000FF690000FF7B0000FF9A0000FFB20000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB200347100002D750000 +27770000237800002378000023780000237800002378000023780000237800 +001F8000001A870000168F0000119700000C9F000007A8000101B3000300C0 +020200D5090000E8150000F6230000FF310000FF4F0000FF670000FF770000 +FF930000FFAB0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +2A760000237800002378000023780000237800002378000023780000237800 +0023780000237800001F8000001A870000168F0000119700000C9F000007A8 +000101B2000300C0020200D4080000E7140000F5220000FF300000FF4C0000 +FF640000FF740000FF8C0000FFA30000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800001F7F00001B870000168F00001197 +00000C9E000007A7000101B2000400BF020200D2080000E6130000F4210000 +FF2F0000FF470000FF610000FF700000FF860000FF9E0000FFB20000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<6B0003006B0002006C0002006C0002006D0002006D0001006E0001006E0001 +006E0001006F0001007000050070000B007100130072001A00730024007400 +300078003E007A0051007C0063007D0075007E0087007D0099007C00AD007C +00CD007C00FB007C00FC007C00FC007C00FC007C00FC007C00FC007C00FC00 +7C00FC007C00FC006C0002006C0002006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100040071000B00720012007300 +1A007400230075002F0079003E007C0050007D0062007E0075007F0088007E +0099007E00AD007D00CD007E00FD007E00FD007E00FE007E00FE007E00FE00 +7E00FE007E00FE007E00FE007E00FE006D0002006D0001006E0001006E0001 +006F0001006F00010070000100700001007100010071000000720004007200 +0A0073001100740019007500220077002E007B003D007D0050007E00620080 +00750081008800800099007F00AD007F00CD007F00FF007F00FF007F00FF00 +7F00FF007F00FF007F00FF007F00FF007F00FF007F00FF006E0001006E0001 +006F0001007000010070000100710001007100000072000000720000007200 +0000730003007400090074001100750019007600220078002D007C003C007F +004F007F0062008100740082008800810099008000AD008000CE008000FF00 +8000FF008000FF008000FF008000FF008000FF008000FF008000FF008000FF +006F0001007000010070000100710001007200000072000000730000007300 +00007300000074000000740002007500090076001000770018007800210079 +002C007D003B0080004E00810061008200740083008800820099008100AD00 +8100CE008100FF008100FF008100FF008100FF008100FF008100FF008100FF +008100FF008100FF0071000100710000007200000072000000730000007400 +000074010000750100007501000076010000750001017600080077000F0078 +001700790020007A002B007F003A0081004D00820061008300740085008700 +840099008300AD008300CE008300FF008300FF008300FF008300FF008300FF +008300FF008300FF008300FF008300FF007200000073000000730000007401 +00007501000075010000760200007702000077020000780200007601010177 +00070179000E007A0016007A001F007C002A008000390083004C0084006000 +8500730086008700850099008400AD008500CE008400FF008400FF008400FF +008400FF008400FF008400FF008400FF008400FF008400FF00740000007501 +0000750100007602000077020000770200007803000079030000790300007A +04000078010101790006017A000D007B0015007C001E007D00290082003800 +85004B0085005F008700720088008600870098008600AD008600CE008600FF +008600FF008600FF008600FF008600FF008600FF008600FF008600FF008600 +FF0076020000770200007702000078030000790300007A0400007A0400007B +0400007B0400007C0500007A0300007A0004027C000C017D0014017D001D01 +7F002801830036008700490087005E008800720089008600890098008800AD +008800CD008700FF008700FF008600FF008500FF008400FF008400FF008300 +FF008300FF008300FF0078030000790300007A0400007B0400007B0400007C +0500007D0500007E0600007E0600007F0600007D0400007B0003047E000A03 +7E0013037F001C0280002602840035008900470089005C008A0071008B0085 +00870095008200A8007F00C4007C00FE007A00FF007800FF007800FF007700 +FF007700FF007600FF007600FF007600FF007B0400007C0400007D0500007D +0500007E0600007F0600008007000081070000810800008208000080060000 +7D0001067F0009058000110481001A0482002503860033018B004501850058 +02800069057C007B0677008D077300A1066F00B9046F01ED027002FF016E03 +FF016D03FF026D03FF026C03FF026B03FF036B03FF036B03FF037E0600007F +06000080070000810700008108000082080000830900008409000084090000 +850A0000840800007F020006800007088200100783001906830023067D002E +0878003D0B72004E0E6C005F0F690072116500861161009B105E00B80D5E00 +EE0A5E02FC095C02FB0A5A01FA0B5900F90C5800F90D5700F80D5700F80D57 +00F80D8107000082080000830800008409000085090000850A0000860A0000 +860B0000860B0000870C0000860A0000830500048200050A83000D0A7A0015 +0D71001E1069002713620032165C003F18570052195400671A51007C1B4F00 +931A4C00B1194A00E1174800EE174600ED184500ED194400ED1A4400ED1A43 +00ED1A4300ED1A4300ED1A84090000850A0000860A0000860B0000870C0000 +870C0000880D0000880D0000890D0000890E0000890C0000870800027B0201 +0F6F00061665000E1A5A00161D51001E214A00272444003326400045273E00 +5B273C0070273A0089263800A8243600DB243500F4243400F5243200F62532 +00F7253100F7253100F7263000F7263000F726870B0000870C0000880D0000 +890D0000890E00008A0E00008A0F00008A0F00008A1000008B100000881000 +007D1000016F0B00105A03001E4C00062542000E2A3800162F310021332B00 +2D3526003D3523005035210064351F0079331D0095321D00C32F1D00E02E1B +00DE2E1A00DD2F1900DD2F1800DC2F1700DC301700DC301700DC30890E0000 +8A0E00008A0F00008A1000008B1000008B1100008B1100008C1200008C1200 +00841500007B1700007118000363150010510F001D3D07002B2B0103382000 +0B3E19001741120024440C003245070040450500544305016A410301864102 +00B4400200D0380201D0380202D1370203D1370203D1370104D2370104D237 +0104D2378B1000008B1100008C1200008C1200008D1300008D1300008D1400 +008C14000081190000781C0000701F000066200007581D00124719001C3414 +0029200D00390803004901040E4C00081E49000B2D45000D3D420010523E00 +136A3B001587370015B2340014D4320015D4310016D4310016D4300017D430 +0017D5300017D5300017D5308D1300008D1400008D1400008E1500008E1600 +008E1600008A1800007E1C0000752100006D240000662700015B26000B4D24 +00143D22001B2B1E002619180033031101410014103F0018203C001B2F3900 +1D3F38001F53360022692F0025862C0028B42C0025E02A0026E1290026E229 +0026E3280027E3280027E4280027E4280027E4288E1600008F1700008F1700 +008F18000090180000871B00007B210000722500006A290000632C00005B2D +0005502C000E432C0012342B0017252800201323002D011E04380022133400 +272231002B312F002E412D0030542900326A27003386240036AE220034E91F +0035E71E0035E61E0036E61D0036E51D0036E51D0037E41C0037E41C901900 +00901A0000911A0000911B0000851F00007A250000702A0000672D00006030 +00005A32000152330005483400093D36000C2E3500121E32001B0D2C002900 +2B072F0032162B00382428003D3325003F43230042572100446C2000458620 +0046AA190046E2150047E3150048E3140048E3140048E4140049E4140049E4 +140049E414911C0000921D0000921D000084230000782900006D2E00006532 +00005D34000056360000513800004B3B0000433E000038400005283E000F18 +3B001906360026003C0B270044192300482520004D331D0051451900555917 +00566E180056861A0058AB130057F20F0058F30F0058F30E0059F30E0059F3 +0E0059F30E0059F30E0059F30E932000009320000082270000762F00006B33 +0000623600005A390000533B00004E3C0000493E0000434100003B45000030 +4800032147000D1145001701430222004D0E1E00531A1A00572518005C3216 +0061451200655A100067700F0068880E0068A90B0067E8080068ED070068EC +070068EA070068EA070068E9060068E9060068E90691240000822D00007534 +0000693800005F3B0000573D0000503F00004B41000046430000414500003B +480000324C0000284F00021A4F000C094F00160052051A005C101500631A11 +00672510006B330D006F440A00735A0800766F05007887040079A9030078DD +010079FA010079FB010079FC010079FC01007AFC00007AFD00007AFD008133 +000073390000673C00005C3F0000544100004E43000048450000434800003D +4A0000384C0000324F000029540000205700021258000B045A011300610811 +006B110C00731B0700792604007B3201007D4100007E550000816C00008586 +000087A7000085E3000084FF000084FF000084FF000084FF000084FF000084 +FF000084FF00703E0000644000005A420000524500004B480000454B00003F +4D000039500000345200002F53000029570000225B0000185F00030A62000A +0067030E006F090A00771106007F19030084230200862E0000883C00008950 +00008B6700009182000093A200008FD200008EFF00008EFF00008EFF00008E +FF00008EFF00008EFF00008EFF0061440000574600004F490000484D000042 +5000003B53000036550000305800002C5A0000275B0000225F00001A640000 +12690003096C00090070010D0078070A00810D070089150300901E01009329 +000095370000964A0000986100009E7D0000A39E00009DC5000099FF000099 +FF00009AFF00009AFF00009AFF00009AFF00009AFF00544B00004D4E000046 +5200003F55000038590000325C00002D5E0000286000002462000020640000 +1E6700001A6C0000147200010C760006037B000B0083030A008C090700950F +03009E170100A3220000A62F0000A6410000AC590000B1770000B8940000B4 +BD0000AAF80000AAF80000AAF80000AAF80000AAF80000AAF80000AAF8004A +530000435700003C5C0000355F00002F6300002966000024680000216A0000 +216B0000216C0000206F00001B750000177C00001082000208890006019000 +090098040600A4090300B00F0000BC190000C4260000C8370000CF4F0000D6 +6A0000DB870000DEA80000CFF40000CFF50000CFF50000D0F50000D0F60000 +D0F60000D0F600405E000039620000326700002C6B0000266E000022710000 +22720000227200002273000022740000217800001D7F000018880000139000 +000E9800000AA2000004AC000200B9010300CA040000E00F0000EF1D0000FE +2C0000FF420000FF600000FF730000FF910000FFB00000FFB20000FFB20000 +FFB20000FFB20000FFB20000FFB200366B00002F6F00002974000023770000 +237800002378000023780000237800002378000023780000217B00001D8300 +00188A0000149200000F9A00000AA3000004AC000200B8010300C9040100DF +0E0000EE1C0000FD2A0000FF3E0000FF5E0000FF700000FF8A0000FFA80000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002C75000026770000 +23780000237800002378000023780000237800002378000023780000237800 +00217B00001D830000198A0000149200000F9A00000AA2000004AC000200B8 +010300C8040100DE0E0000ED1B0000FC290000FF3A0000FF5B0000FF6E0000 +FF850000FFA00000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +002378000023780000227B00001D820000198A0000149200000F9A00000AA2 +000005AB000200B7010300C7040100DD0D0000EC1A0000FB280000FF360000 +FF580000FF6C0000FF810000FF9D0000FFB20000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +0023780000237800002378000023780000227B00001D820000198A00001492 +00000F9900000AA2000005AB000100B6000300C6030100DC0C0000EB190000 +FA270000FF340000FF550000FF6B0000FF7D0000FF9A0000FFB00000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<63000600630006006400060064000500650005006600050067000400670004 +0068000400680004006800040067000B0068001200690019006A0022006A00 +2C006C003900700048007400590076006A0077007C0077008D007600A00074 +00B9007400EA007400EA007400EA007400EA007400EA007400EA007400EA00 +7400EA007400EA006400050064000500650005006600050067000400670004 +00680004006900040069000400690003006A00040069000A00690011006A00 +18006B0021006C002C006E003800720048007500590077006A0078007C0078 +008E007700A0007500B8007500ED007500EE007500EE007500EE007500EE00 +7500EE007500EE007500EE007500EE00660005006600050067000400680004 +006800040069000400690003006A0003006A0003006A0003006B0003006A00 +0A006B0011006C0018006D0020006E002B006F003800730047007600590078 +006A007A007D007A008E007800A0007700B8007700F0007700F2007700F200 +7700F2007700F3007700F3007700F3007700F3007700F30068000400680004 +0069000400690003006A0003006A0003006A0003006B0003006B0002006C00 +02006C0003006C0009006D0010006E0017006F0020006F002A007100370075 +00470077005900790069007B007D007B008F007900A0007800B8007800F200 +7800F6007800F6007800F6007800F6007800F6007800F6007800F6007800F6 +0069000300690003006A0003006A0003006B0003006B0002006C0002006C00 +02006C0002006D0002006D0002006E0008006E000F006F00160071001F0071 +0029007300360076004600790059007A0069007D007D007D008F007B00A000 +7A00B9007A00F4007A00F8007A00F8007A00F8007A00F8007A00F8007A00F8 +007A00F8007A00F8006A0003006B0003006B0002006C0002006C0002006D00 +02006D0001006D0001006E0001006E0001006F0001006F00070070000E0071 +00160072001E007300280075003500790046007B0058007C0069007E007D00 +7E008F007C00A1007C00B9007C00F0007C00FB007C00FB007C00FB007C00FB +007C00FB007C00FB007C00FB007C00FB006C0002006C0002006D0002006D00 +01006E0001006E0001006F0001006F0001006F000100700001007000010071 +00060072000D007200150074001D0075002700770034007B0045007C005800 +7D0069007F007C0080008F007E00A1007E00BA007E00F5007E00FE007E00FE +007E00FE007E00FE007E00FE007E00FE007E00FE007E00FE006D0001006D00 +01006E0001006F0001006F0001007000010070000100710001007100000072 +000000720000007300050073000C007400140075001C007600260079003300 +7E0044007E0057007F00690081007C0081008F008000A1008000BA008100F5 +008000FF008000FF008000FF008000FF008000FF008000FF008000FF008000 +FF006F0001006F000100700001007100010071000000720000007200000073 +0000007300000074000000740100007400040075000B007600130077001B00 +780025007A0031007F004200800056008100680083007C0083008F008200A1 +008200BA008100F0007E00FF007C00FF007B00FF007B00FF007A00FF007900 +FF007900FE007900FE00710000007100000072000000730000007300000074 +00000074010000750100007601000076020000760200007600030177000A00 +7800110079001A007A0023007C00300081004000820055008300680081007A +007D008B0078009B007500B2007300D6007300FD007100FD007100FD007000 +FE007000FF006F00FF006F00FF006F00FF0073000000730000007401000075 +01000076010000760200007702000078020000780300007903000079030000 +77000202790009007A0010007B0018007C0022007E002E0080003E007B004E +0076006002720071046F0083046B0096036700AC026600CE016901FF006801 +FF006702FF006702FF006602FF006602FF006602FF006602FF007602000076 +020000770200007803000079030000790300007A0400007B0400007B040000 +7C0500007C0500007A0101027B0007027C000F017D0017017900200272002A +046C0036076700450A6300560C6000690E5E007E0F5B00920D5800AB0A5800 +D5085A02FB055801F9075600F8085400F7095400F7095300F60A5200F60A52 +00F60A79030000790300007A0400007B0400007C0400007C0500007D050000 +7E0600007F0600007F060000800700007D0300017C0005047A000C05710013 +0968001B0C6000241059002D135300391550004A164D005F174B0073174900 +89164700A5154600CB144500E9134300E9144200E8154100E8154000E71540 +00E7163F00E7163F00E7167C0500007C0500007D0500007E0600007F060000 +80070000810700008208000082080000830900008409000080060000730201 +0B670006125D000D155200151949001D1E420025223D003023390040243800 +54233600682234007F2233009A203200C11F3200EA1E3000E91F2F00E91F2E +00E8202D00E8202D00E7202C00E6202C00E620800700008007000081080000 +820800008309000084090000850A0000850A0000860A0000860B00007F0D00 +00750E0000670A000C5302001A470006203D000D243300152A2C001F2E2600 +2B2F2200392F1F004A2F1D005D2E1B00712E19008A2D1900AE2A1A00D82819 +00D6281700D5281600D5291500D5291500D5291400D4291400D42984090000 +84090000850A0000860B0000860B0000870C0000870C0000880C0000870D00 +007C110000741500006A1600015C13000C4B0D001938060026280103311D00 +0B371600163A1000223C09002E3E05003C3E03014E3C0302643902037D3801 +029E370201CF300202CF300203CE2F0104CE2F0104CE2F0105CE2F0105CE2F +0105CE2F870C0000870C0000880D0000880D0000890E0000890E00008A0F00 +00841100007915000070190000691C00005F1D0003521B000E421700183011 +00241E0B00310703004100040D4300081C40000B2B3C000D3A39000F4D3500 +12633100167B2E0016A12E0013CE2B0014CE2B0015CE2B0016CF2A0016CF2A +0017CF2A0017CF2A0017CF2A8A0E00008A0F00008A0F00008B1000008B1100 +008B11000082140000771900006D1D0000662100005F240000552300074822 +000F391F0017291B00211716002C0210013A0013103700171F33001A2D3000 +1C3C2E001E4E2B0020622600237C260026A1270023DA250024DB240024DC24 +0025DD230025DD230025DD230026DD230026DD238C1100008C1200008C1200 +008D1300008D14000080180000741D00006B220000632500005C280000562A +00004B2900093F29000D312700132225001C12200027011C04310020132D00 +25212900282F27002B3E24002D4F21002F641F00317C1F00349E1E0032DD1B +0032E31A0033E2190034E1190034E0190034DF180035DF180035DF188E1500 +008E1500008E1600008D1700007E1C00007222000068260000602A0000592C +0000522E00014D30000044310003393200082B31000E1C2E00170C28002300 +280728002F1625003523210039301E003C401C003F521A0041661900427E1A +00439D160044D1100044E10F0045E10F0045E20F0046E20F0046E20E0046E2 +0E0046E20E8F180000901800008C1A00007C21000070260000662B00005D2E +0000563000014F3300004A340000453600003E390000343C0001253A000B16 +3700150532002000390B210040181D0044241A00483117004D411400505412 +0052681100537F1300549E0F0055D5090055EE080055EF080055EF080056EF +080056EF080056EF070056EF07901C00008A1E00007B2500006E2B00006430 +00005A320001533500004D37000048390000423B00003E3D0000354000002C +4300011E4200090E400014003F031D00480E18004E19140052241200573010 +005B400D005F550A00636B070065820600669F050064C7020063EB020064EA +020064EA010064E9010065E9010065E9010065E9017D2800007A2A00006D30 +00006134000058370000503900004A3C0000443E00003F4000003942000034 +4300002C470000234A0001164A000807490013004E06140056100F005D1A0A +006124080066310600684005006B5304006E69010071800000729B000070C2 +00006FF100006FF100006FF1000070F1000070F1000070F1000070F1006E34 +00006B3600005F390000563C00004E3E000048400000414300003B46000035 +470000304900002C4A0000244E00001C5100010F5300080255020F005C090B +00631108006A1905006E230400702E0300723B0300744E0200776401007B7B +00007C9800007BC100007BFF00007BFF00007BFF00007BFF00007BFF00007B +FF00007BFF00603C00005D3D0000534000004C430000454600003E49000037 +4B0000314D00002C4F000028500000245200001C560000145900010B5B0008 +005D010E0064070C006B0E080073170500792003007C2B02007E3700007F48 +0000815E0000857700008894000087BE000085FF000085FF000086FF000086 +FF000086FF000086FF000086FF00534300005144000049480000424B00003A +4E0000345100002E5300002855000024570000205800001E5900001B5D0000 +166100010D6400060266000D006C050C00740B09007D130500841C03008826 +01008A3200008C4200008D580000917100009690000096B4000091FF000091 +FF000091FF000091FF000091FF000091FF000091FF00494C0000474D00003F +50000037540000305700002A590000255C0000205E00001F5F00001F5F0000 +206000001C64000017690000106D00040670000A0076020C007F080900880E +05009016020096200000992C00009A3B00009D510000A06B0000A78A0000A8 +AE00009FED00009FFD00009FFD00009FFD00009FFD00009FFD00009FFD003E +5500003C570000345A00002D5E000027610000226300002065000020650000 +2166000021670000216800001D6C000019720000137800020B7D0006028300 +0A008C04090095090500A00F0200A9180000AF230000B2320000B4470000BC +620000C2820000C5A00000BCDA0000B6F50000B6F50000B6F50000B6F50000 +B6F50000B6F50034600000326100002B65000024690000216B0000216C0000 +216D0000226E0000226F000022700000227000001F7600001A7D0000168500 +00118C00000A930003029A000700A5030500B5070200C50D0000D4190000E3 +270000F7370000FD540000FE6D0000FF880000FFAD0000FFBC0000FFBC0000 +FFBB0000FFBB0000FFBB0000FFBB002A6D0000286E00002272000022730000 +22740000237500002377000023780000237800002378000023780000207E00 +001B860000178D0000129500000D9D000008A6000002B1000300BE020200D2 +070000E7140000F5230000FF310000FF510000FF6A0000FF7F0000FF9E0000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002378000023780000 +23780000237800002378000023780000237800002378000023780000237800 +0023780000207E00001C850000178D0000129500000D9D000008A6000002B0 +000300BD020200D1070000E6130000F4220000FF300000FF4E0000FF680000 +FF7A0000FF9B0000FFB20000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +00237800002378000023780000207D00001C850000178D0000129500000D9D +000008A5000002B0000300BD010200CF060000E4120000F3200000FF2E0000 +FF4A0000FF640000FF760000FF940000FFB00000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +002378000023780000237800002378000023780000207D00001C850000178C +0000129400000D9C000009A5000003AF000300BC010200CE050000E3110000 +F11F0000FF2D0000FF450000FF610000FF720000FF8C0000FFA60000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<59000900590009005A0009005B0009005B0008005C0008005D0008005D0008 +005E0008005E0007005F0007005F000A005F0011005F001800600020006100 +2A0062003500650041006B0050006F0060007000700071008200700094006E +00AA006C00CA006D00DF006D00DF006D00DF006D00DF006D00DF006D00DF00 +6D00DF006D00DF005B0009005B0009005B0008005C0008005D0008005E0008 +005E0007005F0007005F000700600007006000070060000A00600011006100 +1800610020006200290063003400670041006C005000700060007100700072 +008200710094006F00AA006E00CA006E00DF006E00DF006E00DF006E00DF00 +6E00DF006E00DF006E00DF006E00DF005D0008005D0008005D0008005E0008 +005F0007005F00070060000700610007006100060062000600620006006200 +0900620010006200170063001F006400280065003300680040006E004F0071 +0060007200700073008200720094007000AA006F00CA006F00E0006F00E000 +6F00E0006F00E0006F00E0006F00E0006F00E0006F00E0005F0007005F0007 +005F0007006000070060000700610006006200060062000600630006006300 +0600640005006400080064000F006400160065001E0066002700660032006A +0040006F004F00720060007300710074008200730094007200AA007100C900 +7000E0007000E0007000E0007000E0007000E0007000E0007000E0007000E0 +00600007006000070061000700620006006200060063000600640005006400 +05006500050066000500660005006500080065000E006600150067001D0067 +002600680032006C003F0070004F0073006000750071007500820075009500 +7300AA007200C9007200E4007200E4007200E4007200E4007200E4007200E4 +007200E4007200E50063000600630006006300060064000500650005006500 +050066000500670004006700040068000400680004006700070067000D0068 +00140069001C006A0025006B0031006E003E0072004F007500600076007100 +76008300760095007500AA007400CA007400E9007400E9007400E9007400EA +007400EA007400EA007400EA007400EA006500050065000500650005006600 +05006700040068000400680004006900040069000300690003006A0003006A +0006006A000C006A0014006B001B006C0024006D00300070003D0074004E00 +760060007700710078008300780095007700AA007600CA007600EF007600EF +007600EF007600F0007600F0007600F0007600F0007600F000670004006700 +0400680004006800040069000300690003006A0003006A0003006B0003006B +0002006B0002006C0005006C000B006C0013006E001A006F0023006F002F00 +72003C0076004E0078005F00790071007A008300790095007800AA007800CB +007800F5007800F5007800F5007800F5007800F5007800F5007800F6007800 +F60069000300690003006A0003006A0003006B0003006B0002006C0002006C +0002006C0002006D0002006D0001006E0004006E000A006F00120070001900 +7100220072002D0075003B0078004D007A005F007B0071007C0084007B0096 +007900A9007600C9007400F1007200F0007100EF007100EE007000EE007000 +ED006F00ED006F00EE006B0002006B0002006B0002006C0002006C0002006D +0001006D0001006E0001006E0001006F0001006F0001007000030070000900 +71001000720018007300210074002C0077003A007A004C007A005E0077006E +0073007F00700090006C00A5006A00C1006B00F8006B00FD006A00FF006900 +FF006900FF006800FF006800FF006800FF006D0001006D0001006D0001006E +0001006F0001006F0001007000010070000100710001007100010071000000 +720002007300080073000F00740017007500200076002B00720037006E0045 +006B005600690067036600790363008C026000A2015F00C2006300FF006200 +FF006100FF006001FF005F01FF005F01FF005F01FF005E01FF006F0001006F +00010070000100700001007100010072000000720000007300000073000000 +7400000074010000740001007500070076000E007600160070001D00680026 +01610032045C003E075A004D095800600B5600740C5500880A53009F085200 +C2055501FB045300F9055100F7065000F6064F00F5074E00F4074E00F3074E +00F30772000000720000007200000073000000740000007401000075010000 +75010000760200007702000077020000760100007700050170000B02670012 +055E001A095600220D50002A114B003413480044144600571445006B144400 +8013430098114200B9104100E50E4000E40F3E00E3103D00E3103D00E2113C +00E2113C00E2113B00E1127501000075010000750100007602000077020000 +770200007803000079030000790300007A0400007A040000760400006A0201 +085F00060D55000C114A00131641001B1B3A00232035002E2133003C213100 +4E1F3000611E2F00761E2E008E1D2D00AE1B2E00DD192C00DC1A2B00DC1A2A +00DB1A2900DA1B2900DA1B2800DA1B2800D91B780300007803000079030000 +790300007A0400007B0400007C0500007D0500007D0500007E060000760900 +006D0C0000600900074D0200154200061B37000C202E00132627001C292200 +282A1D00362A1B0045291900572917006A291600802815009E251800CE2116 +00CE221500CE221400CE231300CD231200CD231200CD231200CD237C050000 +7C0500007C0500007D0600007E0600007F07000080070000810700007D0900 +00730D00006B1100006313000056110008460C0014340500212501032B1B00 +0A30140015330D00203507002C37030039370101493501035E320105742F00 +04912E0101C22A0103CA290103C9290104C9290105C9290105C8280005C828 +0006C828810700008107000081070000820800008309000084090000850A00 +007B0D0000701200006815000060190000591B00004C1900093E1400142D0F +001F1C0A002B0602003900040D3B00081B37000B2933000D3830000F492C00 +115D2900157226001691270014BD260014C8250014C8250015C8250016C825 +0016C8240016C8240016C824850A0000850A0000850A0000860B0000870B00 +00870C0000791100006E160000651A00005D1D0000562000004F210002431F +000A351C00132618001C16140026020F013200120F2F00161E2C00192B2800 +1B3925001C4A22001E5D1F0021731F002491200023C1210022D3200023D31F +0023D41F0024D41F0024D41E0024D41E0024D41E880D0000880D0000890D00 +00890E000085100000771500006C1A0000621E00005A210000532400004D26 +0000462600023B2600082E24000F20220017101D0021011A032A001F122600 +24202300262D1F00293B1C002B4C1A002D5F18002F7419003191190031BB17 +0030D6160031D5150031D4140032D4140032D4140032D4140033D4138B1000 +008B1000008B11000084140000751900006A1F000060230000582600005028 +00004A2A0000452B00003F2D0000352E0004282D000A1A2B00130B26001D00 +260722002D151E0032221B00362E1700393D15003C4E13003E6112003F7613 +004191110042BA0C0041DA0B0042DB0A0043DB0A0043DC090043DC090044DC +090044DC098D1400008D14000082170000731E0000672300005E270000552A +00004E2C0000482E0000423000003D310000373300002F3700002236000713 +340011042E001B00360B1A003C17160040221300452E1000493D0D004C4F0C +004E630A00507909005295070053BE030051EB020052EB020052EB020052EB +020053EB010053EB010053EB017A1F00007A1F000072230000662800005B2C +0000522F00014B310000453300003F3500003A360000343800002F3A000026 +3D00001B3E00050C3C000F003B031700440E110049180D004D220A00522E08 +00563D0600594F05005C6502005E7B0000609501005EB800005CED00005CED +00005CED00005CED00005CED00005CED00005CED006B2A00006B2A0000642D +0000593000015033000049360000433800003C3A0000363C0000303E00002C +3F0000274100001E440000134500050544000F0049070E0051100800551806 +00582105005B2C06005E3A0600614B050064610300677700006990000067B1 +000065E8000065E7000065E7000065E7000065E7000065E7000065E7005E33 +00015E330001573500004E380000473B0000403D0000393F0000324100002D +44000028450000244700001F480000174C00000D4D0005014C000E0051060D +00580E09005E160600621F05006529050068360500694705006D5C03007073 +0000728C000072AD000070F1000070F2000070F2000070F2000070F2000070 +F2000070F200523B0000523B00004D3D0000454000003D430000354500002F +48000029490000244B0000204D00001C4E00001B4F0000165200000F540004 +0455000C0059050D005F0C0A00671307006D1D040071270300733303007542 +0200775602007A6D00007E8700007EAA00007CF000007CFF00007CFF00007C +FF00007DFF00007DFF00007DFF004743000047430000424600003A49000032 +4B00002B4E000026500000215200001D5300001D5400001D5400001D550000 +18590000115C0003075E000A0061030E0068090B0070100700781904007E23 +0200802E0100823C000082500000856700008A8300008CA4000089E6000088 +FF000088FF000088FF000088FF000088FF000089FF003C4D00003C4D000037 +4F00002F51000028540000235600001E5800001E5900001E5A00001F5B0000 +1F5B00001E5C00001A610000146500020A680008016B010D0072060B007B0D +0700841504008A1E02008E2900008F3600009149000093600000987D00009D +A0000097CF000095FF000095FF000095FF000095FF000095FF000095FF0031 +560000315600002C580000265B00001F5E00001F5F00001F60000020600000 +206100002062000020630000206400001B690000166F00000E730005047700 +0A007E030B0088080700910F0400991701009F210000A22E0000A3400000A7 +580000AC770000B3960000ACC30000A6F90000A6F90000A6F90000A6F90000 +A7F90000A7F900276100002761000023630000206500002166000021670000 +2168000021690000216A0000216B0000216B0000216D00001D730000187A00 +00128000010A870005038E00080096030700A1080400AE0E0100B9170000C2 +240000C7340000CD4C0000D5690000DA870000DDAC0000CEF40000CEF50000 +CFF50000CFF50000CFF50000CFF500216C0000216C0000216D0000226E0000 +226F0000227000002272000022730000227400002275000023750000227700 +001E7F00001A87000015900000109800000BA1000005AA000101B6000300C5 +030100DD0C0000ED1A0000FC290000FF3D0000FF5F0000FF730000FF940000 +FFB20000FFB20000FFB20000FFB20000FFB20000FFB2002376000023760000 +23770000237800002378000023780000237800002378000023780000237800 +0023780000237900001E8100001A88000015900000109800000BA0000006A9 +000101B5000300C4030100DB0C0000EC190000FB280000FF380000FF5C0000 +FF6F0000FF8C0000FFAE0000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +00237800002378000023780000237900001E8000001A880000159000001098 +00000BA0000006A9000101B4000300C3030100DA0B0000EB180000F9270000 +FF350000FF580000FF6D0000FF860000FFA40000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +002378000023780000237800002378000023780000237900001F8000001A88 +0000158F0000119700000CA0000006A9000101B4000300C2030100D80A0000 +EA170000F8260000FF330000FF550000FF6B0000FF810000FF9E0000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<50000C0050000C0050000C0051000C0051000C0052000C0053000B0053000B +0054000B0054000B0055000B0055000B005400110054001800540020005600 +2800580031005C003B0061004800670056006A0066006B0077006A008A0068 +009F006600BD006900F2006900F2006900F2006900F2006900F2006900F100 +6900F1006900F10052000C0052000C0052000C0052000C0053000B0054000B +0054000B0055000B0056000A0056000A0057000A0057000A00560010005600 +170056001F0057002700590030005D003B0062004700680056006B0066006C +0077006B00890069009F006700BC006900ED006900ED006900ED006900ED00 +6900ED006900ED006900ED006900ED0054000B0054000B0054000B0054000B +0055000B0056000A0056000A0057000A0057000A0058000A00580009005900 +090058000F005800170058001E00590026005B0030005E003A006300470069 +0056006C0066006D0077006C0089006B009E006900BB006A00E8006A00E800 +6A00E8006A00E8006A00E8006A00E8006A00E8006A00E80055000A0055000A +0055000A0056000A0057000A0058000A0058000A0059000900590009005A00 +09005A0009005B0009005A000F005A0016005A001D005B0025005D002F005F +003A00650047006A0056006E0066006E0077006E008A006C009E006A00B900 +6B00E3006B00E3006B00E3006B00E3006B00E3006B00E3006B00E3006B00E2 +0058000A0058000A0058000A0058000A00590009005A0009005A0009005B00 +09005B0008005C0008005C0008005D0008005D000E005C0015005D001C005E +0025005F002E0061003A00660047006C0056006F0066006F0077006F008A00 +6D009E006C00B8006C00DF006C00DF006C00DF006C00DF006C00DF006C00DF +006C00DF006C00DF005A0009005A0009005A0009005A0009005B0009005C00 +08005C0008005D0008005E0008005E0008005F0007005F0007005F000D005F +0014005F001B006000230061002D0063003900680046006D00560070006700 +7100770071008A006F009E006D00B8006D00DF006D00DF006D00DF006D00DF +006D00DF006D00DF006D00DF006D00DF005C0008005C0008005C0008005D00 +08005D0008005E0008005F0007005F00070060000700600007006100070061 +00060061000C006100130062001A006300220063002C00650038006A004600 +6F005600710067007200780072008A0071009E006F00B8006F00E0006F00E0 +006F00E0006F00E0006F00E0006F00E0006F00E0006F00E0005E0007005E00 +07005E0007005F000700600007006100070061000600620006006200060063 +000600640006006400050063000B0063001200640019006500210066002B00 +670037006C00460070005600730067007300780074008A0073009D007100B7 +007000E0007000E0007000E0007000E0006F00E0006E00E0006E00DF006E00 +DF006100070061000700610007006200060063000600630006006400050065 +0005006500050066000500660005006700040066000A006600100067001800 +6700200068002A006A0036006E00450072005600740067007600780073008A +006F009C006C00B5006C00F2006B00F5006A00F7006A00F9006900F9006900 +F9006800F9006800FB00640005006400050064000500650005006500050066 +00050067000400680004006800040069000400690004006900030068000900 +69000F00690017006A001F006B0029006C003500700044006F0053006D0063 +006B0074006700860064009A006200B6006500FF006300FF006200FF006200 +FF006100FF006100FF006000FF006000FF0067000400670004006700040068 +0004006800040069000400690003006A0003006A0003006B0003006B000200 +6B0002006B0007006C000E006C0015006E001D006C0027006500320060003E +0060004C005F005D015E006F025C008201590097005700B5005C00FF005A00 +FF005900FF005800FF005800FF005700FF005700FF005600FF006A0003006A +0003006A0003006A0003006B0003006B0002006C0002006C0002006C000200 +6D0002006D0001006D0001006E0006006F000D006C00140065001B005D0024 +0057002E035300380551004506500057084F006A094E007F084D0094054C00 +B0034E00EA024D00F5024C00F3034A00F0034900EF044900EE044800ED0448 +00EC046C0002006C0002006C0002006C0002006D0002006D0001006E000100 +6E0001006F0001006F00010070000100700001006F00040066000A015E0011 +03550018074D001F0D460027114200301440003E12400050113F0062113E00 +77103D008E0E3D00AA0C3D00D40A3C00E00A3B00DE0B3A00DD0C3900DD0C38 +00DC0C3800DC0C3700DC0C6E0001006E0001006E0001006F0001006F000100 +7000010071000100710000007200000072000000730000006D030000620201 +035700050A4D000B0E420012143A0018193200201E2E002B1F2C00391D2B00 +491B2A005A1A2A006E1A290084192800A0172A00C7142900D4142800D31527 +00D2152600D2152500D1152500D1162400D016710000007100000071000000 +720000007200000073000000740000007401000075010000730300006C0600 +00640900005A090003470200113C00051732000B1C2900122222001A251E00 +26261900322516004023150051231300632412007723120091211400B61D14 +00C81C1300C71D1200C71D1100C61E1000C61E0F00C61E0F00C61E74010000 +74010000740100007501000076020000770200007702000078030000720600 +00690A0000610D00005A10000050100003410B000F3004001B220103251800 +092A1100132C0B001F2E06002A2F0201362E0001462D0003592A00066D2800 +0686270003AA250103C3230104C3230005C2230005C2230006C2230006C223 +0006C222790300007903000079030000790300007A0400007B0400007A0500 +00700A0000670E00005E1200005715000051170000471700043913000F2A0E +001A1A0900240602003100040C3200081A2E000B282A000D3627000F452400 +11582200136B1F0016841F0014AA210013C1200014C1200014C11F0015C11F +0015C21F0015C21F0016C21F7D0500007D0500007D0500007E0600007F0600 +007B0900006F0E0000641200005C160000541900004E1B0000481D00003E1D +0005311A000E2416001714130020020E012A00110E2800151C240018292000 +1A371D001C461B001D5819001F6C180022851A0022AB1C0020CB1B0021CB1B +0022CB1A0022CB1A0022CB1A0022CB1A0023CB198308000083080000830800 +00840900007A0D00006D12000062170000591B0000511D00004A2000004421 +00003F230000362300032B22000B1E2000130F1C001B01190423001E112000 +221F1C00252B180027391500294913002B5A12002D6D12002F8613002FA712 +002ECC11002ECB11002FCB10002FCB100030CB0F0030CB0F0030CB0F870C00 +00870C0000870C0000791100006B160000601B0000571F00004F2200004824 +0000412600003C27000038280000302A0000252B00061829000E0924001800 +25071B002B1418002F201400332C1000373A0E003A4B0C003C5D0B003D700B +003E870A003FA806003FD2050040D3040041D3040041D4030042D4030042D5 +030042D5037715000077150000771500006A1B00005E200000552400004C26 +0000452800003F2A0000392B0000342D0000302F0000293100001F33000211 +30000C032C001500330B130038160F003C200B00412C0800463A06004A4B04 +004A5E03004C7301004D8A00004DAC00004BE200004BE200004BE200004BE2 +00004BE200004BE200004BE2006720000067200000672000005D2500005328 +00004A2B0000432D00003C2E000036300000313200002C3400002836000021 +380000183A00010A38000B0038041000400D0A0044160600461F05004A2A04 +004E38050050480500525C0300547101005689000056A9000053E7000052EA +000053EA000053EA000053EA000053EA000053EA005A2A00005A2A00005A2A +0000512C0001482F0000413100003A340000333600002D380000283A000024 +3B0000203D0000193F000010410001053F000A0041050D00460C0A004B1406 +004D1D05005027050055340500574406005A5804005C6F01005F8600005FA5 +00005BDC00005BED00005BED00005BED00005BED00005BED00005BED004E32 +00004E3200004E320000463400003F37000037390000303C00002A3E000025 +400000204100001C4300001A4400001745000011470000074600090047030E +004D0B0B0053130700561B0500592506005D3105005F40060062540500666B +01006882000069A0000065C7000065E7000065E7000065E7000065E7000065 +E7000065E700443A0000443A0000443A00003D3D0000343F00002C41000027 +440000214600001C4700001B4800001B4900001B490000184B0000134D0000 +094E0008004F020F0054090C005B1008006119050065230500672E0500693C +05006C4F04006F650100737D0000749A000071C4000071F3000071F3000071 +F4000072F4000072F4000072F400394300003943000039430000314500002A +480000234A00001E4C00001C4D00001C4E00001C4E00001C4F00001C500000 +1A520000155500000C5600060258010E005D070C00640E09006C1606007120 +0400742B030076370200784902007A5F01007E7800008196000080C400007F +FF00007FFF00007FFF00007FFF00007FFF00007FFF002D4C00002D4C00002D +4C0000274E0000205100001D5200001D5300001D5400001D5400001E550000 +1E5600001E5600001B590000175D00000F6000050461000C0067040D006E0B +0900771306007E1C0300832601008532000087420000875800008B71000090 +9100008EBB00008CFF00008CFF00008CFF00008CFF00008CFF00008CFF0024 +55000024550000245500001E5800001E5900001E5A00001F5B00001F5B0000 +1F5C00001F5D00001F5E00001F5E00001D61000018660000126A0003086D00 +090071010D007A070A00830E06008C160300921F0100952B0000963A000098 +5000009B6A0000A38B0000A2B200009BFE00009BFE00009BFE00009BFE0000 +9BFE00009BFE001F5F00001F5F00001F5F00001F6000002061000020620000 +2063000020640000206500002065000021660000216700001F6A00001A7000 +00157600010D7B00050480000A0089030900920806009C0E0300A5160000AC +220000AF300000B1450000B8600000BF820000C2A30000B4E90000B3F60000 +B3F60000B3F60000B4F60000B4F60021680000216800002168000021690000 +216A0000216B0000216C0000226D0000226E0000226F000022700000227100 +00207500001C7C000017840000128B00000C930002049A000500A4010500B3 +050200C50A0000D6160000E5240000F9330000FF520000FF6C0000FF880000 +FFB20000FFB50000FFB50000FFB50000FFB40000FFB4002272000022720000 +22720000227300002375000023760000237700002378000023780000237800 +002378000023780000217C00001D830000188B0000139300000E9B000009A4 +000003AE000200BB010300CD050000E3110000F2200000FF2F0000FF4E0000 +FF690000FF7F0000FFA00000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +0023780000237800002378000023780000217B00001D830000188B00001393 +00000E9B00000AA3000004AD000200BA010300CC050000E2100000F11F0000 +FF2E0000FF4A0000FF660000FF7B0000FF9C0000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000217B00001D83 +0000188A0000149200000F9A00000AA3000004AD000200B9010300CA050000 +E10F0000F01E0000FE2C0000FF440000FF620000FF760000FF970000FFB200 +00FFB20000FFB20000FFB20000FFB200> +<47001000470010004700100047001000480010004800100049000F004A000F +004A000F004B000F004B000E004B000E004B0010004900170049001F004B00 +26004F002D0054003600590041005F004E0063005C0065006D0064007F0062 +0095006000B2006500FC006500FC006500FC006500FC006500FC006500FC00 +6500FC006500FC0049000F0049000F0049000F0049000F004A000F004A000F +004B000F004B000E004C000E004C000E004D000E004D000E004D0010004B00 +17004B001E004D00250050002D00550036005900400060004D0064005C0066 +006D0066007F00640094006100B0006500FB006600FB006600FB006600FB00 +6600FB006600FB006600FB006600FB004B000F004B000F004B000F004B000F +004B000E004C000E004D000E004D000E004E000D004E000D004F000D004F00 +0D004F000F004D0016004D001E004E00250051002C00560036005A00400061 +004D0065005C0067006D0067007F00650094006300AF006600F9006600F900 +6600F9006600F9006600F9006600F9006600F9006600F9004C000E004C000E +004C000E004D000E004D000E004E000D004F000D004F000D0050000D005000 +0C0051000C0051000C0051000E004F0015004F001D005000240053002C0057 +0035005B00400062004D0066005C0068006C0068007F00660093006400AD00 +6700F4006700F7006700F7006700F7006700F7006700F7006700F7006700F7 +004E000D004E000D004E000D004F000D004F000D0050000D0051000C005100 +0C0052000C0052000C0053000B0053000B0053000D005200140052001C0053 +00230055002B00580035005C00400063004D0068005C006A006C0069007F00 +680093006600AC006700E6006800F5006800F5006800F5006800F5006800F5 +006800F5006800F50051000C0051000C0051000C0051000C0052000C005200 +0C0053000B0053000B0054000B0055000B0055000B0056000A0056000C0055 +00130054001B005500220057002B00590034005D003F0064004D0069005C00 +6B006C006B007E006A0092006700AB006700D9006900F1006900F0006900F0 +006900F0006900F0006900F0006900F00053000B0053000B0053000B005300 +0B0054000B0055000B0055000B0056000A0057000A0057000A0058000A0058 +000A0058000B005700120057001900580021005A002A005B0034005F003F00 +66004D006A005C006C006C006D007E006B0092006900AA006800D0006A00EA +006A00EA006A00E9006A00E9006A00E9006A00E9006A00E90056000A005600 +0A0056000A0056000A0057000A0057000A0058000A0059000900590009005A +0009005A0009005B0009005B000A005A0011005A0018005B0020005C002900 +5E00330061003F0067004D006C005D006E006D006E007F006D0092006B00A9 +006A00CC006A00E9006A00EF006900F4006900F8006900FB006800FC006800 +FD0058000900580009005800090059000900590009005A0009005B0009005B +0008005C0008005C0008005D0008005D0008005E0009005D0010005D001700 +5E001F005F0028006000320063003E0069004C006D005C006D006C006B007E +00670091006300A9006300D8006400FF006300FF006200FF006100FF006100 +FF006000FF006000FF005B0009005B0009005B0009005B0008005C0008005D +0008005E0008005E0008005F0007005F000700600007006000070061000800 +60000F006100160061001D00620026006300310062003D0062004900630059 +006200690060007B005D008F005900AA005C00E7005B00FF005A00FF005900 +FF005800FF005700FF005700FF005700FF005E0007005E0007005E0007005E +0007005F000700600007006100070061000600620006006200060063000600 +630006006300070063000D006300140064001C005F00240059002E00560038 +005600440056005300560065015500790052008E004F00A9005100DD005200 +FF005000FF005000FF004F00FF004F00FF004E00FF004E00FF006200060062 +00060062000600620006006300060063000600640005006500050065000500 +6600050066000400670004006700050066000C006000130058001A00530023 +004E002B034B0033054A003F0449004E04480061064800750648008A034600 +A4014600CC014600EF014500ED014400EB014300EA014200E9014200E80141 +00E70265000500650005006500050065000500660005006700040068000400 +680004006900040069000300690003006A000300640003005C000900540010 +024B00160743001D0D3C00231338002D1539003A113900490E38005B0E3800 +6E0D3800840B38009D093800C1073700DB063600DA073500D9073400D80833 +00D8083300D7083200D7086900040069000400690004006900040069000300 +6A0003006A0003006B0003006B0002006C0002006A000200610001005A0101 +014E00040745000A0C3B001011330016172C001E1C2800281C2600351A2600 +4418250054162500661624007B15240094142600B5112600CF0F2500CE1024 +00CD102300CC102200CC112100CC112100CB116B0002006B0002006B000200 +6B0002006C0002006C0002006D0001006D0001006E000100670000005F0300 +005A060000520800004202000C370004132D000A192500101E1F0018211A00 +242116002F2013003C1E11004B1E10005C1F0E006F1F0E00861E1000A51A12 +00C3181000C2180F00C2190E00C1190E00C1190D00C1190D00C1196E000100 +6E0001006E0001006E0001006F000100700001007000010070000000660300 +005E070000570A0000500D0000490E00003C0A000A2C0400161F0102201600 +08240F00122609001D28050028280101342700024225000454230006672100 +087C1F00069A200003BD1E0004BC1E0005BC1E0006BC1D0006BC1D0007BC1D +0007BC1D720000007200000072000000720000007200000073000000700300 +00650700005C0B0000540E00004D110000471300004115000135110009270C +00151808001F0502002900040C2A00081927000B2623000D3320000F421D00 +10531B0012661900147B1900149A1B0012BC1B0012BC1B0013BC1A0014BD1A +0014BD1A0014BD1A0014BD1A76010000760100007601000076010000770200 +0070060000640B00005A0F0000521200004A150000441700003F190000391A +00012E180009211500121312001A020D012400110E2200151B1E0017281A00 +1A3517001B4314001C5413001E661200207C1300209A16001EC417001FC417 +001FC4160020C4160020C4150020C4150021C4157A0400007A0400007A0400 +007B0400006F0A0000620F0000581300004F17000048190000411B00003B1D +0000361F000032200000272000061C1E000E0D1B00160118041D001D111A00 +211D16002429120026370E0028460C002A560B002B680B002D7D0C002D980D +002BC20D002CC30C002CC30C002CC30B002DC30B002DC30A002DC30A710C00 +00710C0000710C00006E0E000061130000561800004D1B0000451E00003E20 +000038210000332300002F2500002B26000022280001162700090822001200 +24071500291311002D1E0D00312A09003538060039470400395903003A6A03 +003A7E02003898020039C0020039C7020039C702003AC702003AC702003AC8 +02003AC80262170000621700006217000060180000551C00004B1F00004322 +00003B24000036260000312700002C290000282B0000242D00001B2F00000F +2E0007022B010F00310A0C0035140800381E05003B2903003F360300424503 +004257030041690200427E01004198000043C4000042D4000042D4000042D4 +000042D4000042D4000042D400552000005520000055200000532100004924 +0000412600003A280000332A00002E2C0000292E000024300000203200001C +33000014350000083500050033020C00380A09003C1306003D1C0500402604 +00453304004842040049540300496802004B7D00004B9900004BC600004AE0 +00004AE000004AE000004AE000004AE000004AE0004A2800004A2800004A28 +0000482800003F2B0000382D0000302F00002B32000025340000203600001C +3700001839000017390000123B00000A3A00050139020D003D090B00421107 +00441A0600462305004B2F04004F3E05005051040052660200547C00005597 +000053C2000052E9000052E9000052E9000052E9000052E9000052EA003F2F +00003F2F00003F2F00003E300000353200002E35000027380000223A00001D +3C0000183D0000183E0000183E0000183F0000134000000C400004023F010D +0043070C00480F08004C1806004E210500522C0500563A0600584C05005B62 +03005E7900005F9400005DBA00005BED00005BED00005BED00005BED00005B +ED00005BED00353800003538000035380000333800002B3B0000243E00001E +4000001942000019420000194300001A4300001A4400001A44000015460000 +0E4700030346000D004A060D00500D0A0055160600581F05005C2906005F37 +060061480600645D0300687500006A8F000068B1000066E7000066E7000066 +E6000066E6000066E6000066E6002A4100002A4100002A4100002841000021 +4400001B4600001A4700001B4800001B4800001B4900001B4A00001B4A0000 +1B4B0000174D0000104F0002054F000B0052040E00580B0B005F130700651C +0500682605006B3304006C4205006F580300736F0000768A000076AE000074 +F6000074F6000074F7000074F7000074F7000074F700204A0000204A000020 +4A00001F4A00001C4C00001C4D00001C4E00001C4E00001C4F00001C500000 +1D5000001D5100001D520000195500001358000209590009005C020E006208 +0B006A1008007219050077230300792E02007B3C01007C5001007F68000084 +84000085AA000083FC000082FF000082FF000083FF000083FF000083FF001D +5200001D5200001D5200001D5200001D5300001D5400001E5500001E560000 +1E5700001E5700001E5800001E5900001E5900001A5D0000156100010C6400 +070166000E006D060C00750C08007E140500851E0200892800008B3600008C +4900008E610000937E000097A3000091E2000091FF000091FF000091FF0000 +91FF000091FF001F5A00001F5A00001F5A00001F5A00001F5B00001F5C0000 +1F5D00001F5E00001F5F0000206000002061000020610000206200001C6700 +00176C0000107000040674000A007A020C00840808008D0E0500961602009B +2000009E2D0000A03F0000A3570000A9760000B0980000A7CC0000A3FB0000 +A3FA0000A3FA0000A4FA0000A4FA0020630000206300002063000020630000 +2065000020660000216700002168000021690000216A0000216A0000216B00 +00216C00001E71000019780000147F00010C850004058D000800940208009E +070400AB0C0100B8150000C2220000C7320000CC490000D6670000DB880000 +DCAF0000CFF50000D0F50000D0F60000D0F60000D1F600226D0000226D0000 +226D0000226E0000226F000022700000227200002273000022740000237500 +002376000023770000237800001F7E00001B860000168E0000119600000C9E +000007A8000101B3000300C1020100D80A0000EA180000FA270000FF380000 +FF5D0000FF730000FF990000FFB20000FFB20000FFB20000FFB20000FFB200 +23780000237800002378000023780000237800002378000023780000237800 +002378000023780000237800002378000023780000207E00001B860000168E +0000119600000C9E000007A7000001B2000400C0020200D6090000E9170000 +F9260000FF340000FF5A0000FF6F0000FF8F0000FFB20000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +0023780000237800002378000023780000237800002378000023780000207E +00001B860000178D0000129600000D9E000008A7000001B1000400BF020200 +D4080000E8150000F7250000FF330000FF560000FF6D0000FF870000FFAA00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410012 +0042001200420012004300120043001200430012004200160041001D004300 +230046002A004B00320051003C00570047005C0055005F0065005F0076005D +008B005B00A7005E00DD006100FD006100FD006100FD006100FD006100FD00 +6100FD006100FD004100130041001300410013004100130041001200420012 +00420012004300120043001200440012004400110044001100450011004300 +150042001D004400230047002A004C00320052003B00580047005D00550060 +006400600076005E008A005C00A5005E00D7006200FE006200FE006200FE00 +6200FE006200FE006200FF006200FF00430012004300120043001200430012 +00430012004300120044001100440011004500110045001100460011004600 +1100460010004500150043001C004500230049002A004D00320053003B0059 +0047005E005400610064006100760060008A005D00A4005E00D1006300FF00 +6300FF006300FF006300FF006300FE006300FE006300FE0044001100440011 +00440011004400110045001100450011004600110046001100470010004700 +10004700100048001000480010004700140045001C00460022004A0029004E +00310054003B005A0046005F0054006200640063007500610089005F00A300 +5F00CD006300FE006300FE006300FE006300FE006300FE006300FE006300FE +00460011004600110046001100460011004600100047001000470010004800 +10004800100049000F0049000F004A000F004A000F004900130047001B0048 +0022004C0029005000310055003B005B004600600054006300630064007500 +630089006000A1006000CA006400FD006400FD006400FD006400FD006400FD +006400FD006400FD0048001000480010004800100048001000480010004900 +0F004A000F004A000F004B000F004B000E004C000E004C000E004C000E004B +0012004A001A004A0021004D0028005200300056003A005C00460061005400 +6500630066007500640088006200A0006100C6006500FC006500FC006500FC +006500FC006500FC006500FC006500FC004A000F004A000F004A000F004A00 +0F004B000F004B000E004C000E004C000E004D000E004E000D004E000D004E +000D004F000D004E0012004C0019004D0020004F0027005300300057003A00 +5D0045006300530066006300670074006600880064009F006200C2006600FA +006600FA006600FA006600F9006600F9006600F9006600F9004D000E004D00 +0E004D000E004D000E004D000E004E000D004E000D004F000D0050000D0050 +000C0051000C0051000C0052000C00500010004F00180050001F0051002600 +55002F00590039005E0045006400530068006300690074006800870065009E +006200C1006400FF006300FF006200FF006100FF006100FF006000FF006000 +FF004F000D004F000D004F000D004F000D0050000D0051000C0051000C0052 +000C0052000C0053000B0054000B0054000B0054000B0054000F0053001600 +53001E005400260057002E005A0039005F0045006500530065006200630073 +005F0086005B009F005900C7005B00FF005A00FF005900FF005800FF005700 +FF005700FF005600FF0052000C0052000C0052000C0052000C0053000B0054 +000B0054000B0055000B0055000A0056000A0057000A0057000A0058000A00 +57000E005600150057001D005800250059002D00570037005800420059004F +005A005F00590071005600860052009F005100C9005200FF005000FF004F00 +FF004F00FF004E00FF004E00FF004D00FF0056000A0056000A0056000A0056 +000A0056000A0057000A0057000A0058000A0059000900590009005A000900 +5A0009005B0009005B000C005A00140058001B00520023004F002B004D0033 +004D003E004E004B004E005C004E006F004C00840049009D004800C4004800 +FD004700FC004600FB004500FA004500F9004400F8004400F8005900090059 +0009005900090059000900590009005A0009005B0009005B0008005C000800 +5D0008005D0008005E0008005E0008005C000B00540012004D001900490021 +004500270442002F0643003A03430048014200590341006C03420081014000 +99003F00BA003E00EA003D00E8003C00E6003B00E5003A00E4003A00E3003A +00E3005C0008005C0008005C0008005C0008005D0008005E0008005E000700 +5F000700600007006000070061000700610006005A000500530008004A000E +02420014073A001A0E3400201430002915310036103200440C3200540B3200 +660A32007A08320092063200B1043100D8033000D6042F00D5042E00D5042E +00D4042D00D4052D00D3056000070060000700600007006000070061000700 +61000600620006006300060064000600640005005E00040057000300500001 +02450003043D00090935000E0F2D00141527001C1924002619220032172100 +401420004F13200060121F0073121F0089112100A70E2300CB0B2100CA0B20 +00CA0C1F00C90C1E00C80C1E00C80D1D00C80D640005006400050064000500 +6400050065000500660005006600050067000400670004005C000200550001 +014B030000470500003D0300073200030F2900081521000F1A1B00171C1700 +221D13002D1B100039190E0047190C00571A0B00681A0B007D1A0C00981710 +00BF130E00BE140D00BE140C00BD150B00BD150A00BC150A00BC1569000400 +69000400690004006900040069000400690003006A000300640002005A0101 +00520400014B07000045090000400B0000380A00042A0400111D01021B1400 +081F0E00112107001B22030126220102322000033F1E0005501C0006621B00 +08751900078F1A0004B3190005B7190006B7180006B7180007B7180007B718 +0007B7186C0002006C0002006C0002006C0002006C0002006C000200620000 +005A04000051080000490B0000430D00003E0F00003911000031110004240C +000F160800190502002300040B2300081820000B241C000E3119000F3F1600 +0F4F15001161140013741300148D150011B1160012B8160012B8160013B815 +0013B9150013B9150013B9156F0001006F0001006F0001006F0001006F0001 +0062030000590800004F0C0000470F0000411100003B130000361500003117 +00002A1700041F14000D11110015010C011E00100E1C00141A180017261400 +193310001A410E001B510D001C620C001E750D001F8D0F001DB213001DBD12 +001DBD11001EBD11001EBD10001EBD10001FBD106A0400006A0400006A0400 +006A04000062070000570C00004D100000451300003E150000381800003219 +00002E1B00002A1D0000251E00011A1D00090C1A001100180417001C101400 +201C100023280B00253408002643060027530500296405002A7605002A8D07 +0028AD0A0027BC0A0027BC0A0027BC0A0027BC0A0027BC0A0027BC0A5D0D00 +005D0D00005D0D00005D0D0000561000004C140000431700003C1A0000351C +0000301E00002B20000027220000242300001F250000142500050621000D00 +23070E0028120B002B1D06002E280300303401003243010031530200316303 +0031750400308B05002EAB07002DBF07002DBF07002DBF07002DBF07002EBF +07002EBF07501600005016000050160000501600004A180000411B0000391E +0000332000002D2200002924000024260000202800001D290000172B00000D +2C00020129010A002D0808002F110700301B05003325030036310200394002 +00395002003861030038730300378A030037AA030036C5040036C5030037C5 +030037C5030037C5030037C503441E0000441E0000441E0000441E00003F20 +000037220000302400002B27000026290000212B00001C2D0000182E000015 +2F0000123000000C310001022E000900300709003410070035190600382304 +003B2E0300403D0200404D0300405F0300407202004089010040AB010040D0 +010040D1010040D1010040D1010040D1010040D1013A2600003A2600003A26 +00003A260000362700002E290000282C0000232E00001D3000001932000015 +3300001534000016340000143500000E360001043300090034050B003A0E08 +003B1706003D200500412B040046390300484A0300485D0300497101004A89 +00004BAC000049DE000049DE000049DE000049DE000049DE000049DE00302D +0000302D0000302D0000302D00002C2E0000253100001F3400001A36000016 +37000017380000173800001739000017390000153A00000F3B000106390009 +003A040D003F0C090043150600441D0500482804004C3505004F460500515A +0400526F01005488000055AA000051E9000051E9000052E9000052E9000052 +E9000052E90026360000263600002636000026360000233700001C3A000018 +3B0000183C0000183D0000183D0000183E0000183E0000183F000017400000 +11410000084000080040030E00450A0B004B1207004D1B0500502505005531 +0500574106005A5505005D6D01005F85000060A500005CE400005CED00005C +ED00005CED00005CED00005CED001D3E00001D3E00001D3E00001D3E000019 +400000194100001941000019420000194300001A4300001A4400001A450000 +1A45000019460000134800000B4800060048010F004D080C00541008005819 +06005B2205005F2E0600623D060064500500686702006B8000006C9E000068 +C9000068E8000068E8000068E8000068E8000068E8001A4600001A4600001A +4600001A4600001A4600001B4700001B4800001B4900001B4A00001B4A0000 +1B4B00001C4B00001C4C00001A4D0000155000000D5200050252000E005706 +0D005D0D0900641606006A2004006D2A04006F370400714903007460020078 +7A00007998000077C9000078FB000078FB000078FB000078FB000078FB001C +4D00001C4D00001C4D00001C4D00001C4E00001C4E00001C4F00001D500000 +1D5100001D5200001D5200001D5300001D5400001C55000017590000105B00 +04065D000B0061040D00680A0A0071120700781B04007D2602007F32010081 +42000082580000867200008A93000089C6000087FF000087FF000087FF0000 +87FF000087FF001E5500001E5500001E5500001E5500001E5600001E570000 +1E5800001E5900001E5900001F5A00001F5B00001F5C00001F5C00001E5E00 +0019620000136700020A6A0008016D010D0075060A007F0D0700871504008E +1F0100912A0000923A000094500000976A00009E8C00009DB8000097FF0000 +97FF000097FF000098FF000098FF001F5E00001F5E00001F5E00001F5E0000 +1F5F0000206000002061000020620000206300002064000020650000206500 +0021660000206800001B6E0000167400000F790004067E00090086020A008F +070700990D0300A3150100AA200000AD2F0000AE430000B65F0000BD830000 +BFA80000B1F70000B1F70000B1F70000B2F70000B2F7002169000021690000 +216900002169000021690000216B0000216C0000216D0000226E0000226F00 +00227000002271000022720000217400001D7B000019830000148B00000F93 +0000089B000201A4000500B3040300C5080000D9120000E9200000FE300000 +FF500000FF6B0000FF870000FFB20000FFB20000FFB20000FFB20000FFB200 +23750000237500002375000023750000237600002377000023780000237800 +002378000023780000237800002378000023780000227A00001E8100001989 +0000159100000F9900000AA2000005AB000200B8010300C9040100E00F0000 +F01E0000FF2D0000FF4B0000FF690000FF810000FFA70000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000237800002279 +00001E8100001A89000015910000109900000BA1000005AB000100B7010300 +C7040100DF0E0000EE1C0000FE2C0000FF450000FF650000FF7B0000FF9E00 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +004100130041001300410013004100130041001300410013003F001A003F00 +20004100270047002E004C0036005200410057004E005B005D005C006E005B +00820058009B005900C3005E00F9005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F001A003F0020004100260047002E004C0036005200410057004D005B +005C005C006D005B00810058009B005900C1005E00F9005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F001A003F0020004100260047002E004C00360052 +00400057004D005B005C005C006D005B00810058009A005900BF005E00F900 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F0019003F0020004100260047 +002E004C0036005200400058004D005B005C005D006C005C00800059009800 +5900BD005F00FA005F00FA005F00FA005F00FA005F00FA005F00FA005F00FA +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004200120042001200420013004000190040 +001F004300260048002D004D0035005300400059004D005D005B005E006C00 +5E007F005B0097005A00BA006000FC006000FC006000FC006000FC006000FC +006000FC006000FC0041001300410013004100130041001300410013004100 +13004200120042001200430012004300120043001200440012004400110044 +0012004200180042001F004500260049002D004E00350054003F005A004C00 +5E005B0060006B005F007E005D0096005C00B8006100FE006100FE006100FE +006100FE006100FE006100FE006100FE004300120043001200430012004300 +12004300120043001200440012004400110045001100450011004500110046 +00110046001100460011004400180043001E00470025004A002C004F003500 +55003F005B004C005F005A0061006B0061007E005E0094005D00B5006300FF +006300FF006300FF006300FF006200FF006200FF006100FF00450011004500 +11004500110045001100450011004500110046001100460010004700100047 +001000480010004800100048001000490010004700170046001E0049002500 +4C002C005000340056003F005C004B0061005A0063006A0061007D005D0094 +005900B5005C00FF005B00FF005900FF005800FF005800FF005700FF005700 +FF004700100047001000470010004700100047001000480010004800100049 +000F0049000F004A000F004A000F004B000F004B000E004B000E004A001500 +49001D004A0024004E002B005200340057003E005A004A005C0059005B006A +0058007D00540094005000B8005200FF005100FF004F00FF004F00FF004E00 +FF004D00FF004D00FF004A000F004A000F004A000F004A000F004A000F004A +000F004B000E004C000E004C000E004D000E004D000E004E000D004E000D00 +4F000D004D0014004C001C004D0023004D002A004D0032004E003B00500047 +0051005700510068004F007D004B0095004900B7004900FF004700FF004600 +FF004500FE004500FE004400FE004400FE004D000E004D000E004D000E004D +000E004D000E004E000D004E000D004F000D004F000D0050000D0050000C00 +51000C0051000C0052000C00500013004B001A00470021004500280045002F +004500380046004400470054004600670046007C00430094004000B4003F00 +F4003E00F6003D00F4003C00F3003B00F3003B00F2003B00F20050000C0050 +000C0050000C0050000C0050000C0051000C0052000C0052000C0053000B00 +53000B0054000B0054000B0055000B0051000A004A0010004400180040001E +023B00240739002B093B0036033D0043003C0052003B0064013B0079003900 +90003700AD003500E1003400E7003300E5003200E3003200E2003100E10031 +00E10054000B0054000B0054000B0054000B0054000B0055000B0055000B00 +56000A0057000A0057000A0058000A00550009004E0008004800070041000D +013A0012073300180D2D001E122A0027132B00330E2D00400A2C004F082C00 +60072B0073062C0089042C00A5022B00CD012A00D5012900D4012800D30128 +00D2022700D2022700D10258000A0058000A0058000A0058000A0058000A00 +58000900590009005A0009005A0009005B000900530007004C000600440004 +003E000202370007062F000D0C2900131123001A15200024151E002F131D00 +3C101C004A0F1B005A0E1B006C0E1B00810D1C009A0B1E00BE071D00C8071C +00C7081B00C6081A00C6081A00C5091900C5095C0008005C0008005C000800 +5C0008005C0008005D0008005D0008005E0008005A00070052000500470003 +00400001023B010003370400022D00020B250007111E000E15190016181500 +201811002B170D0036150B00421509005215080062160700751608008D140B +00AD110B00BA100A00B9100900B8110800B8110700B7110700B71160000700 +600007006000070060000700600007006100070062000600590004004E0002 +00440101013F0300023B06000136080000330A00002705000B1A0101161200 +071A0C00101C06001A1D0201241C01022F1A00043C1800054C1600065D1500 +087014000886140006A3140006B3130006B3130007B2130007B2130008B213 +0008B212650005006500050065000500650005006500050063000400570002 +004C010002440500003F070000390A0000350C0000300E00002D100000220C +000A140800140402001E00040B1D0008171A000B2316000E2F13000F3C1000 +104B0E00105D0D00126F0D0013840F0011A1110011B4110011B4100012B410 +0012B4100012B4100013B4105F0002005F0002005F0002005F0002005F0002 +00570100014B050000440800003D0B0000370E0000321000002D1200002914 +0000261600001C14000810110010010C011900100D16001419120017250E00 +18310A00193E07001A4D06001B5E06001D6F06001D8308001CA00C001BB60C +001BB60C001BB70C001BB70C001BB70C001BB70C5505000055050000550500 +0055050000550500004B090000430C00003B0F0000351200002F1400002A16 +000027180000231A0000201C0000181C00040A19000C00170411001B100E00 +1F1B0A00222605002333010023400100224F0100235E0200236E0400238207 +00219D0A001FB90C0020B90C0020B90C0020B90C0020B90C0020B90C490D00 +00490D0000490D0000490D0000490D00004110000039130000321600002D18 +0000281B0000241D0000201F00001D2100001A22000012230001051E000800 +2107080024100700261A06002725030028300100283E0100284D0100285C02 +00286C040028810600279C090025BB0B0025BB0B0025BB0B0025BB0B0025BB +0B0025BB0B3F1500003F1500003F1500003F1500003F15000037180000301A +00002A1D0000261F0000212100001D2300001925000015260000122700000D +280000042500060024050800280E07002A1806002B2204002D2E02002F3B01 +002F4A01002E5A02002F6B03002E7F05002D9A07002BBE08002BBE08002BBE +08002BBE08002BBE08002BBE08351C0000351C0000351C0000351C0000351C +00002E1F000028210000232400001E2600001928000015290000132A000013 +2B0000132B00000F2B0000062A00050029030A002D0C07002E160600302004 +00332B020036380100374702003658020036690300367E03003598040034C3 +040034C3040034C4040034C4040034C4040034C4042C2400002C2400002C24 +00002C2400002C24000026260000202900001B2B0000162C0000142D000014 +2E0000142E0000142F0000142F000010300000082F0004002D020B00310A08 +0034130600351D0500382803003C340200404402003F5502003F6802003F7C +01003E9801003FC601003FCE01003FCF01003FCF01003FCF01003FCF01232B +0000232B0000232B0000232B0000232B00001D2E0000173000001531000015 +3200001532000015330000153300001534000016340000123500000A350003 +0032000C0036080A003A1106003C1A05003E24040043310300474003004852 +030048660200497C00004998000049C9000048DE000048DE000049DE000049 +DE000049DE001A3400001A3400001A3400001A3400001A3400001635000016 +360000163600001637000017380000173800001739000017390000173A0000 +133B00000D3B00020238000C003C070B00410F080044180600462105004A2D +04004E3B0500504E040052630300547A00005697000053C5000052EA000052 +EA000052EA000052EA000052EA00173A0000173A0000173A0000173A000017 +3A0000173B0000183C0000183C0000183D0000183E0000183E0000183F0000 +193F000019400000154100000F4200010440000B0043050D00490D09004D15 +06004F1E050053290500573706005A4906005C5F0300607700006293010060 +BB00005DED00005DED00005EED00005EED00005EED00194100001941000019 +41000019410000194100001942000019420000194300001A4400001A440000 +1A4500001A4600001A4600001A47000017490000124A0001074A000A004C03 +0E00520B0B00581307005D1C0500602605006333050065430600685904006C +7100006E8C00006DB200006BEC00006BEC00006BEC00006CEC00006CEC001B +4800001B4800001B4800001B4800001B4800001B4900001B4A00001B4A0000 +1B4B00001C4C00001C4D00001C4D00001C4E00001C4E000019510000145300 +000A5500080056010F005C080C00641008006B19050070230400722E030074 +3D0200765102007A6900007E8600007EAE00007CFF00007CFF00007DFF0000 +7DFF00007DFF001D5000001D5000001D5000001D5000001D5000001D510000 +1D5200001D5300001D5300001D5400001E5500001E5600001E5600001E5700 +001B5A0000165E00000E6100050362000D0068050C00700C09007914050080 +1D0300842801008635000088480000896100008F7F000092A700008DFD0000 +8DFF00008DFF00008DFF00008DFF001E5900001E5900001E5900001E590000 +1E5900001F5A00001F5B00001F5C00001F5D00001F5E00001F5F00001F5F00 +0020600000206100001D64000018690000116E0003087100090077010C0080 +070900890D050092150200981F00009C2C00009D3E0000A0570000A6770000 +AC9D0000A2DD0000A1FC0000A1FC0000A1FC0000A1FC002063000020630000 +20630000206300002063000020650000206600002167000021680000216900 +00216A0000216B0000216B0000216C00001F7000001A770000167E00000F84 +0003078C000600930109009C060500AA0B0200B7130000C21F0000CA2F0000 +CE470000D8660000DE890000E0B70000D2F70000D3F80000D4F80000D4F900 +22700000227000002270000022700000227000002271000022720000227300 +00227500002376000023770000237800002378000023780000217C00001C84 +0000188C0000139400000D9C000008A5000002B0000300BE020200D3080000 +E8150000F8260000FF350000FF5C0000FF740000FF9C0000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000237800002378 +0000217C00001C840000188C0000139400000E9C000009A5000002AF000300 +BD020200D1070000E7140000F7240000FF330000FF580000FF6F0000FF9400 +00FFB20000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300400015003E00 +1C004000230042002A00490032004F003B00550047005A0056005C0066005C +007900590090005800B1005E00F9005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300400015003E001C004000230042002A00490032004E003B00550047005A +0055005C0066005C007800590090005800B0005E00F9005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300400015003E001C004000230042002900490032004E +003B0055004700590055005C0065005C00780059008F005800AE005E00F900 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300400015003E001C004000230042 +002900490031004E003B0055004600590055005C0065005C00770059008E00 +5800AD005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300400015003E +001C004000230042002900490031004E003A0055004600590054005C006500 +5C0076005A008D005800AB005E00F7005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300400015003E001C004000230042002900490031004E003A0054004600 +590054005C0064005C0076005A008C005800A9005E00F3005E00F9005E00F9 +005E00F9005E00F9005E00F9005E00F9004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400015003E001C00400022004200290049003100 +4E003A0054004500590053005C0064005C0075005A008B005800A8005D00EB +005E00FC005D00FF005C00FF005B00FF005A00FF005900FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400015003F001C0040002200 +43002900490031004F003A00550045005A0053005C0063005A00750056008A +005100A9005400EE005300FF005100FF005000FF004F00FF004E00FF004E00 +FF004100130041001300410013004100130041001300410013004100130041 +00130042001200420012004200120043001200430012004300120043001400 +41001B0042002200450028004A0030004E0039005100430053005100530062 +00510075004E008B004900AA004900E8004800FE004700FE004600FE004500 +FE004400FD004400FD00420012004200120042001200420012004200120043 +00120043001200440012004400110044001100450011004500110046001100 +460011004600130043001B00440021004200270044002E0046003600490041 +004A005000490061004800750045008D004200AA004000E0003E00FA003D00 +F9003C00F8003C00F7003B00F7003B00F60045001100450011004500110045 +00110045001100450011004600110046001000470010004700100048001000 +480010004800100049000F0047001200420018003E001F003D0025003D002C +003E0034003F003E0040004E003F0060003E0074003C008C003900A8003700 +D6003500F0003400EF003300EE003300EE003200ED003200EC004800100048 +0010004800100048001000480010004800100049000F0049000F004A000F00 +4A000F004B000F004B000E004C000E0046000D0041000F003C00150037001B +0433002108310028093500330336003E0034004D0033005E00320071003100 +88002F00A3002E00CC002C00E4002B00E3002B00E2002A00E1002A00E00029 +00E0004B000E004B000E004B000E004B000E004B000E004B000E004C000E00 +4D000E004D000E004E000D004F000D004A000C0044000B003F000A003A000B +00330010052D00160A29001D0E2600250F2700300B28003D0727004B042600 +5B0325006C022500810125009B012500BD002400D4002300D3002200D20022 +00D1002100D1002100D0004F000D004F000D004F000D004F000D004F000D00 +4F000D0050000C0051000C0051000C004F000B0047000A00410009003C0007 +0037000501310006032B000C092500120D200019111D0022111B002D0E1A00 +390C1800460A1700550A1600660916007909170090071800AF051900C60417 +00C5041700C4051600C3051500C3051500C20553000B0053000B0053000B00 +53000B0053000B0053000B0054000B0055000B004E000A00450008003F0006 +0038000401320002022E0001042B0102062200070C1C000D11170015131300 +1F130F0029120C00331109003F1007004D1006005D1105006F110500841007 +009F0E0800B60C0700B50C0600B40D0500B40D0500B30D0400B30D58000A00 +58000A0058000A0058000A0058000A0058000A00570009004C000700430005 +003B00030234010103300200032E0400022B06000125060005180101101000 +07150B00101705001A170201231600022D1400043912000648100007590E00 +086B0E00087F0E0007970E0006AF0E0007AF0E0007AF0D0008AF0D0008AF0D +0008AF0D5800070058000700580007005800070058000700560007004B0005 +00400002023801000434040002300600012D090000290B0000250D0000200C +00041308000F0402001900050B1800081714000B2210000D2D0D000F3A0A00 +0F48080010590700116A0700127D080011950A0010AF0B0010AF0A0011AF0A +0011AF0A0011AF0A0012AF0A4A0003004A0003004A0003004A0003004A0003 +00480002003F02000339050001330800002F0B00002A0D0000260F00002211 +0000201300011A1300030E10000B000C011400100D100013190D0016240800 +172F0400183C0100184A00001859010018690300187C05001793090015B10B +0015B10B0015B10B0015B10B0015B20B0015B20B4105000141050001410500 +0141050001410500013F06000038090000320C00002D0F0000281100002314 +0000201600001D1800001A190000151B0001091800070017040B001B100800 +1D1A06001D2404001D2E01001D3B00001C4900001C5801001C6703001C7905 +001B91090019B40C0019B50C0019B50C0019B50C0019B50C0019B50C390D00 +00390D0000390D0000390D0000390D0000370D0000301000002A1300002516 +0000211800001D1A00001A1C0000161E0000131F00000E1F0000061B000300 +1B0408001E0D08002017070021220400212C02002139000021470100215601 +002165030021780500208F08001EB30D001DB80D001DB80D001DB80D001DB8 +0D001EB80D30140000301400003014000030140000301400002E1500002817 +0000231A00001F1D00001A1F0000162100001222000011220000112300000F +23000008210003001D020800220B070024150700251F0500262A0200263601 +0026450100265402002664030026760500268D070023B00B0023BB0B0023BB +0B0023BB0B0023BB0B0023BB0B281B0000281B0000281B0000281B0000281B +0000261C0000211F00001C2100001723000012250000112500001226000012 +26000012260000112700000A26000100210009002609080027120700291D05 +002B2703002C3401002D4201002C5202002D6203002D7404002C8B06002AAD +090029BD090029BD090029BD090029BD09002ABD0920230000202300002023 +000020230000202300001F2300001926000013280000122800001229000013 +29000013290000132A0000132A0000122A00000C2B000102280008002A0709 +002D1007002E1A06003024030033300200363F0100354F0200356003003572 +0300348A040033AC050032C2050032C2050033C2050033C3050033C305172A +0000172A0000172A0000172A0000172A0000162A0000132B0000132C000013 +2C0000142D0000142D0000142E0000142E0000142E0000132F00000E300000 +042E0007002E050A00330E070034170600362104003A2D03003E3B02003F4B +02003E5D02003E7102003E8901003EAC01003ECD01003ECE01003ECE01003E +CE01003ECE01142F0000142F0000142F0000142F0000142F00001430000015 +30000015310000153100001532000015320000153300001533000016340000 +153400000F360000063500070033030C00380C08003B1506003D1E05004029 +04004536030048470300485A0300497001004A8800004AAE000049DE000049 +DE000049DE000049DE000049DE001635000016350000163500001635000016 +35000016350000163600001637000016370000173800001738000017390000 +17390000173A0000173B0000123C0000093B0006003A020D003F0A0A004412 +0700451B0600482505004D3205005042050052560400546D01005687000057 +AA000053EB000053EB000053EB000053EB000053EB00183C0000183C000018 +3C0000183C0000183C0000183C0000183C0000183D0000183E0000183F0000 +193F000019400000194000001941000019410000144300000C430005014201 +0E0047080C004D1008005018060053220500572E06005A3D06005D51050061 +6901006383000064A4000060E9000060EB000060EB000060EB000060EB0019 +43000019430000194300001943000019430000194300001A4400001A450000 +1A4500001A4600001A4700001B4700001B4800001B4900001B490000164C00 +000F4D0003034C000D0051050D00570D0A005D150600621F0500652A050068 +3805006A4A05006E620200717C0000739C00006FCF000070F2000070F20000 +70F2000070F2001B4B00001B4B00001B4B00001B4B00001B4B00001B4B0000 +1C4C00001C4D00001C4E00001C4E00001C4F00001C5000001D5000001D5100 +001D51000018550000125800020759000A005C030E00630A0B006B12070073 +1B040077260200793202007B4201007D590100817400008596000083D30000 +82FF000082FF000082FF000082FF001D5400001D5400001D5400001D540000 +1D5400001D5400001E5500001E5600001E5700001E5800001E5900001E5900 +001F5A00001F5B00001F5B00001A5F0000156400010C670007016A010D0071 +060B007A0D0800831504008A1E02008D2A00008F39000091500000946B0000 +9B8F000098C0000094FF000094FF000094FF000095FF001F5E00001F5E0000 +1F5E00001F5E00001F5E00001F5E00001F5F00002060000020610000206200 +0020630000206400002065000021660000216600001C6C0000187200001077 +0003087C00080083010B008D060700960C0400A1140100A81F0000AC2D0000 +AD420000B45F0000BC840000BDAF0000B0F70000B0F70000B0F70000B1F700 +216A0000216A0000216A0000216A0000216A0000216A0000216B0000216D00 +00226E0000226F000022700000227100002272000022730000227400001E7B +00001A830000158B0000109400000B9D000004A6000300B3010400C5040100 +DE0E0000EF1D0000FF2E0000FF4E0000FF6B0000FF8A0000FFB20000FFB200 +00FFB20000FFB2002378000023780000237800002378000023780000237800 +00237800002378000023780000237800002378000023780000237800002378 +0000237800001F7F00001B870000168F0000119700000C9F000006A9000101 +B5000300C5030100DD0D0000EE1C0000FE2C0000FF480000FF690000FF8300 +00FFB00000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013003F00 +19003F001F004100260046002D004C0036005200400057004E005B005E005C +0070005B0086005800A3005C00E2005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013003F0019003F001F004100260046002D004B0035005200400057 +004D005B005D005C006F005B0085005800A2005C00DA005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013003F0018003F001F004100260046002D004B +0035005100400057004D005B005D005C006F005B0084005800A1005B00D400 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410013003F0018003F001F0041 +00260046002D004B0035005100400057004D005B005C005C006E005B008300 +58009F005A00D0005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410013003F +0018003F001F004100250046002D004B00350051003F0057004D005B005C00 +5C006E005B00820058009E005A00CD005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F0018003F001F004100250046002D004B00350051003F00 +57004C005B005B005C006D005B00820058009D005A00C9005E00F9005E00F9 +005E00F9005E00F9005E00F9005E00F9004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F0018003F001E004100250045002D00 +4B00350051003F0057004C005B005B005C006C005B00810058009B005800C8 +005B00FF005900FF005800FF005700FF005600FF005500FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F0018003F001E00 +4100250045002C004B00340051003F0056004B0057005A0056006C00530081 +004E009D004D00CB004D00FF004C00FF004B00FF004A00FE004900FE004800 +FD004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F0018003F001E004100250045002C00460033004B003D004D004A004C005A +004B006D004900830045009E004300CA004100FA004000F9003F00F8003E00 +F7003D00F6003D00F600410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0018003D001E003C0024003C002B003E00320040003B +004200490041005B0040006E003E0085003B00A0003900C8003600F3003500 +F2003400F1003400F0003300EF003300EF0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003B00160037001C0035002300350029 +003600310037003B003700480036005A0035006E003300840031009F002F00 +C4002D00EB002C00EA002C00E9002B00E9002B00E9002A00E8004100130041 +00130041001300410013004100130041001300410013004200120042001200 +430012004300120043001200420011003D00100039000F0035001300310019 +022E001F052D0027052E0030022E003B002D0048002B0059002A006C002800 +810027009B002600BD002500E2002400E1002400E0002300DF002200DE0022 +00DE0044001200440012004400120044001200440012004400120044001100 +4500110045001100460011004500110040000F003B000E0037000D0033000B +002E000F022A00150626001C092400240A24002E0724003A02230047012100 +57001F0067001E007A001E0092001E00B1001D00D4001C00D3001B00D1001B +00D1001A00D0001A00CF004700100047001000470010004700100047001000 +4700100047001000480010004800100044000F003E000D0039000B0034000A +00300008002C00070127000B05230011091E00180C1C00210C1A002B091800 +370716004305140051051300610512007305120088041300A2021400C30113 +00C2021200C1021100C0021000BF031000BF034B000F004B000F004B000F00 +4B000F004B000F004B000F004B000E004B000E0043000C003C000B00360009 +00310007012D0005022A000402250002031E0006071A000D0C1500140E1200 +1E0E0F00280D0B00310B09003C0B0600490B0400590C03006A0C03007D0B03 +00940A0500B3080400B1090300B0090200B0090200AF090201AF094F000D00 +4F000D004F000D004F000D004F000D004F000D004A000C0041000A003A0008 +00330006012E0004022A00020326010103210200031D0400031601010B0F00 +07100A001011050019120201221001022B0E0004360C0005450A0006550800 +0767080008790800078E080006AC080007AD080007AD070008AC070008AC07 +0008AC07440009004400090044000900440009004400090044000900400008 +0038000501300003022B00000429030003250500021F0700021D0900021B0B +0002120800090302001500050C130008170E000A210B000C2C07000E370400 +0E4502000F5501000F6501000F7703000E8C05000CA807000CAC07000CAC07 +000CAC07000CAC07000CAC073A0003023A0003023A0003023A0003023A0003 +023A000302350002022F0100032C04000227070001220900011F0C00011B0E +000218100002161100020D100006000D020E00100E0B001219070014220400 +132C010013370000134400001353000012630200127404001289060010A608 +000FAE08000FAE08000FAE08000FAE08000FAE083104000231040002310400 +023104000231040002310400022F0600012A090000250C0000200E00011D10 +000119130001161500011317000010180000071600020014040700160D0800 +1717070017210500172B020017360000164300001652000016610200167204 +001587070013A30A0013B00A0013B00A0013B00A0013B00A0013B00A2B0C00 +002B0C00002B0C00002B0C00002B0C00002B0C0000280D0000231000001F13 +00011B16000017180000131A00000F1A00000E1B00000E1B0000091A000100 +16020700190B08001A1507001B1F05001B2903001B3401001A4100001A5001 +001A5F02001A7004001A85070018A20B0017B30C0017B30C0017B30C0017B3 +0C0017B30C2413000024130000241300002413000024130000241300002115 +00001D180000181A0000141C00000F1D00000F1D00000F1E00000F1E00000F +1E00000B1E000001190007001C0907001E1207001F1C060020260300203201 +001F3F00001F4E01001F5D02001F6E04001F8307001DA00B001BB70C001CB7 +0C001CB70C001CB70C001CB70C1D1B00001D1B00001D1B00001D1B00001D1B +00001D1B00001A1C0000151F00001020000010200000102100001021000010 +21000010210000102200000D220000031C0005001E06070021100800231A06 +0024240400252F0100253D0100244C0100255B0200256C040025810600239D +0A0021BA0C0021BA0C0021BA0C0021BA0C0021BA0C15220000152200001522 +00001522000015220000152200001222000011230000112300001124000011 +240000112500001125000012250000122600000E2600000624000500210408 +00260D070027170600292104002B2C02002C3A01002B4901002B5902002C6A +03002B7F05002A9B080028BD0A0028BD0A0028BD090028BD090028BD091226 +00001226000012260000122600001226000012260000122700001227000012 +28000012280000122800001329000013290000132A0000132A0000102A0000 +082A00030027020A002B0B07002D1406002E1E050031290300343601003546 +01003457020034680300347D04003399050031C2050031C2050032C2050032 +C2050032C205132B0000132B0000132B0000132B0000132B0000132B000013 +2B0000132C0000132C0000142D0000142D0000142D0000142E0000142E0000 +142F0000112F00000B300002012D010A003008090033110600351B05003726 +03003B3202003F4102003F5302003E6602003F7C01003D9801003ECB01003E +CE01003ECE01003ECE01003ECE011430000014300000143000001430000014 +30000014300000153000001531000015320000153200001533000015330000 +153400001634000016350000133500000D3600010233000A0036060B003B0F +07003C1806003F220400432E0400473D0400494F0400496303004A7B00004B +9900004BD000004ADF00004AE000004AE000004AE000163600001636000016 +36000016360000163600001636000016370000163700001738000017390000 +17390000173A0000173A0000173B0000173B0000153C0000103D0001053B00 +0A003D040D00420D090046150600481E05004C29050050380500534A050055 +600300577900005A97000056C9000055EC000055EC000055EC000056EC0018 +3D0000183D0000183D0000183D0000183D0000183D0000183E0000183F0000 +193F0000194000001941000019410000194200001942000019430000174400 +0012460000084500080046030E004B0A0B0051120700551B0500582505005C +3306005E440600615A0400657300006790000065B9000063E8000063E80000 +64E8000064E8001A4500001A4500001A4500001A4500001A4500001A450000 +1A4600001A4700001B4700001B4800001B4900001B4A00001B4A00001B4B00 +001B4B00001A4D0000154F00000C5100060151010E0057070C005E0F090064 +180600692204006C2E04006E3D040070520300746B00007889000077B50000 +76F9000076F9000076F9000076F9001C4E00001C4E00001C4E00001C4E0000 +1C4E00001C4E00001C4F00001C5000001D5000001D5100001D5200001D5300 +001D5400001D5400001E5500001C570000175A00000F5D0004055F000C0064 +040D006B0B0A00741306007C1D030080280100823500008348000085620000 +8B8100008DAD000089FF000089FF000089FF00008AFF001E5800001E580000 +1E5800001E5800001E5800001E5800001E5900001F5A00001F5B00001F5C00 +001F5D00001F5E00001F5E00001F5F0000206000001E62000019670000136B +00020A6F00080073000D007C060A00860D06008F140300961F0100992B0000 +9B3D00009E570000A3780000A9A200009FFA00009FFD00009FFD00009FFD00 +20640000206400002064000020640000206400002064000020650000216600 +00216700002168000021690000216A0000216B0000216C0000216D0000206F +00001C760000177D000011840002098B000501920008009B040600A9090200 +B7110000C41D0000CD2D0000D4440000DD650000E28B0000F3E60000D9FC00 +00DAFD0000DBFD002272000022720000227200002272000022720000227200 +00227300002274000023760000237700002378000023780000237800002378 +000023780000227A00001D820000198A0000149200000F9A00000AA3000003 +AE000200BB010300CF060000E6130000F6240000FF340000FF5C0000FF7600 +00FF9F0000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004000 +15003F001B004000220042002900490031004E003B00550047005A0056005C +0068005C007B00590096005900C1005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300400015003F001B004000220042002900490031004E003A0055 +0047005A0056005C0067005C007B00590095005900BF005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410014003F001B00400022004200290049 +0031004E003A00550046005A0055005C0067005C007A00590094005900BC00 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410014003F001B0040 +00220042002900490031004E003A0055004600590055005C0066005C007900 +590093005800BA005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0014003F001B004000220042002800490031004E003A005400460059005500 +5C0066005C007900590092005800B7005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410014003F001B004000220042002800490031004E003A00 +54004500590054005C0065005C007800590091005800B5005E00F9005E00F9 +005E00F9005E00F9005E00F9005E00FB004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013004100130041001300410014003F001B004000210042002800 +480030004E00390054004500590054005C0065005C007700570090005300B6 +005700FF005500FF005300FF005200FF005100FF005000FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013004100130041001300410014003F001B00 +4000210042002800480030004D003900510044005300530053006400510079 +004C0091004900B7004900FE004700FD004600FC004500FC004400FB004300 +FB004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +410014003F001B00400021004000280041002F004400370048004200480052 +004700650046007A00420094003F00B7003D00F6003B00F5003A00F5003900 +F5003900F4003800F400410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410014003B001A00390020003800260039002D003B0036 +003D0041003D0052003B0065003A007B00370095003400B7003200EE003100 +ED003000EC002F00EC002E00EC002E00EB0041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D001200390012003500180032001E00310025 +0131002D003200360031004200300053002E0066002C007B002B0094002A00 +B5002800E7002700E6002600E5002600E5002500E4002400E4004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003D0012003900110035001000310010002E0016 +002B001D03290023032A002D01290037002700440025005400230066002100 +7900200090002000AF001F00DA001E00DD001E00DC001D00DB001C00DB001C +00DA0041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003F0012003A0011003500100030000E002D000D +002A000E002700140224001B042200230422002D01200038001E0045001B00 +5400190063001700750017008A001700A4001700CA001600D0001500CF0015 +00CE001400CD001400CC004100130041001300410013004100130041001300 +410013004100130041001300410013003B0011003600100031000E002D000D +002A000B0027000A0024000A01200011041D0018061B00210619002B031600 +35021400410112004E0110005E010F006E010E0080010E0097000E00B6000D +00BE000D00BD010C00BB010B00BA010B00BA01430012004300120043001200 +43001200430012004300120043001200400011003A000F0034000D002F000C +002B000A0027000801230007011E0006011B00060218000D07150015091200 +1E080F0027070B002F05090039050600460504005406020067060201770602 +018C050200A7050100AE050000AD050001AD050001AD050001AD053E000F00 +3E000F003E000F003E000F003E000F003E000F003E000F0039000D0032000B +002D00090029000701230005021D0004031A00020317010102140101040E00 +070B0A00100C0500190B0300220A01012A0900033406000542040006510300 +06640200077401000787020006A2030006AB030006AB030006AB030006AB03 +0006AB0336000A0036000A0036000A0036000A0036000A0036000A0036000A +00300008002B000602260004021D0002041901000317030002150500021307 +0003110800040202001100040D0C0007170800092105000B2A01000B340000 +0A4100000A5000000A6100000A7101000A840300089E040008AB040008AB04 +0008AB040008AB040008AB042D0004022D0004022D0004022D0004022D0004 +022D0004022D00040229000203200101031C0300031906000217080002140A +0002110C00020F0E00020B100001000E0206000E0E07000E1706000E200400 +0E2902000E3300000D3F00000D4E00000D5E00000D6F02000D8204000B9A05 +000AAB06000AAB06000AAB06000AAB06000AAB062603000326030003260300 +0326030003260300032603000326030003200500021C080002190B0002150D +0002121000020F1200010B1300000A1400000A1400000011010600110B0700 +11150700111E05001127020011310100113D0000114C0000115C0100106C02 +00107F04000F9707000DAD07000DAD07000DAD07000DAD07000DAD081F0A00 +011F0A00011F0A00011F0A00011F0A00011F0A00011F0A00011B0D00021710 +000213130001101500000B1600000B1600000B1600000C1700000B17000002 +130006001408070015120700151C06001525030015300100153C0000144A00 +0014590100146A0300147D05001395080011AF090011AF090011AF090011AF +090011AF091912000119120001191200011912000119120001191200011912 +000116150001111700000C1800000D1900000D1900000D1900000D1A00000D +1A00000D1A000004170004001706070018100800191A06001A2304001A2E01 +00193A0000194800001857010019670300187A05001793090015B20B0015B2 +0B0015B20B0015B20B0015B20B121A0000121A0000121A0000121A0000121A +0000121A0000121A00000E1B00000E1B00000E1C00000E1C00000E1C00000E +1D00000F1D00000F1D00000F1D0000071A000200190307001B0D08001D1707 +001E2105001E2B02001E3800001D4600001D5501001E6503001E7805001D90 +09001AB60C001AB60C001AB60C001AB60C001AB60C0F1E00000F1E00000F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1F00000F1F000010 +200000102000001020000010210000102100001021000009200001001B0108 +001F0A070021140700231E0500242902002435010023440100235301002463 +030024750500238E080020B40C0020BA0C0020BA0C0020BA0C0020BA0C1122 +00001122000011220000112200001122000011220000112200001122000011 +23000011230000112400001124000011240000112500001125000012250000 +0C25000002200008002308080026110700281B0600292603002A3201002B41 +01002A5102002B6103002B7304002A8C060028B10A0027BC0A0027BC0A0027 +BC0A0028BC0A12260000122600001226000012260000122600001226000012 +26000012270000122700001228000012280000122900001329000013290000 +132A0000132A00000E2B00000428000700290509002C0E07002D1806002F22 +0400322E0200353D0100344D0200345E020034710300338A040032AE050031 +C2050031C2050032C2050032C205132B0000132B0000132B0000132B000013 +2B0000132B0000132B0000132C0000132C0000142D0000142D0000142E0000 +142E0000142E0000142F0000142F00000F300000072F0005002E030B00320C +080034150600361F0500392A03003E380200404902003F5B03003F6F02003F +88010040AF01003FCF01003FCF01003FCF01003FD001153100001531000015 +31000015310000153100001531000015310000153100001532000015330000 +153300001634000016340000163500001635000016360000123700000A3700 +040034010C0039090A003D1206003E1B050041260400463304004A4304004A +5803004B6E01004D8800004DB000004BE200004BE200004BE200004BE30017 +38000017380000173800001738000017380000173800001738000017380000 +17390000173A0000173A0000173B0000183C0000183C0000183D0000183D00 +00143F00000D3F0003023D010C0040070C00460F0800491806004C22050050 +2E0500543E050056520500596B01005C8500005CAA000058EC000058EC0000 +58ED000059ED00194000001940000019400000194000001940000019400000 +19400000194000001941000019420000194300001A4300001A4400001A4400 +001A4500001A46000016470000104900020548000B004B050E00510C0A0057 +1506005B1F05005E29060061380500644B0500686402006B7F00006CA20000 +68E8000068E9000069E9000069E9001B4900001B4900001B4900001B490000 +1B4900001B4900001B4900001B4900001B4A00001B4B00001C4C00001C4C00 +001C4D00001C4E00001C4E00001C4F00001951000013540001095600090058 +020E005E090B00661107006D1B0500722503007432030076420200785A0100 +7D7600007F9A00007DE700007DFF00007DFF00007EFF001D5200001D520000 +1D5200001D5200001D5200001D5200001D5200001D5300001D5400001E5500 +001E5600001E5700001E5800001E5800001E5900001E5A00001B5D00001661 +00000E6400060267000D006D050C00760C08007F140500861E02008A2A0000 +8C3900008E500000916C00009893000093CF000092FF000092FF000092FF00 +1F5E00001F5E00001F5E00001F5E00001F5E00001F5E00001F5E00001F5F00 +00206000002061000020620000206300002064000020650000206500002166 +00001E6A000019700000127600020A7B00070181010B008B050800950B0500 +9F120100A71D0000AC2C0000AC400000B45F0000BD870000BCBA0000B0F700 +00B0F70000B0F700216C0000216C0000216C0000216C0000216C0000216C00 +00216C0000216D0000226E0000226F00002270000022710000227200002273 +00002274000023750000207A00001B830000178B0000129500000C9E000007 +A7000101B3000300C3030100DC0C0000ED1B0000FE2C0000FF4E0000FF6C00 +00FF910000FFB20000FFB20000FFB200> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13003F0018003F001E004100250046002D004B0035005200400058004E005B +005F005C0073005A008B005800AE005E00F9005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013003F0018003F001E004100250045002D004B00350051 +00400057004E005B005F005C0072005A008A005800AC005E00F9005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013003F0017003F001E004100250045 +002D004B0035005100400057004D005B005E005C0071005A0089005800AA00 +5E00F9005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013003F0017003F +001E004100250045002C004B00350051003F0057004D005B005D005C007100 +5A0088005800A9005E00F9005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300400017003F001E004100250045002C004B00350051003F0057004D00 +5B005D005C0070005B0087005800A7005E00F9005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300400017003F001E004100250045002C004B003400 +51003F0057004C005B005C005C006F005B0086005800A5005E00F5005E00F9 +005E00FF005D00FF005B00FF005A00FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300400017003F001E0041002500 +45002C004B00340051003F0057004C005B005C0059006E00550086005000A7 +005200F5005000FF004F00FF004D00FF004C00FF004B00FF00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130040001700 +3F001D004000240044002C00490034004C003D004F004B004E005B004D0070 +004A0087004600A8004400EA004300FB004100FA004000F9003F00F8003E00 +F8004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300400017003E001D003C0024003D002A003F00320041003B0044004A +0042005C00410071003F008A003B00A9003900E0003700F3003600F2003500 +F1003400F0003300EF00410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B00160037001C003500220035002900360031 +0036003B003700490036005D003400710032008A002F00A9002D00D8002C00 +EA002B00EA002A00E9002A00E8002900E80041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003F0012003B001100370010003300140030001A002D0020 +022D0028012D0031002C003C002A004B0029005D0027007100250088002400 +A6002300D0002200E2002100E1002100E1002000E0002000DF004100130041 +00130041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003B0011003600100032000F002F000E002C0011 +002900180226001F04250027022500320023003E0020004C001E005D001C00 +6F001B0084001A009E001A00C3001900D7001900D5001800D4001700D30017 +00D30041001300410013004100130041001300410013004100130041001300 +4100130041001300410013003C0011003700100032000F002E000E002B000D +0028000C0025000F01220017041F001E051E0027021C0032001A003E001700 +4B0015005B0013006B0011007E00110095001100B4001100C8001000C6000F +00C5000F00C4000E00C3004100130041001300410013004100130041001300 +4100130041001300410013003F0012003900110033000F002E000E002A000D +0027000C0024000B0021000A001E000D021B00150418001E04170027011400 +310011003B000E0048000C0057000B0068000900780008008C000800A70008 +00B7000700B5000600B4000600B3000500B2003C0011003C0011003C001100 +3C0011003C0011003C0011003C0011003B001100350010002F000E002B000D +0027000C0023000A001F0009001C0008001900070016000B03130014051100 +1D030E0026010C002E00090037000600440004005000020064000200730001 +01850100019F010001AC010002AC000002AC000002AC000002AC0032000F00 +32000F0032000F0032000F0032000F0032000F0032000F0031000F002C000D +0028000C0023000A001F0009001B0007001700060114000401110003010E00 +0704090011060600190403002103010029030002310100033E0000034C0000 +036100000370000003810000039B010003AB010003AB010003AB010003AB01 +0003AB012B000B002B000B002B000B002B000B002B000B002B000B002B000B +002A000B00250009011F0007011A0005011600030212000202100101020F03 +00020D0400020101000D00030F040005160300051F02000528010005300000 +053B0000054B0000055E0000066D0000067E01000596020004AB020004AB02 +0004AB020004AB020004AB0222000601220006012200060122000601220006 +012200060122000601200006021A0003021601010213020003110400020F06 +00020C090002070D0001060E0000010D010300090C050008140500081D0300 +08260200082F0000083A00000849000008590000086A0000087B0100079203 +0006AB030006AB030006AB030006AB030006AB031801010318010103180101 +03180101031801010318010103180101031802010315040002120700030E0A +00030B0D000207100000071000000710000007100000030F0002000D090600 +0C1306000C1B04000C2402000C2D01000C3800000B4600000B5600000B6701 +000B7902000A8F040009AB050009AB050009AB050009AB050009AB05150900 +0215090002150900021509000215090002150900021509000214090003100D +00020C10000108120000091200000912000009120000091200000913000005 +11000200100606000F1007000F1A060010230300102C01000F3700000F4400 +000F5400000F6401000F7603000E8C05000CA906000CAC07000CAC07000CAC +07000CAC070F1200010F1200010F1200010F1200010F1200010F1200010F12 +00010E1200010A1400000A1400000A1400000A1500000B1500000B1500000B +1500000B160000071400020012030600130D08001317070014210500142A02 +0013350000134200001351000013610100137303001289060010A708000FAE +09000FAE09000FAE090010AE090B1600000B1600000B1600000B1600000B16 +00000B1600000B1600000B1600000C1700000C1700000C1800000C1800000C +1800000D1800000D1900000D1900000A1800010115010700160A0800181407 +00181E0500182803001833010018400000174F0000175F0200177004001786 +070015A40A0014B00B0014B10B0014B10B0014B10B0D1A00000D1A00000D1A +00000D1A00000D1A00000D1A00000D1A00000D1A00000D1A00000E1B00000E +1B00000E1B00000E1C00000E1C00000E1C00000E1D00000C1C000002180006 +001A0807001B1108001D1B06001D2503001D3101001D3E00001C4D01001C5D +02001C6E04001C8307001AA20B0019B50C0019B50C0019B50C0019B50C0F1E +00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F1E00000F +1E00000F1F00000F1F0000101F000010200000102000001020000010210000 +0E210000051C0004001C050800200E08002218060023230400232E0200233B +0000224A0100235A0200236B040023810600219F0A001FB90C001FB90C001F +B90C001FB90C10220000102200001022000010220000102200001022000010 +22000010220000112200001123000011230000112400001124000011240000 +112500001125000010250000082400030020020900250B0700261507002820 +05002A2B02002B3801002A4801002A5802002B6903002B7E0500299C080027 +BC0A0027BC0A0027BC0A0027BC0A1227000012270000122700001227000012 +27000012270000122700001227000012270000122800001228000012290000 +1329000013290000132A0000132A0000112A00000B2B000202280109002B08 +08002D1207002E1C0500302703003334020036430100355502003567030035 +7C0300339A040032C2050032C2050032C2050032C205132C0000132C000013 +2C0000132C0000132C0000132C0000132C0000132C0000142C0000142D0000 +142E0000142E0000142E0000142F0000142F000014300000133000000D3100 +01032F00090030060A00350F070036180600382304003C2F0300413E020041 +50030040640200417B0100409A010041D2010041D2010041D2010041D20115 +32000015320000153200001532000015320000153200001532000015320000 +15330000153400001634000016350000163500001636000016360000163700 +001538000010390000063700080037040C003C0C090040150600411F050045 +2A04004A3904004C4B04004D6103004F7A0000519A00004ED900004EE50000 +4EE500004EE600173A0000173A0000173A0000173A0000173A0000173A0000 +173A0000173A0000173B0000183B0000183C0000183D0000183D0000183E00 +00183F0000193F00001840000012410000094100060040020E00450A0B004B +1207004E1B05005125050055330600584506005B5B04005F76000061950100 +5DC900005CED00005DED00005DED0019430000194300001943000019430000 +194300001943000019430000194300001A4400001A4400001A4500001A4600 +001A4700001A4700001B4800001B4800001A490000154C00000D4D0005014C +000F0051070D00580F09005E18060062220500662E0500683D05006B530400 +6F6D0000728C000070BB00006FF1000070F1000070F1001C4C00001C4C0000 +1C4C00001C4C00001C4C00001C4C00001C4C00001C4D00001C4E00001C4E00 +001C4F00001D5000001D5100001D5100001D5200001D5300001D5400001857 +0000115A0003065C000B0060040E00670A0A0070130600771D04007C280200 +7E3501007F480000826300008784000088B6000085FF000086FF000086FF00 +1E5800001E5800001E5800001E5800001E5800001E5800001E5800001E5800 +001E5900001F5A00001F5B00001F5C00001F5D00001F5D00001F5E00001F5F +00001F6000001B650000156A00010C6D00060271000C0079050A00830C0700 +8D140300941E0100972B0000993C00009C570000A27A0000A6AA00009DFD00 +009DFD00009DFD002065000020650000206500002065000020650000206500 +002065000020650000216600002168000021690000216A0000216B0000216C +0000216C0000226D0000226E00001D750000187C0000138400010C8B000403 +930007009B030600A8070300B80E0000C71A0000D22A0000E1410000E66400 +00E98C0000E3FF0000E1FF0000E1FF00> +<41001300410013004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410014003F001B004000210042002800490031004E003A00550047005A +0057005C0069005B00800058009F005D00E8005E00F9005E00F9005E00F900 +5E00F9005E00F9004100130041001300410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410014003F001B004000210042002800490031004E +003A00550047005A0057005C0069005C007F0058009E005C00DD005E00F900 +5E00F9005E00F9005E00F9005E00F900410013004100130041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +130041001300410013004100130041001300410014003F001A004000210042 +002800490031004E003A00550047005A0056005C0068005C007E0058009C00 +5B00D5005E00F9005E00F9005E00F9005E00F9005E00F90041001300410013 +00410013004100130041001300410013004100130041001300410013004100 +1300410013004100130041001300410013004100130041001300410014003F +001A004000210042002800490030004E003A00550046005A0056005C006800 +5C007D0058009B005A00D0005E00F9005E00F9005E00F9005E00F9005E00F9 +00410013004100130041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +001300410013003F001A003F00210042002800480030004E00390054004600 +5A0055005C0067005C007C00580099005A00CC005E00F9005E00F9005E00F9 +005E00F9005E00F90041001300410013004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +0013004100130041001300410013003F001A003F0021004200280048003000 +4E00390054004500590055005C0067005C007B00580098005900C8005C00FF +005A00FF005800FF005600FF005500FF004100130041001300410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013003F001A003F002100 +42002800480030004D00390054004500560054005600660053007C004E0099 +004C00CC004C00FF004A00FF004800FE004700FD004600FC00410013004100 +13004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +3F001A003F0020004100270042002E00450037004A0043004A005400490067 +0047007E0043009B004000CA003E00F7003C00F6003B00F5003A00F5003A00 +F5004100130041001300410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003C0019003A001F00380026003A002D003C0036003E0042 +003E0053003C0068003A00800037009C003400C8003200EE003100ED003000 +EC002F00EC002E00EC00410013004100130041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003A0011003500170032001E003000240131002C +003100360031004200300054002E0068002C007F002A009B002900C3002700 +E7002600E5002500E5002500E4002400E30041001300410013004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003D0012003900110034000F0031000F002E0015002A001C +032800230429002C012800370026004400240055002200670020007C001F00 +97001F00BB001E00DD001D00DB001C00DA001B00D9001B00D8004100130041 +00130041001300410013004100130041001300410013004100130041001300 +41001300410013003E0012003900110034000F0030000E002C000D0029000D +002600130123001A042100220421002C011E0038001C004500190055001700 +65001500780015008F001500AE001500CF001400CD001300CC001200CB0012 +00CA0041001300410013004100130041001300410013004100130041001300 +4100130041001300400012003A00110034000F0030000E002C000D0028000C +0025000B0022000A001F0011031C0019041A00220319002C00160037001300 +4300100052000E0062000D0073000C0087000B00A1000B00BE000A00BC000A +00BA000900B9000900B8004000120040001200400012004000120040001200 +4000120040001200400012003C0011003600100030000E002C000D0028000C +0024000B0021000A001D0009001A0008001700100415001804120022021000 +2B000D0034000A003F0008004D0006005E0005006E0003007F000200980102 +00AE010201AD000101AD000101AD000101AC00350010003500100035001000 +350010003500100035001000350010003500100032000F002D000D0028000C +0024000B0020000A001C0008001800070015000600130005000F000E040C00 +18030A0020020700280004002F00020039000100480000015B0000016C0000 +017C00000295000001AC000001AC000001AC000001AC000001AC002C000D00 +2C000D002C000D002C000D002C000D002C000D002C000D002C000D0029000C +0025000B0020000A001B0008001700070014000600110004000F0003000D00 +020006000E020300150101001D000000260000002D00000037000001470000 +015A0000016B0000017B00000293000001AB000001AC000001AC000001AC00 +0001AC0024000B0024000B0024000B0024000B0024000B0024000B0024000B +0024000B0021000A001C0008001700070013000500100004000E0002000C00 +0100060000000000000000000E000000140000001D000000250000002C0000 +013600000146000001590000016A000002790000028F000002A9000002AC00 +0002AC000002AC000002AC001A0008001A0008001A0008001A0008001A0008 +001A0008001A0008001A0008001800070013000501100003010E0102010B02 +00010204000002050000020600000206000000030C020003120200031B0100 +03240100032B00000335000003440000045400000467000004760000048B00 +0003A6010003AB010003AB010003AB010003AB011100020211000202110002 +021100020211000202110002021100020211000202100101020E0300010905 +0002040B0000040C0000040C0000040D0000040D0000050D00000009070300 +061104000619030006220200062A0100063400000641000007500000076300 +00077401000687010005A3020005AB020005AB020005AB020005AB030C0700 +020C0700020C0700020C0700020C0700020C0700020C0700020C0700020A0A +0002050E0000050E0000060E0000060F0000060F0000060F0000060F000007 +0F0000000D0304000A0E06000A1705000A2003000A2901000A3200000A3F00 +000A4E00000A6000000A71010009840300089F040007AB040007AB040007AB +040007AB040710000007100000071000000710000007100000071000000710 +00000710000007100000071000000810000008110000081100000811000008 +110000081200000912000001100104000E0B07000E1506000E1E04000E2702 +000E3100000E3D00000D4C00000D5C00000D6D02000D8104000B9A05000AAB +06000AAB06000AAB06000AAB06091200000912000009120000091200000912 +000009120000091200000912000009130000091300000A1300000A1300000A +1400000A1400000A1400000A1500000B150000031200040012080700121207 +00121C060012250300122F0100123B00001249000011590100116A0200117E +0400109707000EAD08000EAD08000EAD08000EAD080B1600000B1600000B16 +00000B1600000B1600000B1600000B1600000B1600000B1600000B1600000C +1700000C1700000C1700000C1800000C1800000C1800000C18000006160003 +0015050700160F08001719060017230400172D020017390000164700001656 +010016670200167B05001594080013B00A0013B00A0013B00A0013B00A0D19 +00000D1900000D1900000D1900000D1900000D1900000D1900000D1900000D +1A00000D1A00000E1A00000E1B00000E1B00000E1B00000E1C00000E1C0000 +0E1C0000081A000100180207001A0B08001C1607001D2005001D2A02001C36 +00001C4400001C5401001C6403001C7805001B92090018B40C0018B40C0018 +B40C0018B40C0F1D00000F1D00000F1D00000F1D00000F1D00000F1D00000F +1D00000F1D00000F1E00000F1E00000F1F00000F1F00000F1F000010200000 +1020000010200000102000000B200001021B0107001E09070020120700221D +0500232703002334010022420100225201002262030023750500228F08001F +B90D001FB90D001FB90D001FB90C1122000011220000112200001122000011 +22000011220000112200001122000011220000112300001123000011240000 +11240000112400001125000011250000122500000D26000004220006002205 +0800260F070027190600292404002A3001002B3E01002A4F01002B6002002B +7304002A8C060028B50A0027BC0A0027BC0A0028BC0A122700001227000012 +27000012270000122700001227000012270000122700001228000012280000 +122800001329000013290000132A0000132A0000132A0000132B00000F2B00 +00072B00040028030A002D0C07002E15060030200400332C0200363A010037 +4A0200365C020036700300358A030034B2040034C3050034C3040034C30414 +2D0000142D0000142D0000142D0000142D0000142D0000142D0000142D0000 +142D0000142E0000142E0000142F0000142F00001430000015300000153100 +0015310000123200000B320003002F000C003309090037120600381C05003B +270400403403004445030043590300436E02004389000045B5000044D60000 +44D6000044D700163400001634000016340000163400001634000016340000 +16340000163400001635000016350000163600001636000016370000173800 +00173800001739000017390000143A00000E3B00010238000B003B060C0041 +0F080043180600452205004A2E04004E3F050050530400526B020054870000 +54B2000051E9000051E9000051E900183D0000183D0000183D0000183D0000 +183D0000183D0000183D0000183D0000183D0000183E0000183F0000193F00 +00194000001940000019410000194200001942000016430000114500000644 +000A0045040E004B0C0A0051150700541E0500572906005C3806005E4C0500 +626602006582000065A8000062EA000062E9000062E9001A4600001A460000 +1A4600001A4600001A4600001A4600001A4600001A4600001A4700001B4800 +001B4800001B4900001B4A00001B4B00001B4B00001C4C00001C4C0000194E +0000145100000A5200070153020E0059080C0061110800681A05006C250400 +6F32040071430300745C0200787900007A9F000078FC000078FC000079FC00 +1D5100001D5100001D5100001D5100001D5100001D5100001D5100001D5100 +001D5200001D5300001D5400001D5500001E5500001E5600001E5700001E58 +00001E5800001C5B0000175F00000F6200050464000C006A040C00720B0900 +7C130500831E020087290100893800008B5000008E6E00009597000090EC00 +008FFF00008FFF001F5E00001F5E00001F5E00001F5E00001F5E00001F5E00 +001F5E00001F5E00001F5F0000206000002061000020620000206300002064 +00002065000020650000216600001F6900001A6F0000147500010C7A000603 +80000A0089040900930A05009E110200A71C0000AC2A0000AD3F0000B55F00 +00BE8A0000B9CD0000B0F70000B1F700> +] 4 { dup 0.1 lt { 1.2 mul 0.02 sub } if + dup 0 lt { pop 0 } if + } bind dup dup dup ] +/RenderingIntent (Perceptual) +>> +setcolorrendering diff --git a/crd/zjs/kh.crd b/crd/zjs/kh.crd new file mode 100644 index 0000000..b760518 --- /dev/null +++ b/crd/zjs/kh.crd @@ -0,0 +1,4682 @@ +<< +/ColorRenderingType 1 +/BlackPoint [0.000000 0.000000 0.000000] +/WhitePoint [0.964200 1.000000 0.824900] +% Bradford Cone Space +/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] +/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ] +% VonKries-like transform in Bradford Cone Space +/TransformPQR [ +{exch pop exch 3 get mul exch pop exch 3 get div} bind +{exch pop exch 4 get mul exch pop exch 4 get div} bind +{exch pop exch 5 get mul exch pop exch 5 get div} bind +] +/EncodeLMN [ +{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +] +/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] +/EncodeABC [ +{ 116 mul 16 sub 100 div } bind +{ 500 mul 128 add 255 div } bind +{ 200 mul 128 add 255 div } bind +] +/RenderTable [ 33 33 33 [ +<000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF> + + + + + + + + +<9D3600009E3600009E370000A03A0000A23C0000A63F0000AB420000B44302 +04BD440609C3420C0FC53E1315BF361B1CBB2F2523B92B3426BA2B4B26BF2B +6126C02B7625BA298B24B224AA249D14DE338802FF3F8802FF3F8803FF3F88 +03FF3F8803FF3F8803FF3F8803FF3F8803FF3F8803FF3F8803FF3F8803FF3F +8803FF3F8803FF3F9E3600009E3600009E380000A03A0000A23C0000A63F00 +00AC420000B4430203BD440609C3430C0EC53F1315BF371B1CBC2F2523BA2B +3426BB2B4A26BF2B6126C02B7625BA298B24B224AA259D14DD338803FF3F88 +03FF408803FF408803FF408803FF408803FF408803FF408803FF408803FF40 +8803FF408803FF408803FF408803FF409E3600009E3700009F380000A03A00 +00A33D0000A7400000AC430000B4440203BD450608C4440B0EC7401215C138 +1B1CBD302423BB2B3327BB2B4927C02C6027C12C7526BB298A25B225A9269F +15DD338903FF408803FF408903FF408903FF408903FF408903FF408903FF40 +8903FF408903FF408903FF408903FF408903FF408903FF409E3600009E3700 +009F380000A03B0000A33D0000A7400000AC430000B4450203BD460608C545 +0B0EC8411215C2391A1CBE322423BC2C3127BC2C4827C12C5E28C22C7427BD +2A8A26B325A727A116DC338904FE418904FF418904FF418904FF418904FF41 +8904FF418904FF418904FF418904FF418904FF418904FF418904FF418904FF +419E3700009F3800009F390000A13B0000A33E0000A7410000AC440000B446 +0203BD460508C6460B0EC9431214C43B1A1BC0332323BD2C3028BD2C4728C2 +2C5D28C42C7328BE2A8926B325A628A218DB338A05FE428904FF428904FF42 +8904FF428904FF428904FF428904FF428904FF428904FF428904FF428904FF +428904FF428904FF429E3700009F3800009F390000A13C0000A33E0000A741 +0000AC440000B4460203BE470508C7470A0DCA441214C53C1A1BC1342222BE +2D2F29BE2C4529C22D5C29C52D7129C02B8827B425A529A419DB338A05FE42 +8A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF +438A05FF438A05FF438A05FF438A05FF439F3800009F380000A03A0000A13C +0000A33F0000A7420000AC450000B4470203BE480507C8490A0DCB451114C7 +3E191BC2352222BF2D2D2ABF2D442AC32D5A2AC62D702AC12B8728B425A42A +A61ADA338B06FD438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF +438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF439F3800009F39 +0000A03A0000A13D0000A3400000A7420000AD460000B4480202BE4A0507C9 +4A0A0DCC471113C940191BC4372122C02E2C2AC12D422BC52E592BC72D6F2B +C32C8629B525A22CA71BD7348C07FD448A06FF448A06FF448A06FF458A06FF +458A06FF458A06FF458A06FF458A06FF458A06FF458A06FF458A06FF458A06 +FF459F390000A03A0000A03B0000A13D0000A4400000A7430000AD470000B4 +490102BE4B0507C94B090CCE481113CC42181AC6392022C22F2A2CC22E402C +C62E572CC92E6D2CC62D852AB726A02DA81BD4368D08FC458B07FF468B07FF +468B07FF468B07FF468B07FF468B07FF468B07FF468B07FF468B07FF468B07 +FF468B07FF468B07FF46A03A0000A03A0000A13C0000A13E0000A4410000A7 +440000AD480000B44B0102BF4C0406CA4D090CD04A1012CF44181AC93B1F22 +C531292BC42F3D2DC82F552ECB2F6C2EC82E842BB9279F2EA91CD0378E09FB +478C07FF478C07FF478C07FF478C07FF478C07FF478C07FF478C07FF478C07 +FF478C07FF478C07FF478C07FF478C07FF47A03A0000A13B0000A13C0000A2 +3F0000A4420000A8450000AD490000B44C0102BF4E0406CA4F090BD24D0F12 +D2471719CC3E1E22C733282BC7303A2FC930522FCD2F6A2FCB2F822DBC289C +30AB1CCB39900BFB488C08FF498C08FF498C08FF498C08FF498C08FF498C08 +FF498C08FF498C08FF498C08FF498C08FF498C08FF498C08FF49A13B0000A1 +3C0000A13D0000A2400000A4430000A8460000AD4A0000B44E0101BF500406 +CB51080BD4500F11D64B1619D0411D22CB36262BC9313730CC304F31D03067 +31CD2F7F2FC0299A32AC1DC73C930DFB498D09FF4A8D0AFF4B8D0AFF4B8D0A +FF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D +0AFF4BA13C0000A23D0000A23E0000A3410000A4440000A8480000AE4C0000 +B54F0101BF520405CB53080AD7530E11DB4F1518D4451C21CF3A252BCC3233 +33CE314B35D2306335D02E7B33C3299735AF1EC33F9312FB4A850BFF50810D +FF50810DFF50810DFF50810DFF50810DFF50810DFF50810DFF50810DFF5081 +0DFF50810DFF50810DFF50A23D0000A23E0000A33F0000A3420000A5450000 +A8490000AE4E0000B5510101BF540305CC56070ADA560D10DE521417D8491A +21D33D222BCE312D37CF304439D32E5D3AC5377834AF3392379B2EBD3B7617 +F7535B06FF645603FF685503FF685503FF685503FF685503FF685503FF6855 +03FF685503FF685503FF685503FF685503FF68A33E0000A33F0000A3400000 +A4430000A5470000A84B0000AE500000B5530101BE560304CC590709DB590C +0FE0561216DC4C1821D8421F2CD132273BBF3D4137B2445C36A13F703D9340 +8B3E8238B0435D1CF1583800FF753600FF763500FF763500FF763500FF7635 +00FF763500FF763500FF763500FF763500FF763500FF763500FF76A33F0000 +A4400000A4420000A4450000A5480000A84C0000AD510000B4550001BD5802 +03CB5B0608DA5D0B0EE35A1016E1501521CF512126B653302BA15243339551 +57398B526E3C8150863F794FAD404729EB581300FF7F1000FF801000FF8010 +00FF801000FF801000FF801000FF801000FF801000FF801000FF801000FF80 +1000FF80A4410000A5420000A5430000A4460000A64A0000A84E0000AC5200 +00B3560000BC5A0203CA5E0507DA600A0CE65E0E15CE651A19B36624209C63 +2E298C603E32815F523B775E6840715F823F695DA940413DE3560313FF8003 +15FF800315FF800315FF800315FF800315FF800315FF800315FF800315FF80 +0315FF800315FF800315FF80A5420000A6430000A6450000A5480000A64C00 +00A8500000AB540000B1580000BB5D0202C8610506D365080BBC6C1010AB71 +18179A72211E8B712B267E713A2F716F4D38676D633C626E7E3B5D6FA23B44 +5FDD46002CFF77002EFF76002FFF76002FFF76002FFF76002FFF76002FFF76 +002FFF76002FFF76002FFF76002FFF76002FFF76A6440000A7450000A74600 +00A64A0000A64D0000A8520000AB560000B05A0000B95F0102BB650405AC6C +07099F730C0F957814148A7C1D1B7E7F2723707E342B637D4632597B5C3755 +7D7635527F94334A7EC9340050FF6B0052FF6A0052FF6A0052FF6A0052FF6A +0052FF6A0052FF6A0052FF6A0052FF6A0052FF6A0052FF6A0052FF6AA74600 +00A8470000A8480000A74C0000A6500000A8530000AA570000AE5C0000AB62 +01019E690304967205088E7A0A0C878210127E891918738D231F638E2D2652 +8B3B2F4C8B53314A8E6D2F4690882D4492B12C0675F65E0776F55D0776F55D +0776F55D0776F55D0776F55D0776F55D0776F55D0776F55D0776F55D0776F5 +5D0776F55DA9480000A9490000A94B0000A84E0000A7510000A7550000A959 +0000A05E0000936401018D6E020388780406828207097B8D0D0F7296151466 +9D1D1B569E2522489D3328409F492B3EA364293AA67C2838AB9C2719A0EA42 +1AA2EB401AA3EB401AA3EB401AA3EB401AA3EB401AA3EB401AA3EB401AA3EB +401AA3EB401AA3EB401AA3EB40AB4B0000AC4B0000AB4D0000A9510000A754 +0000A75700009B5A00008C5F000085680101807301027C7D0304778905066F +97080A65A40E1058AE15164CB41E1C3FB82B2337BD3F2533C5582430CF7023 +2DD98B2320DBC62D1EDCCF2F1EDCCF2F1EDCCF2F1EDCCF2F1EDCCF2F1EDCCF +2F1EDCCF2F1EDCCF2F1EDCCF2F1EDCCF2F1EDCCF2FAE4D0000AF4E0000AE50 +0000AA530000A85500009A580000885B00007E610000796B00007577000072 +8201016C90020364A204065CB6080A50C60F0F43D417163AE3241B27EC2E25 +15EE3A320AF6513909F86E390BFD92360CFF9C340CFF9C340CFF9C340CFF9C +340CFF9C340CFF9C340CFF9C340CFF9C340CFF9C340CFF9C340CFF9C34B050 +0000B1510000B0520000AB5500009C570000865800007A5D0000736500006F +6F00006B7B000066880000609A00005AAF010253C6050548DA0B0B3CEC1512 +20F713230AFE153406FF2F3303FF4D3302FF683305FF843106FF912F06FF91 +2F06FF912F06FF912F06FF912F06FF912F06FF912F06FF912F06FF912F06FF +912F06FF912FB3530000B3530000B3540000A1560000875600007959000070 +5F00006A67000066720000617E00005B8C0000569E000051B4020249CA0605 +3DD90C0B33EC171116F8102408FE1D2D03FF362E01FF542D01FF6C2D03FF84 +2D03FF932C03FF932C03FF932C03FF932C03FF932C03FF932C03FF932C03FF +932C03FF932C03FF932C03FF932CB5550000B5550000A85500008A53000079 +5400006E59000067600000626900005D74000057800000518F00004EA20000 +48B702023EC7060634D90E0B2AEE181114FA172008FF252701FF3E2900FF59 +2801FF6F2801FF842901FF962801FF962801FF962801FF962801FF962801FF +962801FF962801FF962801FF962801FF962801FF9628B5550000AD5500008D +5100007A5100006D530000655900005E610000596A0000547600004E830000 +4992000045A500003EB6020234C507062ADA0E0C22F0181212FC1E1C04FF2A +2400FF442300FF5D2200FF722301FF852408FFA51D08FFA51D08FFA51D08FF +A51D08FFA51D08FFA51D08FFA51D08FFA51D08FFA51D08FFA51D08FFA51DB3 +5500008F5000007C4D00006E4F0000635300005C59000057620000516C0000 +4C78000046860000419500003CA5000034B302022BC6070723DE0E0C1CF419 +120DFE211B00FF302100FF491E00FF601E00FF741F00FF85200FFFB7140FFF +B7140FFFB7140FFFB7140FFFB7140FFFB7140FFFB7140FFFB7140FFFB7140F +FFB7140FFFB714905100007D4D00006F4B0000634E00005B530000555A0000 +4F6300004A6E0000437B00003D8800003895000032A400002BB3030324C808 +071DE20F0D16F8191105FF211B00FF351D01FF4D1A01FF631900FF761B00FF +861C0AFFB6140BFFBF130BFFBF130BFFBF130BFFBF130BFFBF130BFFBF130B +FFBF130BFFBF130BFFBF130BFFBF137C4D00006E4A0000634A00005A4E0000 +535400004E5C000048650000427100003B7E0000358900002F9500002AA300 +0024B503031ECC080817E60F0D0BF8161501FF221A00FF3B1902FF511501FF +651500FF791800FF861806FFB31307FFBB1207FFBB1207FFBB1207FFBB1207 +FFBB1207FFBB1207FFBB1207FFBB1207FFBB1207FFBB126E4A000063490000 +5A4A0000534F00004D560000475E0000416900003A750000337F00002D8A00 +002896000023A501011EB8040418D0080812E9100C04F9161500FF271600FF +3F1401FF541100FF671200FF7A1401FF88140EFFB3090EFFBB080EFFBB080E +FFBB080EFFBB080EFFBB080EFFBB080EFFBB080EFFBB080EFFBB080EFFBB08 +6149000059490000524A00004C5000004658000040620000396D0000327800 +002C820000268B0000229700001EA8010119BC040413D409080EEA120B04F9 +1C1100FF2C1200FF431000FF570E00FF690F00FF7B1007FF8D0B10FFB1020E +FFB6030EFFB6030EFFB6030EFFB6030EFFB6030EFFB6030EFFB6030EFFB603 +0EFFB6030EFFB60358490000514900004C4B000046520000405B0000396500 +00327000002B7A000025830000218E00001D9A000019AB010213BF04050ED6 +0A080AEC150902FA200E04FF330B00FF470C00FF5A0B00FF6B0B00FF7B0C04 +FF8B090DFFAE010EFFB4000EFFB4000EFFB4000EFFB4000EFFB4000EFFB400 +0EFFB4000EFFB4000EFFB4000EFFB400> +<9B3100009B3100009B3200009C3300009E350000A1370000A5390000AA3901 +02B1390507B7380A0DB8341114B42C191BB0272420B0253321AF254821B325 +5E21B5267220B024861FAB229F1EA41BD0218901FD378700FF368700FF3687 +00FF368700FF368700FF368700FF368700FF368700FF368700FF368700FF36 +8700FF368700FF369B3100009B3200009C3200009C3400009E360000A13700 +00A5390000AA3A0102B23A0507B8390A0DBA351113B52E191BB1282320B026 +3221B0254721B4265D21B5267121B1258520AC229E1FA51CCE218902FC3886 +00FF368600FF378600FF378600FF378600FF378600FF378600FF378600FF37 +8600FF378600FF378600FF378600FF379B3100009B3200009C3300009D3400 +009E360000A1380000A53A0000AB3B0102B23B0407B93A0A0CBB361113B62F +191AB2292320B1263122B1264721B5265D21B6277121B2258520AD239E1FA6 +1CCC218A02FB388600FF378600FF378600FF378600FF378600FF378600FF37 +8600FF378600FF378600FF378600FF378600FF378600FF379B3200009C3200 +009C3300009D3500009F370000A2390000A63A0000AB3B0102B33C0406BA3B +090CBC371013B730181AB32A221FB2273022B1264622B5275C22B7277021B4 +268420AE239D1FA71DCB218A02FA398600FF388600FF388600FF388600FF38 +8600FF388600FF388600FF388600FF388600FF388600FF388600FF388600FF +389B3200009C3300009C3300009D3500009F370000A2390000A63B0000AB3C +0102B33C0406BB3C090CBD391013B831181AB42B221FB3272F23B2274522B6 +275B22B8286F22B5268421AF249C20A81EC9218A03F83A8600FF398600FF39 +8600FF398600FF398600FF398600FF398600FF398600FF398600FF398600FF +398600FF398600FF399C3300009C3300009D3400009D3600009F380000A23A +0000A63C0000AC3D0102B43E0406BC3D090CBE3A1012BA331819B62C211FB4 +282E23B3284422B7285A22B9286E22B6278321B0249B20A91FC8228B04F73A +8600FF3A8600FF3A8600FF3B8600FF3B8600FF3B8600FF3B8600FF3B8600FF +3B8600FF3B8600FF3B8600FF3B8600FF3B9C3300009C3400009D3400009E36 +00009F380000A23A0000A63C0000AC3E0101B43F0406BD3F080BBF3B0F12BC +351719B72E211FB5282D24B4284223B8295823BA296D22B8288222B1259A21 +AB20C6228B04F63B8600FF3C8600FF3C8600FF3C8600FF3C8600FF3C8600FF +3C8600FF3C8600FF3C8600FF3C8600FF3C8600FF3C8600FF3C9C3400009D34 +00009D3500009E370000A0390000A33B0000A73D0000AD3F0101B5400405BE +40080BC13D0F12BE371719B930201FB6292C24B6294123B92A5723BC2A6C23 +BA298122B2269922AD22C5228C05F53C8701FF3D8701FF3D8701FF3D8701FF +3D8701FF3D8701FF3D8701FF3D8701FF3D8701FF3D8701FF3D8701FF3D8701 +FF3D9D3400009D3500009E3600009E380000A03A0000A33C0000A73E0000AD +410101B6420305BF42080BC23F0F11C0391718BB311F1FB82A2A25B72A3E24 +BB2A5525BE2B6A24BC2A8024B3269723AE22C2238D06F53E8702FF3E8702FF +3E8702FF3E8702FF3E8702FF3E8702FF3E8702FF3E8702FF3E8702FF3E8702 +FF3E8702FF3E8702FF3E9D3500009E3600009E3700009F380000A13B0000A4 +3D0000A8400000AE420001B7440305C044070AC4410E11C33C1618BE341E1F +BA2C2925B92B3C26BC2B5226C02B6826BF2B7F25B6279525B023BF248F08F4 +3F8803FF3F8803FF408803FF408803FF408803FF408803FF408803FF408803 +FF408803FF408803FF408803FF408803FF409E3600009E3700009F3700009F +390000A13C0000A43E0000A9410000AE440000B7450304C046070AC6440D10 +C63F1517C1371D1FBD2F2725BB2C3927BE2C5028C22C6628C22C7D26B92893 +26B124BB26910AF4408904FF418904FF418904FF418904FF418904FF418904 +FF418904FF418904FF418904FF418904FF418904FF418904FF419E3700009F +3800009F380000A03A0000A23D0000A5400000A9430000AE460000B7470304 +C1480709C9470D0FCA421416C43A1C1EC0322625BE2D3529C02D4D29C42D64 +2AC42C7A28BC299128B224B729950CF4428A05FF438A05FF438A05FF438A05 +FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A +05FF439F3800009F390000A03A0000A13B0000A23E0000A5410000A9440000 +AF470000B7490204C14A0609CB4A0C0FCF461316C93E1B1DC4352425C12E31 +2BC22E492CC72E612CC72D772BC02B8F2AAF27B22B9115F4407D0AFF477A0B +FF47790CFF47790CFF47790CFF47790CFF47790CFF47790CFF47790CFF4779 +0CFF47790CFF47790CFF47A0390000A03A0000A13B0000A13D0000A23F0000 +A5430000A9460000AF490000B74C0203C24D0608CF4E0B0ED24A1215CE421A +1DC9392225C5302D2DC62F452EC4345E2BB639742BA8388B2B9C35AB2B8525 +ED3D5603FF5D5201FF5F5001FF615001FF615001FF615001FF615001FF6150 +01FF615001FF615001FF615001FF615001FF61A03B0000A13B0000A13C0000 +A23E0000A3410000A5440000AA480000AF4C0000B74E0203C3500507D0510A +0DD64F1114D448191CCE3E2024C5392C2BB03E422DA140583097416D328D40 +8332873FA2327C37DE393700FF6B3500FF6C3300FF6C3300FF6C3300FF6C33 +00FF6C3300FF6C3300FF6C3300FF6C3300FF6C3300FF6C3300FF6CA13C0000 +A23D0000A23D0000A2400000A3430000A6460000AA4A0000B04E0000B85101 +02C3540406D1550A0CDA541013DB4E171BBF4E2120A54B2C29944A3D308748 +50367F4A6738784A7D39734A9B386C45D43B1400FF771100FF781000FF7810 +00FF781000FF781000FF781000FF781000FF781000FF781000FF781000FF78 +1000FF78A23D0000A33E0000A33F0000A3410000A4440000A6480000AA4C00 +00B0510000B7540101C3570406D159090BD55A0E11BA5E1717A45E211E915A +2A268257392F76554B386C55613C6555783C6256983A5951CC3E0513FD7804 +14FD780315FD770315FD770315FD770315FD770315FD770315FD770315FD77 +0315FD770315FD770315FD77A33F0000A4400000A4410000A4430000A54700 +00A64A0000A94E0000AF530000B6560101C15A0305BF5F0709AD650D0F9E68 +15158F691E1B826927247467352C676446355D645B39586474395565923652 +65C334042CFC6D012CFE6F012EFE6E012EFE6E012EFE6E012EFE6E012EFE6E +012EFE6E012EFE6E012EFE6E012EFE6E012EFE6EA5410000A5420000A64300 +00A5450000A5480000A64C0000A9500000AE550000B4590001AC5F0304A065 +0608956B0B0E8C70131382751B19757724216775302959733F30507254344D +736E324B748A304974B42E0A4CF45B0048FF630049FF620049FF620049FF62 +0049FF620049FF620049FF620049FF620049FF620049FF620049FF62A64300 +00A6440000A7450000A6470000A64B0000A74F0000A9530000AC5700009F5C +0001956302048D6B05078673090B7F7A0F11768118176A83211E5A83292549 +81342C42814A2E4283672C3F84812B3E85A2291472E349056AF956056BF856 +056BF856056BF856056BF856056BF856056BF856056BF856056BF856056BF8 +56056BF856A7460000A8460000A8470000A74A0000A74D0000A7510000A855 +0000975800008C5F010185670203807104057A7A070973830C0E698B13145C +911B1A4E92232140912E273891422837955E2735967726339994252396D130 +1B92FD381B94FD371B94FD371B94FD371B94FD371B94FD371B94FD371B94FD +371B94FD371B94FD371B94FD37A9480000A9490000AA4A0000A94D0000A74F +0000A753000092550000855A00007E620001796C0102757603046F81050667 +8C080A5C960E0F509D141543A21D1C37A5282230A73B232DAC55222CB46D21 +2BBA882024BDB6231ABAE32D19BBE32D19BBE32D19BBE32D19BBE32D19BBE3 +2D19BBE32D19BBE32D19BBE32D19BBE32D19BBE32DAB4B0000AC4C0000AD4D +0000AB500000A95300009153000081560000785C0000726500006E7000006A +7B0101638702035B96040653A5080A48B00E103BB9171631C4211C2BCE331D +20D544231ADE5E2519E8772517EA952613EBBE2813ECBE2813ECBE2813ECBE +2813ECBE2813ECBE2813ECBE2813ECBE2813ECBE2813ECBE2813ECBE28AF4E +0000B04F0000B0500000AD5200009252000080530000745800006D5F000068 +690000647400005E8100005890000053A401014DBA030343CD090838E0120D +26F316180BFD102C06FF2A2C01FF472D01FF642C02FF7D2D03FF942B03FF94 +2B03FF942B03FF942B03FF942B03FF942B03FF942B03FF942B03FF942B03FF +942B03FF942BB2510000B2520000B35300009652000080520000735500006A +5B0000636300005E6D00005A780000548600004E9600004BAB000043BF0303 +38CD09082EE0120E1FF517180CFE1C2404FF312700FF4D2800FF682701FF7F +2802FF982602FF992602FF992602FF992602FF992602FF992602FF992602FF +992602FF992602FF992602FF9926B4540000B5550000995300008250000073 +51000068550000615C00005B640000566E0000507B00004B89000046990000 +41AC000038BB03032ECD0A0925E3120F1BF81B1509FF222100FF372400FF53 +2200FF6B2201FF7F2308FFA11D0AFFA91B0AFFA91B0AFFA91B0AFFA91B0AFF +A91B0AFFA91B0AFFA91B0AFFA91B0AFFA91B0AFFA91BB55500009B53000083 +4E0000744D0000675000005F550000585C0000536500004E710000487E0000 +428B00003E9B000037AB00002FBA040426CF0A091FE7130F15FD1C1504FF27 +1F00FF3D1F00FF571D00FF6E1E00FF801F0AFFA4170EFFBB140EFFBB140EFF +BB140EFFBB140EFFBB140EFFBB140EFFBB140EFFBB140EFFBB140EFFBB149D +530000834E0000744B0000674C00005E50000057560000515E00004B670000 +457300003F8000003A8D0000349A00002DA8000027BB040420D30B0A18EB13 +0F0CFE1B1600FF291D00FF431A01FF5A1800FF701A00FF811B06FF9F170BFF +CB110BFFCB110BFFCB110BFFCB110BFFCB110BFFCB110BFFCB110BFFCB110B +FFCB110BFFCB11834E0000734B0000674900005D4B00005650000050570000 +4A600000446A00003D77000036820000308D00002B9A000026AA010120BF05 +051AD70B0A11EF121002FF181900FF2E1801FF471602FF5D1300FF721600FF +821705FF9E1307FFDC1007FFDC1007FFDC1007FFDC1007FFDC1007FFDC1007 +FFDC1007FFDC1007FFDC1007FFDC10734B0000664900005D490000554B0000 +4F51000049590000436300003C6E0000357900002E840000298F0000249B00 +0020AC01021BC3050614DB0B0A0BF0130F01FF1D1600FF331401FF4B1101FF +5F1000FF731200FF84140DFFA10805FFDF0D05FFDF0D05FFDF0D05FFDF0D05 +FFDF0D05FFDF0D05FFDF0D05FFDF0D05FFDF0D05FFDF0D654900005B490000 +544900004E4C000048530000425C00003B660000347200002D7C0000278500 +00239000001F9E00001AB0020215C605060FDD0D0909F1170D00FE221201FF +380F00FF4E0E00FF620D00FF750F03FF870D0FFFA20205FFD70905FFD70905 +FFD70905FFD70905FFD70905FFD70905FFD70905FFD70905FFD70905FFD709 +5A490000534900004D4A0000474E0000415600003B600000346A00002D7500 +00277E0000228800001E9300001AA1000015B302030FC906060ADE0E0806F3 +1A0A05FE290904FF3F0800FF510A00FF640900FF760B01FF860B09FFA10407 +FFCC0407FFCC0407FFCC0407FFCC0407FFCC0407FFCC0407FFCC0407FFCC04 +07FFCC0407FFCC04514900004B4A0000464C0000415100003B5A0000346400 +002D6E000027780000218100001D8A00001996000015A4000110B502030ACA +060607E0100707F41F0509FE300003FF420400FF540600FF660600FF760701 +FF860706FF9F0208FFC40008FFC40008FFC40008FFC40008FFC40008FFC400 +08FFC40008FFC40008FFC40008FFC400> +<952B0000962C0000962C0000972D0000992E00009B3000009E310000A23101 +02A8300406AD2E090BAE2A1012AA23171AA620221DA620311EA71F451DA81F +5A1DAA206D1DA71F801CA31E961BA41CC11A8D03F92D8700FF2B8700FF2B87 +00FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B +8700FF2B8700FF2B952B0000962C0000972D0000972D0000992F00009B3000 +009F310000A3320102A8310405AD2F090BAF2B0F12AB241619A721211DA720 +301EA820451DA91F591EAB206D1DA8207F1CA41E951BA41CBF1A8D04F82D87 +00FF2C8700FF2C8700FF2C8700FF2C8700FF2C8700FF2C8700FF2C8700FF2C +8700FF2C8700FF2C8700FF2C8700FF2C962C0000962C0000972D0000982E00 +009A2F00009C3100009F320000A3320102A9320405AE30080BB02C0F11AC25 +1619A822211DA7202F1EA820441EAA20591EAC216C1DA9207F1DA51E951CA4 +1CBE1A8E05F62D8700FF2C8700FF2C8700FF2D8700FF2D8700FF2D8700FF2D +8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D962C0000972D00 +00982E0000982E00009A3000009C310000A0320000A4330101A9320405AF31 +080BB12D0F11AD261619A923201DA8212E1FA921431EAB20581EAD216B1EAA +217E1DA61F941CA51DBC1B8E06F52D8700FF2D8700FF2D8700FF2D8700FF2D +8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF +2D972D0000972D0000982E0000992F00009A3100009D320000A0330000A434 +0101AA330305B032080AB22F0F11AE281618AA24201DA9212D1FAA21421EAB +21571FAD226A1EAB217E1DA71F931CA51DBB1B8F07F32D8700FF2E8700FF2E +8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF +2F8700FF2F8700FF2F972D0000982E0000992F00009A3000009B3100009D33 +0000A0340000A5350101AA340305B133070AB3300E10B0291518AC251F1DAA +222C20AA22411FAC22561FAF22691FAD227D1EA820921DA61EB91C9008F12D +8700FF308700FF308700FF308700FF308700FF308700FF308700FF308700FF +308700FF308700FF308700FF308700FF30982E0000992F0000993000009A30 +00009C3200009E330000A1350000A5360101AB360304B235070AB4320E10B1 +2B1518AD261F1DAB232B20AB23401FAD22541FB023681FAF237C1EA921911D +A71FB71C9109EF2E8700FF318700FF318700FF318700FF318700FF318700FF +318700FF318700FF318700FF318700FF318700FF318700FF31992F00009A30 +00009A3000009B3100009C3300009E340000A1360000A5370101AC370304B3 +360709B6330D10B32D1417AF281E1DAD232A21AD243E20AE235320B1246720 +B1247B1FAB22901EA820B41D920AEC2E8700FF338700FF338700FF338700FF +338700FF338700FF338700FF338700FF338700FF338700FF338700FF338700 +FF339A3000009A3100009B3100009B3200009C3400009F350000A2370000A6 +380001AC390204B4380609B7350D0FB6301417B12A1D1DAE242822AE253C20 +B0245120B3256620B3257A20AC238F1FA920B21D930CEA2E8700FF358700FF +358700FF358700FF358700FF358700FF358700FF358700FF358700FF358700 +FF358700FF358700FF359B3100009B3100009B3200009C3300009D3400009F +360000A2380000A73A0000AD3B0203B53A0609B9380C0FB8331316B42C1C1C +B0262722B0263A21B1254F21B5266421B5267920AF248E20AB22AF1E950EE6 +2E8600FF378600FF378600FF378600FF378600FF378600FF378600FF378600 +FF378600FF378600FF378600FF378600FF379B3200009C3200009C3300009C +3400009D350000A0370000A3390000A73C0000AE3D0203B63C0608BB3A0B0E +BC361315B62F1B1CB3282622B2273722B3274D22B7286222B8287821B2258C +20AD23AC1F9810E02E8600FF398600FF398600FF398600FF398600FF398600 +FF398600FF398600FF398600FF398600FF398600FF398600FF399C3300009C +3300009D3400009D3500009E370000A0390000A43B0000A83E0000AF3F0203 +B73F0508BE3E0B0EBF3A1214BA321A1CB62B2421B5283423B5284A23BA2960 +23BB297622B5278A21B024A9209A13DB2E8600FF3C8600FF3C8501FF3C8401 +FF3C8401FF3C8401FF3C8401FF3C8401FF3C8401FF3C8401FF3C8401FF3C84 +01FF3C9C3400009D3500009D3500009E3600009F380000A13A0000A53D0000 +A93F0000B0410202B9420507C1410A0DC33E1113BE36191BBA2F2321B82A31 +25B82A4724BC2B5D25BE2B7324B4298824A528A424901BD42F7508FF417108 +FF426F08FF436E08FF436E08FF436E08FF436E08FF436E08FF436E08FF436E +08FF436E08FF436E08FF439D3500009E3600009E3700009F3700009F3A0000 +A23C0000A53F0000AA420000B1440102BA450406C445090CC6421013C33B18 +1ABE332121BB2C2D27BB2B4227B0315927A6336D289B33822991319E298327 +CE305404FE544F01FF574D01FF594C00FF594C00FF594C00FF594C00FF594C +00FF594C00FF594C00FF594C00FF594C00FF599E3700009F3700009F380000 +9F390000A03B0000A33E0000A6410000AB440000B1470101BB480406C44808 +0BCA460F12C9401719C3381F21B0332928A0363C2A9439512D8B3A662F833A +7B307E3A962F7736C3313C07F95D3200FF643000FF652F00FF652F00FF652F +00FF652F00FF652F00FF652F00FF652F00FF652F00FF652F00FF659F380000 +A0390000A03A0000A03B0000A13D0000A3400000A6430000AB460000B14A00 +01BB4B0305C54C070ACE4B0E10CA481517AE471E1E974328268941372D7C3F +493375415F356E42743669428F356741B9341E0CF3631201FE701001FE7010 +01FE701001FE701001FE701001FE701001FE701001FE701001FE701001FE70 +1001FE70A03A0000A13B0000A13B0000A13C0000A23F0000A3420000A64500 +00AC490000B24D0001BB4F0304C6500709BF540C0FAA57151697561E1C8752 +2724784E332C6B4B4435614C59395B4C6F39584C8A37574DB3352024EE5705 +14FA6F0515FA6F0415FA6F0415FA6F0415FA6F0415FA6F0415FA6F0415FA6F +0415FA6F0415FA6F0415FA6FA13C0000A23D0000A23D0000A33E0000A34100 +00A4440000A7480000AC4C0000B2500001BB530203AF590608A15D0B0E9460 +131487621C1A796024216B5D2F2A5D5A3E32535A52364F5B6B354C5B86344B +5CAD30213EE84A032BFD68022CFD67022DFD67022DFD67022DFD67022DFD67 +022DFD67022DFD67022DFD67022DFD67022DFD67A33E0000A33F0000A43F00 +00A4400000A4430000A5470000A74B0000AC4F0000B1530000A1590203965E +05088C640A0C836911117A6D19176C6D211F5D6C2A264C6A332D4369473144 +6A652F426A802D426BA12B275EDE390245FD5B0246FD5A0246FD5A0246FD5A +0246FD5A0246FD5A0246FD5A0246FD5A0246FD5A0246FD5A0246FD5AA44000 +00A5410000A5420000A5430000A5460000A5490000A74D0000A75100009656 +00008C5D0203856405067E6B080A77720E0F6E781715617A1E1C517A252340 +782D293978412B387A5C2A397A7928387B97272974CA2D005FFF500060FF4F +0061FF4F0061FF4F0061FF4F0061FF4F0061FF4F0061FF4F0061FF4F0061FF +4F0061FF4FA6430000A6440000A6440000A7450000A6480000A64C0000A150 +00008F530000855901017E610203796A0405727207086B7B0C0D6181131354 +8619194687201F3887292530873B262E8A55252F8B71242F8D8C222D8FB922 +1082FD3A1083FD391084FD391084FD391084FD391084FD391084FD391084FD +391084FD391084FD391084FD39A7450000A8460000A8470000A9480000A74B +00009F4E00008A5000007F540000775B0001726501026D6F0303677905065F +83080A548B0E0F489114153C951B1B309826212A993721289C4F2028A1691F +28A7831E26A8A81E12A4F52D12A4F52D12A5F52D12A5F52D12A5F52D12A5F5 +2D12A5F52D12A5F52D12A5F52D12A5F52D12A5F52DA9490000AA4A0000AB4A +0000AC4B0000A14E0000894E00007B510000725700006C5F00006769000062 +7301015B7F0203548B05064B97080A409F0E1033A6151629AE1F1C25B62F1C +22BB461B24C9611A22D2781A1ED4951C16D3DF2115D4E02015D5E02015D5E0 +2015D5E02015D5E02015D5E02015D5E02015D5E02015D5E02015D5E020AC4C +0000AD4D0000AE4E0000A54E00008A4D0000794E00006E530000675A000061 +6300005C6D000057790000508600004B96010144A704043AB408092FC30F0F +25D419151FEA251817FB381B06F8492504F9642603FD7D280AFFA3210DFFAF +1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFF +AE1E0DFFAE1EB04F0000B1500000A85100008C4D00007A4D00006D50000064 +5600005D5E000058670000537300004D800000478F000043A100003CB20101 +33C1060529D70D0B21EE161112FD1D1B03FF2B2300FF472100FF622100FF7A +2204FF971F0BFFAC1A0BFFAC190BFFAC190BFFAC190BFFAC190BFFAC190BFF +AC190BFFAC190BFFAC190BFFAC19B3530000AF5400008C5000007B4C00006D +4E0000625200005B58000055600000506900004A760000448300003F920000 +3AA1000032AF02022AC3060622DB0D0B1AF218110DFE221900FF311F00FF4C +1C00FF651C00FF7B1E05FF971A0DFFBE130DFFBE130DFFBE130DFFBE130DFF +BE130DFFBE130DFFBE130DFFBE130DFFBE130DFFBE13B45500008C5000007A +4C00006D4A0000614D000059520000535900004E610000486C000041790000 +3B850000359200002F9F000029AF020223C506061CDF0D0C13F6171102FF1F +1C00FF371B01FF501701FF681800FF7D1A02FF93190AFFCF110AFFCF110AFF +CF110AFFCF110AFFCF110AFFCF110AFFCF110AFFCF110AFFCF110AFFCF118D +500000794C00006B4A000061490000584D0000525300004C5B000046640000 +40700000397B0000328600002C920000279F000022B203031DC9070715E30E +0C08F6141501FF221800FF3C1602FF541300FF6A1400FF7F1605FF941306FF +E00F06FFE00F06FFE00F06FFE00F06FFE00F06FFE00F06FFE00F06FFE00F06 +FFE00F06FFE00F794C00006A4A00005F49000058490000514E00004B540000 +455D00003F68000037730000307E00002A8800002593000021A201011CB503 +0317CD070710E50F0B05F7181200FF281400FF401200FF571000FF6B1100FF +81120CFF9A0804FFDF0C01FFF10E01FFF10E01FFF10E01FFF10E01FFF10E01 +FFF10E01FFF10E01FFF10E01FFF10E694A00005E4900005649000050490000 +4A4F0000445700003E610000376C00002F77000029800000248A0000209600 +001CA5010117B9030411D107070CE7120A05F71D0E02FF2D0E00FF450D00FF +590C00FF6D0D00FF810E0BFF9A0405FFD70800FFF90B00FFF90B00FFF90B00 +FFF90B00FFF90B00FFF90B00FFF90B00FFF90B00FFF90B5D49000054490000 +4E4A0000494B0000435100003D5A0000366500002F6F000029790000238200 +001F8C00001B99000016A8010111BC03040CD2080708E8140805F8210908FF +360501FF480900FF5C0900FF6F0900FF810A06FF990508FFCB0202FFED0602 +FFED0602FFED0602FFED0602FFED0602FFED0602FFED0602FFED0602FFED06 +534900004D4A0000474B0000434D00003D550000365E00002F690000287300 +00237C00001E8500001A8F0000169C000011AB01010CBE040407D4080606EA +170607F9260206FF390100FF4B0500FF5F0500FF700501FF820605FF970208 +FFC40002FFE10402FFE10402FFE10402FFE10402FFE10402FFE10402FFE104 +02FFE10402FFE1044B4A0000464C0000414E00003C500000365800002F6200 +00286C0000237600001E7E00001987000015920000119E00000CAD010207BE +040404D60C0403EB1A0304FA280102FF3B0100FF4E0200FF610200FF720202 +FF830103FF960004FFBA0003FFD30003FFD30003FFD30003FFD30003FFD300 +03FFD30003FFD30003FFD30003FFD300> +<8F250000902600009126000091270000922800009429000097290000992900 +019D280304A126080AA3220E10A01D15189F1B201A9F1B2E1A9F1B421AA01A +551AA11A68199F1A7B199D198E189C17AF16940CE81D8500FF218500FF2285 +00FF228500FF228500FF228500FF228500FF228500FF228500FF228500FF22 +8500FF228500FF229025000090260000912700009227000093280000952900 +00972900009A2900019E280304A226080AA4230E10A11D15189F1C201A9F1B +2E1BA01B411AA01A551AA21B681AA01B7A199D198E189D18AE17950DE71D85 +00FF228500FF228500FF228500FF228500FF228500FF228500FF228500FF22 +8500FF228500FF228500FF228500FF22902600009126000091270000922800 +0093290000952A0000972A00009A2A00019E290304A3270809A5240E10A21E +1418A01C1F1AA01C2D1BA01B401AA11B541AA21B671AA11B7A199E1A8D189D +18AD17960EE61D8600FF238600FF238600FF238600FF238600FF238600FF23 +8600FF238600FF238600FF238600FF238600FF238600FF2391260000912700 +00922800009228000093290000962A0000982B00009B2B00019F2A0304A428 +0709A6250E0FA31F1417A11D1F1AA01C2C1BA11C401BA21B541BA31C671AA1 +1C791A9F1A8D199E19AC17970FE51D8600FF248600FF248600FF248600FF24 +8600FF248600FF248600FF248600FF248600FF248600FF248600FF248600FF +2491270000922800009228000093290000942A0000962B0000992B00009B2C +0001A02B0304A5290709A7260D0FA4201417A21E1E1BA11D2B1CA21D3F1BA2 +1C531BA41C661BA21C781AA01B8C199E19AB189810E31D8600FF258600FF25 +8600FF258600FF258600FF258600FF258600FF258600FF258600FF258600FF +258600FF258600FF25922700009228000093290000942A0000952B0000972C +0000992C00009C2D0000A02C0203A62B0609A8270D0FA6221316A31E1D1BA2 +1D2A1CA31D3E1BA31C521CA51D651BA41D771BA11C8B1A9F1AA9189911E21D +8600FF268600FF268600FF268600FF268600FF268600FF268600FF268600FF +268600FF268600FF268600FF268600FF269228000093290000942A0000942A +0000952B0000972C00009A2D00009D2E0000A12D0203A72C0608A9290C0EA7 +231316A51F1D1BA31E291DA41E3C1CA41D501CA61D641CA51E761BA21D8A1A +A01BA7199B13E11D8700FF278700FF278700FF278700FF278700FF278700FF +278700FF278700FF278700FF278700FF278700FF278700FF2793290000942A +0000952B0000952B0000962C0000982D00009B2E00009E2F0000A22F0203A8 +2E0608AB2B0C0EA9251315A6211C1BA41E271EA51F3B1CA61E4F1DA71E631C +A71E751CA31D891BA11CA61A9C14DF1D8700FF298700FF298700FF298700FF +298700FF298700FF298700FF298700FF298700FF298700FF298700FF298700 +FF29942A0000952B0000962C0000962C0000972D0000992F00009C3000009F +300000A4310102AA2F0507AD2D0B0EAC271215A8221B1BA51F261EA620391D +A71F4D1DA91F611DA91F741CA51E881CA21DA31A9E15DD1D8700FF2B8700FF +2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700 +FF2B8700FF2B8700FF2B952B0000962C0000972D0000972D0000982F00009A +3000009D310000A0320000A5320102AB310507AF2F0B0DAE2A1214AA241A1B +A721251FA821361EA9204B1EAB20601EAB21731DA720871CA41EA11BA017D9 +1E8800FF2E8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700 +FF2D8700FF2D8700FF2D8700FF2D8700FF2D962C0000972D0000982E000099 +2F00009A3000009C3100009E330000A1340000A6340102AC340507B1320A0C +B12D1113AD26181BAA23231FAA22341FAA21491FAD225E1FAE22721EAA2185 +1DA61F9F1CA219D51E8800FF318700FF2F8700FF2F8700FF2F8700FF2F8700 +FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F982E000099 +2F0000992F00009A3000009B3100009D3300009F340000A2350000A7360102 +AE360406B335090CB5311012B12A181AAD26221EAC233120AC23461FAF235C +20B124701FAD23841EA8209C1DA51CD01E8701FE348201FF338001FF347E01 +FF357E01FF357E01FF357E01FF357E01FF357E01FF357E01FF357E01FF357E +01FF35992F00009A3000009B3100009B3200009C3300009D340000A0360000 +A3370000A8390101AF390405B638080BB8350F12B42E1719B029211EAF252E +21AF254320B2255921B3266D20A62781219A2598219222C221730AF7386A05 +FF3D6805FF3E6505FF3F6505FF3F6505FF3F6505FF3F6505FF3F6505FF3F65 +05FF3F6505FF3F6505FF3F9B3100009B3200009C3200009C3300009C340000 +9E360000A0380000A43A0000A93B0101B13C0305B93C070ABC390E11B93316 +18B42D1F1EB2272B23AC273F22A12A5324972D6626902E7B27872C9226812A +B9266214F23B4B00FF504900FF514800FF524800FF524800FF524800FF5248 +00FF524800FF524800FF524800FF524800FF529C3200009C3300009D340000 +9D3500009D3600009F380000A13A0000A53C0000AA3F0000B2400304BB4007 +09BF3D0D10BE381517B8311D1DA02C2526922E362888314B2A80335F2C7934 +732D74348B2C7032AF2B561EE53B2F00FF5D2D00FF5E2B00FF5E2B00FF5E2B +00FF5E2B00FF5E2B00FF5E2B00FF5E2B00FF5E2B00FF5E2B00FF5E9D340000 +9D3500009E3600009E3600009F380000A03A0000A23C0000A63F0000AC4200 +00B4440204BD440609C4430C0FB74213159F3F1B1C8C3B24247F39312A7238 +42306A39573263396B335E3A83335B39A5314527DC3C1302FC681202FC6811 +04FC681104FC681104FC681104FC681104FC681104FC681104FC681104FC68 +1104FC689E3600009E3700009F3800009F380000A03A0000A13C0000A33F00 +00A7420000AC450000B4470203BE480507AF4D0A0E9C4E12148C4D1B1A7D4A +23226F462D2A60423B3257414F36514265364E447E354D44A032473FDA3308 +15F7660816F6650817F6650817F6650817F6650817F6650817F6650817F665 +0817F6650817F6650817F6659F380000A0390000A03A0000A03B0000A13C00 +00A23F0000A4410000A8450000AD480000AF4C0102A251040795550A0C8957 +11127D5818187057201F62542A275251352F475146334652623243527B3143 +539B2E4152D22C052AFB5F052CFB5E062DFB5E062DFB5E062DFB5E062DFB5E +062DFB5E062DFB5E062DFB5E062DFB5E062DFB5EA03B0000A13B0000A13C00 +00A23D0000A23E0000A3410000A5440000A8480000A44D0000965202028D57 +0507845C090B7C610F107164161564641D1D5562252442602C2A3560382D3B +625B2C3B62762B3B6394293962C6270642FB520643FB520644FB510644FB51 +0644FB510644FB510644FB510644FB510644FB510644FB510644FB51A23D00 +00A23E0000A33E0000A33F0000A4410000A4440000A54700009C4C00008E50 +0000855602037E5C0406776307096F690D0E656E141458701B1B4A70212137 +6F27272B703228307252273272702632738C243174B723025BFE47025CFE47 +025CFE46025CFF46025CFF46025CFF46025CFF46025CFF46025CFF46025CFF +46025CFF46A43F0000A4400000A5410000A5420000A5440000A5470000974A +0000874D00007E52000177590202716203046B6A060863710A0C597811114D +7C17183F7D1E1E317E26232A7F352328814C222A8269222A8384202985AA1F +0676F83B0476FB3C0377FB3C0377FB3C0377FB3C0377FB3C0377FB3C0377FB +3C0377FB3C0377FB3C0377FB3CA5420000A6430000A6440000A7450000A747 +000095490000834A0000784E0000715500006B5E0102666702035F70040557 +7907094E810C0E42861214368A1A1A2B8D241F258E321F2390481E2495631D +25997D1C239A9D1B1195E7270A92F92D0A92F92C0A92F92C0A92F92C0A92F9 +2C0A92F92C0A92F92C0A92F92C0A92F92C0A92F92CA7460000A8470000A848 +0000A94900009649000082490000754B00006B51000065580000606100005B +6B0101547602034D810506448B080A39920D102D981516239D1D1B21A42C1B +1DA341191FAE5C1820B775181EB9901816B9CC1C10B7F12010B8F12010B8F1 +2010B8F12010B8F12010B8F12010B8F12010B8F12010B8F12010B8F120AA49 +0000AB4A0000AC4B0000974A000082480000734A0000684E0000615400005B +5C000056650000507100004A7D0000438A01023C97040532A2080A28AD0F10 +1FBA17151BC724171AD33A1515DD511814E86A1812ED801A14EFA91710EED8 +1910EFD81810EFD81810EFD81810EFD81810EFD81810EFD81810EFD81810EF +D81810EFD818AE4D0000AF4E0000984D0000824A000073490000674B00005E +51000058580000526100004D6C000047790000418700003C96000036A60000 +2DB6030325CC09081EE5110E16FE1C1303FF271E00FF401D00FF5B1B00FF75 +1D02FF8E1D0DFFC0130DFFC0130DFFC1130DFFC1130DFFC1130DFFC1130DFF +C1130DFFC1130DFFC1130DFFC113B25200009A500000824C0000734A000067 +4A00005D4E000056540000505C00004A650000447100003D7E0000378A0000 +319700002BA4000025B804041FD0090917EA120E0AFE191600FF2A1B00FF45 +1802FF5F1600FF781900FF8C1A09FFD21109FFD31109FFD31109FFD31109FF +D31109FFD31109FFD31109FFD31109FFD31109FFD3119D530000814E000071 +4B0000654900005C4A0000544F00004E560000495E0000426800003B750000 +348000002E8B00002997000024A701011FBB040418D40A0910ED110F02FE18 +1800FF2F1701FF491401FF611200FF791503FF8F1308FFD60D05FFE30F05FF +E30F05FFE30F05FFE30F05FFE30F05FFE30F05FFE30F05FFE30F05FFE30F81 +4E0000704A0000634900005A490000544A00004D5000004758000041620000 +3A6D0000337800002C820000278C0000229800001EAA010119BF040512D80A +090CEF140D01FD1E1400FF341200FF4D1000FF630F00FF7A110BFF950808FF +CE0900FFF50E00FFF50E00FFF50E00FFF50E00FFF50E00FFF50E00FFF50E00 +FFF50E00FFF50E6F4A00006249000059490000524900004C4B000046520000 +405B000039650000327000002B7B000026840000218E00001D9C000019AD01 +0213C305050EDA0C0809F0170A02FD240E04FF3B0B00FF500C00FF650B00FF +7B0D08FF930609FFC70500FFFA0A00FFFA0A00FFFA0A00FFFA0A00FFFA0A00 +FFFA0A00FFFA0A00FFFA0A00FFFA0A6049000057490000504900004B4A0000 +464D00003F550000395F0000326A00002B740000257D0000208600001C9100 +00189F000013B002020EC5050508DB0C0806F21A0808FC2B0405FF400500FF +540800FF680800FF7B0903FF93060AFFC00000FFFF0700FFFF0700FFFF0700 +FFFF0700FFFF0700FFFF0700FFFF0700FFFF0700FFFF07564900004F4A0000 +494B0000444C00003F50000038590000316300002B6D000025770000208000 +001B8900001794000013A200000EB3020308C6060505DD100505F41D0407FD +2F0002FF420400FF560400FF6A0400FF7C0503FF920207FFB80000FFF80400 +FFFF0400FFFF0400FFFF0400FFFF0400FFFF0400FFFF0400FFFF0400FFFF04 +4D4A0000474B0000424D00003D4F000038530000315D00002A670000257100 +001F7A00001A820000168C0000129700000DA3000108B3020304C7080403DF +130302F6200202FD310101FF450000FF590100FF6B0101FF7E0102FF900003 +FFAF0001FFE90100FFF10100FFF10100FFF10100FFF10100FFF10100FFF101 +00FFF10100FFF101454C0000404E00003B51000036530000315700002A6100 +00246A00001F7400001A7C000016850000118E00000D99000008A4010103B4 +030202CA0B0201E3170101F9220101FF340000FF4B0000FF5C0000FF6E0101 +FF800001FF8D0001FFA70000FFE10000FFE60000FFE60000FFE60000FFE600 +00FFE60000FFE60000FFE60000FFE600> +<8A2000008B2100008B2100008C2200008C2200008E23000090230000922200 +0094210303971F0709991B0D0F9817131698161F1798172D1798163F169815 +51169815631698157515961488149613A2139812D6118500FF1A8300FF1983 +00FF198300FF198300FF198300FF198300FF198300FF198300FF198300FF19 +8300FF198300FF198B2100008B2100008C2200008C2200008D2300008E2300 +00902300009223000095210303981F07089A1C0D0E9817131698171E179817 +2C1799163E17991551179915631698167515971587159714A1139812D41285 +00FF1B8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A +8300FF1A8300FF1A8300FF1A8300FF1A8B2100008C2200008C2200008D2300 +008D2300008F240000912400009323000095220203992007089B1D0D0E9918 +131699171E1899172B1799173D17991650179A166217991674169815871597 +14A0149912D3128600FF1C8300FF1B8300FF1B8300FF1B8300FF1B8300FF1B +8300FF1B8300FF1B8300FF1B8300FF1B8300FF1B8300FF1B8C2200008C2200 +008D2300008D2300008E2400008F2400009124000093240000962302039921 +06089C1E0D0E9A19121699181D1899182A189A173C179A164F179B1662179A +177416981686159815A0149A13D2138600FF1D8400FF1B8400FF1B8400FF1B +8400FF1B8400FF1B8400FF1B8400FF1B8400FF1B8400FF1B8400FF1B8400FF +1B8C2200008D2300008D2300008E2400008E24000090250000922500009425 +0000972402039A2206089D1F0C0D9B1A12159B181D189A1829189B183B189B +174E189B1761179B1773179917851698159E159A14D0138700FF1E8400FF1C +8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF +1C8400FF1C8400FF1C8D2300008D2300008E2400008E2400008F2500009025 +00009326000095260000982502029B2306079E200C0D9D1B12159C191C189B +1928199C193A189C184D189C1760189C1872179A17851699169D159B14CE14 +8700FF208400FF1D8400FF1E8400FF1E8400FF1E8400FF1E8400FF1E8400FF +1E8400FF1E8400FF1E8400FF1E8400FF1E8D2300008E2400008F2400008F25 +000090250000912600009326000096270000992601029D2405079F220B0D9F +1D11149D1A1B189C19271A9D1A39199D184C199E185F199E1971189C188417 +9A179C169C15CC148800FF218500FF1F8500FF1F8500FF1F8500FF1F8500FF +1F8500FF1F8500FF1F8500FF1F8500FF1F8500FF1F8500FF1F8E2400008F25 +00008F25000090260000912600009227000094280000972800009A2801029E +260506A1230B0CA01F11149F1B1A189D1A261A9E1B37199E194A199F195D19 +9F1A70189D1983189B189A179D16CA158800FF238500FF208500FF208500FF +208500FF208500FF208500FF208500FF208500FF208500FF208500FF208500 +FF208F25000090250000902600009127000092270000932800009529000098 +2900009B2901019F270406A3250A0CA3211013A01D19199E1B241B9F1B351A +A01A491AA01A5C1AA11B6F199F1A82189C1999179E17C8168900FF258500FF +228500FF228500FF228500FF228500FF228500FF228500FF228500FF228500 +FF228500FF228500FF22902600009126000091270000922800009328000094 +290000962A0000992B00009C2B0101A1290406A527090BA5231012A21E1719 +A01C231CA11C331BA11C471BA21B5A1BA31C6E1AA01B81199D1A97189F18C5 +178900FF278600FF248600FF248600FF248600FF248600FF248600FF248600 +FF248600FF248600FF248600FF248600FF2491270000922800009328000093 +290000942A0000952B0000982C00009A2D00009E2D0101A22C0405A72A090B +A8260F11A5201619A21D211CA21D311CA31D451BA41C591CA51D6C1BA21D7F +1A9F1B9519A019C1188B01FD298600FF268600FF268600FF268600FF268600 +FF268600FF268600FF268600FF268600FF268600FF268600FF269328000093 +290000942A0000952B0000952B0000972D0000992E00009C2F00009F2F0101 +A42E0305A92C080AAB290E10A8221518A51F201CA41E2E1DA51E421CA61D57 +1CA81E6A1CA51E7D1BA21D931A9E1BBB198606F42A7C00FF2D7B00FF2E7800 +FF2F7600FF2F7600FF2F7600FF2F7600FF2F7600FF2F7600FF2F7600FF2F76 +00FF2F942A0000952B0000962C0000962C0000972D0000982E00009A300000 +9D310000A1310101A6310304AC300709AE2C0D10AB261417A8221E1CA6202B +1EA720401DA81F541EA321671E9922791E90228E1F8A20AF1E7610E72D6301 +FF396001FF3A5F01FF3B5D01FF3C5D01FF3C5D01FF3C5D01FF3C5D01FF3C5D +01FF3C5D01FF3C5D01FF3C962C0000972D0000972D0000982E0000992F0000 +9A3000009C3200009F330000A3340001A8340203AE330608B1300C0FB02A13 +16AC251C1CA92128209F233A2094244D228C266023852873247F2889247A26 +A8246B1DDE2B4900FF494700FF4A4500FF4B4400FF4B4400FF4B4400FF4B44 +00FF4B4400FF4B4400FF4B4400FF4B4400FF4B982E0000992F0000992F0000 +9A3000009B3100009C3200009D340000A0350000A4370000A9370203B03705 +08B5350B0EB5301215A82B1A1C93272224882931267E2B4527762B5829702D +6B2A6C2F8229682EA0295C26CE2D2E01FE552C02FE552A02FD562902FD5629 +02FD562902FD562902FD562902FD562902FD562902FD562902FD569A300000 +9B3100009B3200009B3200009C3300009D3400009F360000A1380000A53A00 +00AB3B0102B23B0507B93A0A0DA73B11139338191A8234202275332C276830 +3B2D60314F2E59316330553279305232952F492BC0311403FA601405F95F13 +06F95F1307F85F1307F85F1307F85F1307F85F1307F85F1307F85F1307F85F +1307F85F9B3200009C3300009C3300009D3400009D3500009E370000A03900 +00A33B0000A73D0000AD3F0101AE410406A045080C91461012824418187341 +1F1F653D27275639322F4D384533493A5C33453B7332433C8F303F39BB300C +17F35C0C18F35C0C19F35B0C19F45B0C19F45B0C19F45B0C19F45B0C19F45B +0C19F45B0C19F45B0C19F45B9D3400009D3500009E3600009E3600009E3700 +009F390000A13B0000A43E0000A9410000A2450101964A04068C4D080B804F +0F10744F1616664E1C1D584B242447472C2D3E483C2F3A4A542E3C4B722E3A +4B8D2C3B4BB8290C2CF7520B2CF8520B2DF8520B2EF8510B2EF8510B2EF851 +0B2EF8510B2EF8510B2EF8510B2EF8510B2EF8519E3700009F3700009F3800 +00A0390000A03A0000A13C0000A23E0000A5410000994600008D4A0102854F +04057C53080A73570D0E685B14145B5A1A1B4C5920223A5727282B582E2A2D +5B4A29345C6D28335C8826335BB0250F44F1410A41F8470A42F8460943F946 +0943F9460943F9460943F9460943F9460943F9460943F9460943F946A03900 +00A03A0000A13B0000A13C0000A23C0000A23F0000A3410000924500008648 +00007D4E0102765404056F5A060866600B0D5D6512125166181943671E1F30 +66232425682C26286A48242C6C67232C6C84222C6CA721135FEB310456FE3F +0457FE3E0457FE3E0457FE3E0457FE3E0457FE3E0457FE3E0457FE3E0457FE +3E0457FE3EA13C0000A23D0000A23E0000A33E0000A33F0000A34200008E44 +000080460000774B0000705201026A590304636105075B68090B516E0F1046 +72141639741B1C2B75232124772E2122794420257B6220267C7D1E267D9D1D +1678DF260570FD340570FD340571FD340571FD340571FD340571FD340571FD +340571FD340571FD340571FD34A33F0000A4400000A5410000A5420000A543 +00008C4300007D440000724800006A4E0000645501015E5E02035867040550 +70070847770B0D3C7D1113308018192684221D21862F1D1F88431C208A5C1B +228E771A218E9419198CC81D0485FD2B0485FD2A0586FD2A0586FD2A0586FD +2A0586FD2A0586FD2A0586FD2A0586FD2A0586FD2AA6430000A6440000A744 +0000A74500008C4400007B4300006F460000654B00005F520000595A000054 +6301014E6D0203467804053D81070A32870C10288C13161F911C1A1D972A19 +1A983D171B9E57161DA670161CA78A161AA7B5160DA4FA1E0CA4FA1E0CA5FA +1E0CA5FA1E0CA5FA1E0CA5FA1E0CA5FA1E0CA5FA1E0CA5FA1E0CA5FA1EA846 +0000A8480000A94900008B4600007B4400006D450000624800005B4E000055 +560000505E00004A680000437400013C800102348A04062B93080B229C0E11 +1BA6161517B0231516B8371317BF501218CC691216D17F1214D2A2130CD1EF +170CD2EF170CD2EF170CD2EF170CD2EF170CD2EF170CD2EF170CD2EF170CD2 +EF170CD2EF17AB4B0000AC4C00008B490000794600006C4500006147000059 +4C0000535200004D5B000048640000417100003A7D0000348900002D950102 +27A4040520B6080918CB0F0F13E11B110FF52B1205FB3F1703FF581601FF71 +1900FF891B08FFD81208FFDB1208FFDC1208FFDC1208FFDC1208FFDC1208FF +DC1208FFDC1208FFDC1208FFDC12B04F00008B4C0000784900006A47000060 +470000584A0000515000004B580000456200003E6D00003779000031840000 +2B900000269D000021AF02021CC6060614E00D0B08F5141300FF231700FF3E +1501FF571100FF701400FF88150AFFCC0B04FFE60F04FFE60F04FFE60F04FF +E60F04FFE60F04FFE60F04FFE60F04FFE60F04FFE60F8C4F0000774B000069 +4900005E49000056490000504C00004A530000445C00003D66000036710000 +2F7C00002986000024910000209F00011BB2020316CA06060FE20F0A06F519 +1000FF281300FF421000FF5A0E00FF720F07FF8E0B0AFFC50600FFF60D00FF +F60D00FFF60D00FFF60D00FFF60D00FFF60D00FFF60D00FFF60D00FFF60D76 +4B0000674900005C490000544900004E4A0000494E0000435600003C5F0000 +356A00002E750000287F0000238800001E9400001AA3010115B6030310CE06 +070AE4100904F61D0D04FF2F0A01FF470B00FF5D0A00FF740C05FF8C090BFF +BF0200FFFB0A00FFFC0900FFFC0900FFFC0900FFFC0900FFFC0900FFFC0900 +FFFC0900FFFC09664900005A490000524900004C4A0000474B000042500000 +3C590000356400002D6E000027780000228100001D8B00001997000015A601 +0110B903030ACF070607E5130707F7230509FF370101FF4A0700FF600700FF +740702FF8C0709FFB90000FFFF0600FFFF0600FFFF0600FFFF0600FFFF0600 +FFFF0600FFFF0600FFFF0600FFFF0659490000514900004B4A0000454C0000 +414E00003B540000345E00002D68000027720000217B00001D840000188E00 +00149A00000FA801010ABA030305D0090504E7170405F9260205FF390100FF +4D0300FF620300FF760402FF8B0305FFB10001FFEE0300FFFF0300FFFF0300 +FFFF0300FFFF0300FFFF0300FFFF0300FFFF0300FFFF034F490000494B0000 +434D00003E4F00003A510000345800002D620000276B0000217500001C7D00 +0017860000139100000F9C00000AA9010205BB040303D20D0302E9190202FA +270102FF3C0000FF510100FF640100FF780102FF8B0003FFA90001FFE10100 +FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF01 +474B0000414E00003C50000037530000325500002D5C000027660000216F00 +001C77000017800000128900000E930000099D000105AA020102BE070201D7 +110101EE1D0101FE2A0001FF420000FF540000FF670000FF7A0000FF8A0001 +FFA20000FFDB0000FFFE0000FFFE0000FFFE0000FFFE0000FFFE0000FFFE00 +00FFFE0000FFFE003F4E00003A51000034540000305700002B5A0000266000 +00216900001B720000167A0000128200000D8B000009940000049D010101AB +040100C30A0000DB150000F11F0000FF2C0000FF440000FF550000FF660000 +FF790000FF870000FF990000FFC60000FFEF0000FFEF0000FFEF0000FFEF00 +00FFEF0000FFEF0000FFEF0000FFEF00> +<861C0000871D0000871D0000871D0000881E0000881E0000891E00008B1D00 +008D1B02038F19070791160C0D9112131392121E1391122A1391123A139111 +4C1391105E1291106F1290108211900F9910920EC10E8802F8158400FF1384 +00FF148400FF148400FF148400FF148400FF148400FF148400FF148400FF14 +8400FF148400FF14861D0000871D0000871D0000871E0000881E0000881F00 +008A1E00008B1D00008D1C0202901A060791170C0D9112121492131E149213 +291492123A1492114C1392115E1391116F129110811191109810920EC00E89 +02F7158400FF148400FF148400FF148400FF148400FF148400FF148400FF14 +8400FF148400FF148400FF148400FF14871D0000871D0000871E0000881E00 +00881F0000891F00008A1F00008C1E00008E1D0202901A060792170C0D9213 +111493131D14921328149213391492114B1492115D1392116E129111801292 +109710930FBE0F8903F6168400FF158400FF158400FF158400FF158400FF15 +8400FF158400FF158400FF158400FF158400FF158400FF15871D0000871E00 +00881E0000881F0000891F0000891F00008B1F00008C1F00008E1D0202911B +060793180B0C9314111394141C14931328159313381493124A1493125D1493 +126E139211801292119611930FBC0F8903F4168400FF158400FF158400FF15 +8400FF158400FF158400FF158400FF158400FF158400FF158400FF158400FF +15881E0000881E0000891F0000891F0000892000008A2000008B2000008D1F +00008F1E0202921C0506941A0B0C9415111395141B15941427159414371594 +13491594125C1494126D1393127F13931195119410BB108A04F3178300FF16 +8300FF168300FF168300FF168300FF168300FF168300FF168300FF168300FF +168300FF168300FF16881E0000891F0000891F00008A2000008A2000008B21 +00008C2100008E200000901F0102931D0506951B0B0C9516101395151A1595 +152616951536159513481595135B1595136C1494137E13941294129511B811 +8B05F1178300FF178300FF178300FF178300FF178300FF178300FF178300FF +178300FF178300FF178300FF178300FF17891F0000892000008A2000008A20 +00008B2100008B2100008D2100008F21000091200101941F0405971C0A0B96 +1710129616191596152516961535169614471696145A1596146B1595147D14 +951393139511B6118D07EF178300FF188300FF188300FF188300FF188300FF +188300FF188300FF188300FF188300FF188300FF188300FF188A2000008A20 +00008B2100008B2100008C2200008C2200008E220000902200009222010195 +200405981D0A0B981910129716181697162417971634169815461698155916 +97156A1597157D14961492149612B4128E08ED178300FF198300FF198300FF +198300FF198300FF198300FF198300FF198300FF198300FF198300FF198300 +FF198B2100008B2100008C2200008C2200008D2300008D2300008F23000091 +2300009323000196210405991F090A9A1B0F11991717179817221899173217 +99164417991557179916691698167B15971590149713B213900AEB188300FF +1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300 +FF1A8300FF1A8300FF1A8B2100008C2200008D2300008D2300008E2400008E +240000902400009225000094240001982303049B20080A9C1D0E109A181517 +9A1821189A1830189A1742189B1755189B1768179A177A1698168F159914B0 +14910AE9198400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400 +FF1C8400FF1C8400FF1C8400FF1C8400FF1C8D2200008D2300008E2400008E +2400008F25000090250000912600009426000096260001992503049D220809 +9F1F0E0F9D1A14179C191F199C192D199C1940189D1854189D1867189C1879 +179A178D169A16AD15930BE71A8400FF1E8400FF1E8400FF1E8400FF1E8300 +FF1F8300FF1F8300FF1F8300FF1F8300FF1F8300FF1F8300FF1F8E2400008E +2400008F250000902500009026000091270000932700009528000098280001 +9B2702039F250708A2220D0EA01D13169E1B1E199D1A2B1A9E1A3E199F1952 +19A01965199E1A77189A198B189318A7178A11DD1C7600FF277400FF287100 +FF297000FF296F00FF2A6F00FF2A6F00FF2A6F00FF2A6F00FF2A6F00FF2A6F +00FF2A8F250000902600009126000091270000922800009228000094290000 +972A0000992A00009D2A0203A2280608A4250C0EA3201215A11D1C199F1C28 +1BA01C3B1AA01B4F1B961D611C8E1F721C881F851C821DA01C7A18D0205D00 +FF345B00FF355900FF365800FF365700FF375700FF375700FF375700FF3757 +00FF375700FF375700FF379126000092270000922800009329000094290000 +942A0000962B0000982C00009B2D00009F2D0102A42B0507A8280B0DA72311 +14A41F1A1AA01D251D931F351E8A20471F82215A217C226C22762380217222 +9A226C1FC6224601FF414401FE424301FE424201FE434102FE434102FE4341 +02FE434102FE434102FE434102FE434102FE439328000093290000942A0000 +952B0000962C0000962C0000982E00009A2F00009E300000A2300102A72F04 +06AB2C0A0CAC2810139B25171A88211F217E232C2475253E246C2451266626 +6427622879275F2892265B26B826350AF7442B03FC4C2904FC4D2804FC4D28 +04FB4D2804FB4D2804FB4D2804FB4D2804FB4D2804FB4D2804FB4D952B0000 +962B0000962C0000972D0000982E0000992F00009A3000009D320000A03300 +00A4330101AA330405A933080B99330E1189311618792D1D206C2C27255E29 +332A572A472B512B5C2D4D2C702D492B882D462AAC2B2211EC461508F65615 +09F655150AF555150BF555150BF555150BF555150BF555150BF555150BF555 +150BF555972D0000982E0000992F00009A3000009A3100009B3100009C3300 +009E340000A1360000A63701019F3A0305933C070A863D0D10793C14166A39 +1B1D5C3623244D322C2C45323D2F4234552F3E356B2F3B35832E3B36A62B1F +22E33E111AF24F111BF24F111CF34E111CF34E111CF34E111CF34E111CF34E +111CF34E111CF34E111CF34E9A3000009B3100009B3200009C3200009C3300 +009C3400009D350000A0370000A3390000963D00018B4103058244070A7745 +0D0E6A4613145D45191B4F4320223F3F272A3640352C2E43452B3644692B32 +43822A3445A426263CE22E0F2CF5460F2DF5450F2EF5450F2EF5450F2EF545 +0F2EF5450F2EF5450F2EF5450F2EF5450F2EF5459C3300009C3300009D3400 +009D3500009D3600009E3600009F3800009F3B00008F3E0000844201017C46 +0305744B07086A4E0B0D5F5111125351171943501D20324F232626502A2723 +553B262E5665252D557F242D559F222650DB250E40F63C0E41F63B0D42F63B +0D42F63B0D42F63B0D42F63B0D42F63B0D42F63B0D42F63B0D42F63B9D3500 +009E3600009E3700009F3800009F390000A03900009B3C00008A3E00007E41 +0000764601026E4C0304675106075E560A0B555B0F11495D15173B5E1B1D2B +5D2123226029231F643A2226655F2127657B202765991F2765D21D0854FA35 +0855FA340856FA340856FA340856FA340856FA340856FA340856FA340856FA +340856FA349F380000A0390000A03A0000A13B0000A13C0000993C0000863D +0000794000006F440000684A0101625102035B580506535F080A4A650C0F40 +691215336B191A266C201F1F6F2A1F1D713D1E20745A1D2275741C2275921B +2277C51A066AFE2D066BFE2D066BFE2C066BFD2C066BFD2C066BFD2C066BFD +2C066BFD2C066BFD2C066BFD2CA13C0000A23D0000A23D0000A33E0000983F +0000843D0000763F00006B420000634700005D4E010157560202515E030449 +660607406E090C36740F122A771617227A1F1B1D7D2B1B1B803D1A1C825519 +1E856F181E868A171C85B317077FFC24077FFC240780FC230780FC230780FC +230780FC230780FC230780FC230780FC230780FC23A33F0000A4400000A541 +000098410000833F0000743E0000684100005F450000594B0000535300004E +5B0101476402023F6E04053777070A2D7D0C0F238213151C871B18198D2817 +178F3A161893521419986B13199A83131799A5131498FE141499FE131599FD +121599FD121599FD121599FD121599FD121599FD121599FD121599FD12A643 +0000A6440000984400008142000072400000674000005D4400005649000050 +5000004B580000456100003E6C0001367702032E8004072688080C1E900E11 +1798161414A0221313A7341113AB4D1014B3641014B87B1013B999100AB7E6 +1508B8F81608B8F81608B8F81608B8F81608B8F81608B8F81608B8F81608B8 +F81608B8F816A9480000994800008045000070430000644200005C42000054 +4700004E4E000048560000435F00003C6A0000347500002D800101278A0203 +219605071AA3090C14B2100F10C21B0F0FD02B0E0DDA430D0DE55B0D0CEC72 +0E0BEF8B1009EFCC0F05EDF11005EDF11005EDF11005EDF11005EDF11005ED +F11005EDF11005EDF11005EDF1109B4B0000804800006F4500006245000059 +450000534600004C4C000047540000415D00003A690000327500002C7F0000 +268A0000229600001DA7010118BC040412D509090CED140B02FC1F1200FF35 +1100FF500E00FF680E02FF850E0DFFB90400FFF70D00FFF70D00FFF70D00FF +F70D00FFF70D00FFF70D00FFF70D00FFF70D00FFF70D804B00006D48000060 +48000057480000514900004C4A0000465100003F5A000039640000316F0000 +2A79000025820000208D00001C9A000017AB010212BF04050CD70A0809EF17 +0904FC250B04FF3D0800FF530A00FF6B0A00FF840C0DFFB60000FFFC0900FF +FD0900FFFD0900FFFD0900FFFD0900FFFD0900FFFD0900FFFD0900FFFD096C +4A00005F490000554900004F4A0000494B0000454C00003E540000385E0000 +306800002A730000247C00001F8500001B900000179D000012AE01020CC204 +0507D90B0706F11A0609FC2D0104FF410400FF560600FF6D0600FF840709FF +B00000FFFC0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500 +FFFF0500FFFF055D490000544900004D4A0000474B0000424D00003E4F0000 +3758000030620000296C0000247600001E7F00001A8800001593000011A000 +000CAF020207C2050404DB0F0404F21D0405FC2F0101FF430200FF590300FF +6E0302FF850205FFAA0002FFE80200FFFF0200FFFF0200FFFF0200FFFF0200 +FFFF0200FFFF0200FFFF0200FFFF02524900004B4A0000454C0000404E0000 +3B50000036530000305C000029660000237000001E79000019810000158B00 +00109500000CA1000107B0020203C3080302DD130202F5200202FE310001FF +480000FF5C0100FF710102FF860002FFA20001FFDE0000FFFF0100FFFF0100 +FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF01494B0000434D0000 +3D4F000038520000335500002F57000029600000236A00001E730000197B00 +00148400000F8D00000B97000006A2010102B1040201C90C0101E3170100F8 +230100FF360000FF4D0000FF5F0000FF730000FF850000FF9C0000FFD70000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +414E00003B50000036540000315600002C590000285C0000236400001D6D00 +0018750000137D00000F8600000A8E00000597000102A3030000B5080000CD +0F0000E6190000F9240000FF370000FF4D0000FF5D0000FF710000FF820000 +FF930000FFBF0000FFF40000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF0039510000335500002E580000295B0000265D0000235F00 +001D67000018700000137700000E7F000009870000068E00000297000101A2 +030000B4070000CC0E0000E5180000F8230000FF350000FF4B0000FF5C0000 +FF6E0000FF800000FF8E0000FFAD0000FFE50000FFFB0000FFFB0000FFFB00 +00FFFB0000FFFB0000FFFB0000FFFB00> +<83180000841800008419000084190000841A0000851A0000851A0000851800 +00861602028714050689110B0B8A0E12108B0F1D108B0E28108B0E37108B0D +48108A0C590F8A0C6A0E8A0B7B0D8B0B900C8C0AAF0B8C07E20B8400FF0E84 +00FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E +8400FF0E8400FF0E841800008419000084190000841A0000851A0000851A00 +00861A000086190000861701018815050689120B0B8A0E11118C0F1D108C0F +27108C0E36108B0D47108B0C590F8B0C690E8B0C7B0D8B0B8F0C8D0AAF0B8C +08E20B8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E +8400FF0E8400FF0E8400FF0E8400FF0E8419000084190000841A0000851A00 +00851A0000851B0000861B00008619000087180101891505068A130B0B8B0F +11118D0F1C118C0F27118C0E35118C0E46108C0D58108B0D690F8B0C7A0E8C +0C8F0D8D0BAE0B8D08E20B8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F +8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F84190000851A00 +00851A0000851B0000851B0000861B0000861B0000871A0000881801018916 +05058B130A0B8C0F10118E101B118D1026118D0F34118D0E46118C0D57108C +0D680F8C0D7A0E8D0C8E0D8E0BAD0C8E09E10C8400FF108400FF108400FF10 +8400FF108400FF108400FF108400FF108400FF108400FF108400FF108400FF +10851A0000851A0000851B0000851B0000861C0000861C0000871C0000871B +0000881901018A1705058C140A0A8D100F118F101A128E1025118E1033118E +0F45118D0E56118D0E67108D0D790F8E0D8D0E8E0CAB0D8E09E00C8400FF10 +8400FF108400FF108400FF118400FF118400FF118400FF118400FF118400FF +118400FF118400FF11851A0000851B0000861B0000861C0000861C0000861C +0000871C0000881C0000891A01018C1804058E15090A8E110F118F1119128F +1124128F1032128F0F44128E0F56128E0E67118E0E78108E0E8C0F8F0DAA0D +900BDF0D8400FF118400FF118400FF118400FF118400FF118400FF118400FF +118400FF118400FF118400FF118400FF11851B0000861C0000861C0000861C +0000871D0000871D0000881D0000891C00008A1B01018D1A04048F17090A8F +130F1090121813901223139011311390104313900F54128F0F66118F0F7710 +8F0F8B0F900EA80E910CDD0D8400FF128400FF128400FF128400FF128400FF +128400FF128400FF128400FF128400FF128400FF128400FF12861C0000861C +0000871D0000871D0000871E0000881E0000881E00008A1D00008B1D00008E +1B04049018080991140E109112171391122214911230139111411391105313 +911065129110761190108A10910FA60F930DDB0D8400FF138400FF138400FF +148400FF148400FF148400FF148400FF148400FF148400FF148400FF148400 +FF14871D0000871D0000871E0000881E0000881E0000891F0000891F00008B +1F00008C1E00008F1C0303911A080993160E0F931315149313211492132E14 +93124014921152149211631392117512911188119210A410940ED90E8400FF +158400FF158400FF158400FF158400FF158400FF158400FF158400FF158400 +FF158400FF158400FF15871E0000881E0000881E0000891F0000891F00008A +2000008B2000008C2000008E1F0000901E0303931B070894180D0E94141414 +94141F1594142C1594133E15941250149412621494127413931287129311A2 +11950FD60F8400FF168300FF168300FF168300FF168300FF168300FF168300 +FF168300FF168300FF168300FF168300FF16881E0000891F0000891F00008A +2000008A2000008B2100008C2100008D2100008F200000921F0203941D0608 +971A0C0D9515121596151E1696152A1696153C1596144E1596136115951473 +14941386139412A0129610D3108500FF188000FF187E00FF197D00FF1A7C00 +FF1B7B00FF1B7B00FF1B7B00FF1B7B00FF1B7B00FF1B7B00FF1B892000008A +2000008B2100008B2100008C2200008C2200008D2200008F22000091220000 +93210202961F0507991D0C0D9817111498161C179716281798163A1698154D +1698155F16971571158F1683158A169A158815C6147404FB216D00FF236B00 +FF236A00FF246800FF246800FF246800FF246800FF246800FF246800FF2468 +00FF248B2100008B2100008C2200008D2200008D2300008E2300008F240000 +902400009324000095230102992105069B1F0B0C9B1A11139A181A17991726 +189A183717941749188B185A1A851B6C197F1B7E1A7B1A951A7819BC19690F +F8215700FF2E5600FF2F5400FF305300FF305300FF315300FF315300FF3153 +00FF315300FF315300FF318C2200008D2300008E2300008E2400008F240000 +8F250000902500009226000095260000972601019B2404059E220A0B9E1E10 +129D1A18189419221B8A1B301C811C411D781C531E721D651F6D1E771F6A1E +8F1F671EB21E5B17EF234505FB374305FB384205FA384106FA384006FA3840 +06FA384006FA384006FA384006FA384006FA388E2400008F2400008F250000 +902600009126000091270000922800009428000097290000992901019D2703 +05A125080AA0220F118F2115187E1D1C1F751E27216C20382263204A225E21 +5D245A227024572387235422A6235020E2222E09F63F2C09F63F2B09F6402A +09F5402A09F5402A09F5402A09F5402A09F5402A09F5402A09F54090260000 +9126000091270000922800009328000093290000942A0000962B0000992C00 +009C2C0001A02B03049A2C07098D2D0D0F7F2A13166F271A1D622623225523 +2C274F243F284A26542A4627682A41267E2A3E259A293D24D026190CF34819 +0DF348190EF247190FF247190FF247190FF247190FF247190FF247190FF247 +190FF2479228000093290000942A0000952A0000952B0000962C0000972D00 +00992E00009B2F00009F30000092320203883406097D350C0E703412146132 +181B532F1F22442B26293D2B362C3A2E4C2C3830632B35307A2B322F952932 +2FC926151CF142151DF142151DF141151EF041151EF041151EF041151EF041 +151EF041151EF041151EF041952B0000962C0000972C0000972D0000982E00 +00992F00009A3000009C320000993300008B35000081380204783B06096D3C +0B0D613D1012553D1619483C1D20393824272F392F292A3C41282F3F60272E +3F79272D3F95242C3EC422122CF03B122DF03B122DF03A122EF03A122EF03A +122EF03A122EF03A122EF03A122EF03A122EF03A982E0000992F00009A3000 +009B3100009B3100009B3200009C33000094350000863700007B3A0001733E +02046A41050861450A0C56470F114B4914173D481A1E2E4721232449292420 +4D372326505A2329507721274F9120274DBD1F113FF1321040F1321040F131 +1041F2311041F2311041F2311041F2311041F2311041F2311041F2319B3100 +009B3200009C3300009C3400009D3400009D3500009035000081370000763A +00006D3E0101664302035E480506564D080A4D520D0F425412153455181B26 +551F201E5827201C5C361F205F551E2360731E225F8D1D225EB71B0D52F52B +0D53F52B0D53F52B0D54F52A0D54F52A0D54F52A0D54F52A0D54F52A0D54F5 +2A0D54F52A9D3400009D3500009E3600009E3700009F3800008E3700007E37 +0000723A0000683E0000604201015A480203544F04054C550709445C0B0D39 +6010132D62171922631E1D1C67281C1A6A3A1C1B6D521B1E6E6D1A1E6F8719 +1E6FAE170966F8250966F8250966F7250967F7250967F7250967F7250967F7 +250967F7250967F7250967F7259F3800009F390000A03A0000A03B00008D3A +00007C3900006F390000653D00005C41000056470000504E01024B56030343 +5E05073A65080B306A0E11266E15161E721D191975291817783A18187B4F17 +1A7D67161A7E8214197DA2140979E71E0679FB200679FB200679FB200679FB +200679FB200679FB200679FB200679FB200679FB20A13C0000A23D0000A23D +00008C3D00007A3B00006D3B0000623C000059400000534500004D4C000048 +540001415C02023A660305316E060927740B0F1F791213197E1A1616832715 +1486381414894D12168D6411158F7C11148E9811198FD70A168FFD0C168FFD +0C1690FD0B1690FD0B1690FD0B1690FD0B1690FD0B1690FD0B1690FD0BA440 +0000A44100008B400000783E00006A3D0000603D0000573F0000514400004B +4A0000455200003F5B000038650001306F020329770507217E080C1A850E11 +148C16131193221110983310109D490E11A2600D11A6750D0FA68F0D0DA5C3 +0E0DA5F90F0DA5F90F0DA6F90F0DA6F90F0DA6F90F0DA6F90F0DA6F90F0DA6 +F90F0DA6F90FA74400008B43000076400000684000005D400000554100004F +43000049490000445100003E5A0000376400002F6E00002978010122810304 +1C8A06081594090D109F100F0DAB1C0D0CB52B0C0BBD410A0CC458090CCB6E +090BCE880A0BCFB50A06CEF80C06CEF80C06CEF80C06CFF80C06CFF80C06CF +F80C06CFF80C06CFF80C06CFF80C8B47000075430000664200005B43000053 +4300004D45000048480000424F00003C590000356300002E6E000028780000 +228200001D8D0101199A020313AB04060DBF080909D5130906EA200A04FA32 +0A00FF4B0B00FF630A00FF7C0B0AFFA90300FEFD0900FEFD0900FFFD0800FF +FE0800FFFE0800FFFE0800FFFE0800FFFE0800FFFE08744600006445000059 +460000514700004B480000464A0000414F00003B580000346200002D6D0000 +27770000218000001D8900001895000014A300000FB6020309CC070606E313 +0607F6230407FF380100FF4D0600FF640600FF7C0707FFA40100FFFA0500FF +FF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0563 +4900005849000050490000494B0000444C00003F4E00003A530000335C0000 +2C66000026700000217A00001C830000178D0000139800000EA6010109B703 +0305CD090504E5160404F9250103FF390100FF500200FF660201FF7E0204FF +A00002FFE60100FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200 +FFFF0200FFFF02564900004E4A0000474B0000424D00003D50000038520000 +335700002C610000266A0000207400001B7C000016850000128F00000E9A00 +0009A7010103B7040302CF0D0202E8190201FB270101FF3E0000FF540100FF +690101FF800002FF990001FFDE0000FFFF0100FFFF0100FFFF0100FFFF0100 +FFFF0100FFFF0100FFFF0100FFFF014C4A0000454C00003F4E00003A510000 +35540000305700002C5B000025650000206E00001B760000167F0000118800 +000D910000089B000104A8020101BC070101D5110100ED1D0000FF2A0000FF +440000FF570000FF6B0000FF800000FF930000FFD30000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00444C00003D4F0000 +37530000325600002D580000295B0000255F0000206800001A710000157900 +00108100000C89000007920000029B010100A8040000BF0A0000D7130000EE +1E0000FF2A0000FF430000FF550000FF680000FF7D0000FF8E0000FFBB0000 +FFF30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +3B500000355400002F5700002A5A0000265D0000235F0000206300001A6B00 +0015730000107B00000B820000088A000005920000019B010100A8040000BE +0A0000D5130000ED1D0000FF290000FF410000FF540000FF660000FF7B0000 +FF8A0000FFAB0000FFE40000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF00335500002D590000285C0000245F0000206100001D6200 +001A650000156D0000117400000E7B00000B8200000889000005910000029B +010100A7040000BD090000D4120000EC1C0000FF270000FF3F0000FF520000 +FF630000FF770000FF870000FF9E0000FFD50000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<7F140000801400008014000081150000811500008116000082160000811400 +0080120101800F0405810C0A09820A120C840B1C0C850B260C850A330D8509 +440C8508540B8508640A850775098507870886069F078705C7068501FD0784 +00FF088400FF088400FF088400FF088400FF088400FF088400FF088400FF08 +8400FF088400FF088014000080140000811500008115000082160000821600 +0082170000821500008113010181100404820D0909830B110D850B1B0D850B +250D860A320D8609430D8509540C8508640B8508740A8608870986079F0788 +06C6068501FD088400FF098400FF098400FF098400FF098400FF098400FF09 +8400FF098400FF098400FF098400FF09801500008115000081160000821600 +00821600008217000083170000821500008213010182110404830E0909830B +100D860C1B0D860B250D860B320D860A420D8609530C8609630B8608740A86 +08860987079F088806C6078601FD098400FF098400FF098400FF098400FF0A +8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A81150000811600 +00821600008217000082170000831700008318000083160000821401018312 +0304840F0809840C0F0E870C1A0E870C240E870B310E870B410E870A520D87 +09630C8709730B8709860A88089E098907C5078602FC098400FF0A8400FF0A +8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF +0A821600008216000082170000831700008317000083180000831800008317 +0000831501018413030485100809850D0F0E870D190E880D230E880C300E88 +0B400E880A510E870A620C870A730C8809850A89099D098A07C5088601FD0B +8400FF0B8400FF0B8400FF0B8400FF0B8400FF0B8400FF0B8400FF0B8400FF +0B8400FF0B8400FF0B82170000821700008317000083180000831800008418 +00008419000084180000841600008514030386110809860E0E0E880D180F89 +0D220F890D2F0F890C3F0F890B500E880B610D880A720C890A840B8A099C0A +8B08C4098601FD0C8400FF0C8400FF0C8400FF0C8400FF0C8400FF0C8400FF +0C8400FF0C8400FF0C8400FF0C8400FF0C8317000083180000831800008418 +00008419000084190000841A00008519000085170000861503038712070888 +0F0E0D890E17108B0E210F8A0E2D0F8A0D3E0F8A0C4F0F890B600E890B710D +8A0B830C8B0A9C0B8C09C3098601FE0E8400FF0D8400FF0D8400FF0D8400FF +0D8400FF0D8400FF0D8400FF0D8400FF0D8400FF0D8400FF0D831800008418 +00008419000084190000841A0000851A0000851A0000851A00008618000087 +1603038813070889100D0D8B0E16108C0F20108B0E2C108B0D3D108B0D4E10 +8B0C5F0F8A0C700E8B0B830D8C0B9B0C8D0AC20A8600FE0F8400FF0E8400FF +0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400 +FF0E8419000084190000841A0000851A0000851B0000851B0000861B000086 +1B000087190000881702028A1507078B120C0D8C0F14118E101F118D0F2B11 +8D0E3B118C0D4D118C0D5E108C0D6F0F8C0C820E8D0C9A0D8E0BC10B8700FE +118400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400 +FF0F8400FF0F8400FF0F841A0000851A0000851B0000851B0000861B000086 +1C0000861C0000871C0000881B0000891902028B1706078D130C0D8E101312 +8F111E128E1029128E0F39128E0F4B118E0E5D118D0E6E108D0D800F8E0D98 +0E8F0CBF0C8801FA128400FF118400FF118400FF118400FF118400FF118400 +FF118400FF118400FF118400FF118400FF11851B0000861B0000861C000086 +1C0000861C0000871D0000871D0000881D0000891C00008B1B02028D180606 +8F150B0C8F11111391121C129011271390113713901049128F0F5B128F0F6D +118F0F7F108F0E960F900DBC0E8303F5147B00FF157900FF167800FF177600 +FF177500FF177500FF177500FF177500FF177500FF177500FF17861C000086 +1C0000871D0000871D0000871E0000881E0000881E0000891E00008B1E0000 +8C1C01018F1B050591180A0B9113101293131A139213261492123513921147 +1391115A138C126A1387137B13831390138013B112770BE9186800FF1F6600 +FF1F6400FF206300FF206200FF216200FF216200FF216200FF216200FF2162 +00FF21871D0000871E0000881E0000881E0000891F0000891F00008A200000 +8B2000008C1F00008E1F0101911D0405931A090A94160F1194141814941424 +15941433148A144316821554177C1664177717761773178A177117AA176D16 +E0175401FE285301FD295201FD295102FC295002FC295002FC295002FC2950 +02FC295002FC295002FC29881E0000891F0000891F00008A2000008A200000 +8B2100008B2100008D2100008E21000090210001931F0304961D080997190E +10961616158A161F1980182C1A79183C1B70194C1B6A195E1C641A6F1C621B +841C5F1BA11C5D1BD31B4508F72D4309F62D4209F62D4109F52D410AF52D41 +0AF52D410AF52D410AF52D410AF52D410AF52D8A2000008A2000008B210000 +8B2100008C2200008D2200008D2300008F2300009023000092230001952203 +03981F0708931E0D0F851C13167419191C6B1A241F621B321F5C1C4320561D +5621521E68214F1E7D214B1E97214A1EC21F310EF031300EF0322F0EF0322E +0EF0322D0FF0322D0FF0322D0FF0322D0FF0322D0FF0322D0FF0328C220000 +8C2200008D2300008D2300008E2400008F2400008F25000091250000932600 +0095260000982502038D26060882260C0E752411146622171B59201F1F4D1F +28244820382644224D27402261283B22752836208C273420B1241F12EF381F +13EE381F14EE371F15EE371F15EE371F15EE371F15EE371F15EE371F15EE37 +1F15EE378E2300008E2400008F250000902500009026000091270000912700 +009328000095290000922A0000872B01037D2D0508732E0A0D662D1013582C +15194C2A1C1F3E2723263627312934294529322B5B292F2C72282C2A89272B +2AAD24181EEC36181FEC35181FEB351820EB341820EB341820EB341820EB34 +1820EB341820EB341820EB3490260000912600009227000092280000932900 +0094290000942A0000962B00008D2D0000822F0000783102036F3305086435 +090C59360E114D36131741361A1E333221252B332D2727363D252A3A57242A +3A7124283A89222738AA20142BEB31142CEB30142DEB30142DEB30142EEB2F +142EEB2F142EEB2F142EEB2F142EEB2F142EEB2F9329000094290000952A00 +00952B0000962C0000972D0000982E00008A2E00007D310000733300016A36 +020361390507583C080B4E3F0D0F444112153741181C2A401F21224228221F +473521214A4F20244B6E1F234A861E2248A61D163FE626133EED29133FED28 +133FED28133FED28133FED28133FED28133FED28133FED28133FED28962C00 +00972D0000982E0000992F00009A3000009B310000862F0000793100006F34 +0000653800015D3C0203564004064E44070946490B0E3B4C10142F4D171A23 +4D1D1E1D51261E1A56341D1B594B1C205A6B1B1F5A831A1E58A3191552E21F +1050F1231051F1221051F1221051F1221051F1221051F1221051F1221051F1 +221051F1229A3000009B3100009B3200009C3300009B330000843200007632 +00006B35000062380000593C0000534101024C470304464D06073D530A0C33 +570F11285915171E5A1C1B195F26191762371917664B191A6865181A687E17 +1A689E151666DA170C61F31F0C62F31F0C62F31E0C62F31E0C62F31E0C62F3 +1E0C62F31E0C62F31E0C62F31E9C3400009D3500009D3500009A3600008235 +000073350000683500005F380000563C0000504100004A470101444E02033D +560406345C080A2A610D0F216413141A681C17176D27161470371614734A15 +1676611416777912157795121576C8120973F71A0974F71A0974F71A0974F7 +190974F7190974F7190974F7190974F7190974F7199F3800009F3900009A3A +00008138000071370000653800005C390000543B00004E4000004846000042 +4D00003C560101345E03042B660609236B0B0E1B70111216751A14137B2613 +117E35121181481012845E0F1286740F11868E0F1085B60E0E86F7100E86F7 +0F0F86F70F0F87F70F0F87F70F0F87F70F0F87F70F0F87F70F0F87F70FA13C +00009B3D0000803B00006F3A0000633B0000593B0000523C00004C3F000046 +450000404D00003A550000335E00012B670203246F05071D76090C167B0E10 +118217110E89220F0D8D300E0D91450C0E955B0B0D986F0B0C99870B0C98AC +0B0E98F40A0E98F40A0E98F30A0D99F30A0D99F30A0D99F30A0D99F30A0D99 +F30A0D99F30A9D4100007F3E00006D3D0000603D0000573E00004F3F00004A +400000454400003F4C000039550000325F00002B680000247101021E790305 +1881060911890A0D0D92120D0A9B1D0B09A32A0909A93E0809AE550709B369 +0708B5810708B4A30709B6F30709B6F30709B6F30709B6F30609B6F30609B6 +F30609B6F30609B6F30609B6F3067F4100006B4000005E400000544100004D +42000048430000434500003E4B000038540000315F00002A69000024720000 +1F7B000119840202148F03050D9A050908A80A0907B8150705C9220605D534 +0504DF4B0403E6610403EB790505F29A0301E8ED0600E7FF0600E7FF0600E7 +FF0500E7FF0500E7FF0500E7FF0500E7FF0500E7FF056A4300005C43000053 +4400004C45000046480000414A00003C4D000037540000305F000029690000 +237300001E7D00001987000015910000109E00000BAD010206C0050404D90E +0403F11D0303FC2F0101FF450100FF5D0200FF750103FF940002FFDF0100FF +FF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF025B +460000514800004A4A0000444C00003F4F00003A510000355400002F5B0000 +28650000236E00001D78000018800000148900000F9400000B9F000106AD02 +0202C2080302DD120201F4200101FF320000FF4B0000FF600100FF780101FF +8F0001FFD80000FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100 +FFFF0100FFFF0150490000484B0000424D00003C5000003753000032560000 +2D580000285F0000226900001D720000187A0000138300000E8C00000A9500 +0005A0010101AE040101C80C0100E2170000F8230000FF370000FF4F0000FF +620000FF790000FF8C0000FFC70000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF00464C0000404E00003951000034550000 +2F5800002A5A0000275D0000226300001C6C000017740000127C00000E8400 +00098C00000495000101A0020000B1070000C90D0000E2170000F7220000FF +350000FF4D0000FF5F0000FF760000FF890000FFB30000FFF60000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF003E4F000037530000 +315600002C590000275C0000245F0000216100001C660000176E0000127600 +000D7E00000A850000078D00000395000101A0020000B0060000C80D0000E1 +170000F6220000FF330000FF4B0000FF5D0000FF730000FF860000FFA40000 +FFE60000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +355400002E580000295B0000255E0000216000001E6200001B640000176900 +0013700000107700000D7E00000A850000078C000003950001019F020100AF +060000C70C0000DF160000F4210000FF320000FF4A0000FF5B0000FF6F0000 +FF830000FF990000FFD80000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF002C590000275D0000226000001E6200001B640000186500 +00176500001669000013700000107700000D7D00000A850000078C00000394 +0001019F020100AE060000C60C0000DE160000F3200000FF300000FF480000 +FF590000FF6C0000FF800000FF900000FFBC0000FFF20000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<7B0F00007B0F00007C1000007C1000007D1000007D1100007D1100007D1100 +007B0E0000790B02037A0909077B0711097D081B097E0725097F0730098006 +400980064F0880055F077F046E067F047F05800392048103AF038402EB0283 +00FF048300FF048300FF048300FF048300FF048300FF048300FF048300FF04 +8300FF048300FF047B0F00007C1000007C1000007D1100007D1100007D1100 +007E1200007E1100007C0F00007A0C02037B0908077B08100A7E081A097F08 +240A7F07300A80063F0981064F0880055E0780056E0680047E058004920482 +03AF038502EA038300FF048300FF048300FF048300FF048300FF048300FF04 +8300FF048300FF048300FF048300FF047C1000007C1000007D1100007D1100 +007E1200007E1200007E1200007E1200007C1000007B0D02037B0A08077C08 +0F0A7E081A0A7F08230A80072F0A81073E0A81064E0981065E0881056D0781 +057E06810492058203AF048503E8038300FF048300FF048300FF048300FF04 +8300FF048300FF048300FF048300FF048300FF048300FF047D1000007D1100 +007D1100007E1200007E1200007F1300007F1300007F1300007D1000007C0D +02027C0A07077D080E0A7F09190A8009230A81082E0B82073D0A82074D0982 +065D0881056D0782057E06820492058304AE048603E7038400FF058400FF05 +8400FF058400FF058400FF058400FF058400FF058400FF058400FF058400FF +057D1100007E1200007E1200007F1300007F1300007F130000801400008014 +00007E1100007D0E02027D0B06077E090E0B8009180B8109220B82082D0B83 +083C0B83074C0A82075D0982066C0882067D07830591068404AE048603E604 +8400FF058400FF058400FF058400FF058400FF058400FF058400FF058400FF +058400FF058400FF057E1200007E1200007F1300007F130000801400008014 +000080150000801400007F1200007E0F02027F0C06077F0A0D0B810A170B83 +0A210B83092C0C84083B0B83084C0B83075C0A83076C0983067D0884069006 +8505AD058603E4058400FF068400FF068400FF068400FF078400FF078400FF +078400FF078400FF078400FF078400FF077F1300007F130000801400008014 +0000801500008115000081150000811500008013000080110101800D050780 +0B0C0B820A160C840A200C840A2B0C85093A0C85084B0C84085B0B84076B0A +84077C08850790078606AD068603E2078400FF088400FF088400FF088400FF +088400FF088400FF088400FF088400FF088400FF088400FF08801400008014 +00008115000081150000811600008216000082160000821600008214000081 +120101810F0506820C0C0A840B140D850B1F0D850B2A0D860A380D8609490C +85095A0C85086A0A85087B0986078F088707AC078602E0098400FF098400FF +098400FF098400FF098400FF098400FF098400FF098400FF098400FF098400 +FF098115000081150000811600008216000082170000821700008317000083 +170000821500008213010183100506840E0B0A850C130E870C1E0E870C280E +870B370E870A480D870A580D8609690B87097A0A87088E098808AC088804DF +098400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400 +FF0A8400FF0A8400FF0A821600008216000082170000831700008318000083 +1800008318000084180000841700008315010184120505860F0A0A860D110F +890D1C0F880D270F890C350F890B460E880B570E880A680D880A790C89098D +0A8A09AB098A06DF098400FF0C8400FF0C8400FF0C8400FF0C8400FF0C8400 +FF0C8400FF0C8400FF0C8400FF0C8400FF0C82170000831700008318000083 +180000841900008419000084190000851A0000851800008516010186140405 +8811090A880E10108A0E1B108A0E250F8A0D33108A0C440F8A0C560F890B67 +0E8A0B780D890B8C0C860BA80B8309D90C7600FF127400FF127200FF137100 +FF137000FF146F00FF146F00FF146F00FF146F00FF146F00FF148318000084 +1900008419000084190000851A0000851A0000851B0000851B0000861A0000 +86180000881604048A1309098A0F0F0F8C0F19118C0F24108C0F31108C0E42 +108A0D5310830E63107F0F73107B1086107910A10F7610CF0F6300FF1B6100 +FE1B6001FE1C5F01FE1C5E01FE1D5D01FE1D5D01FE1D5D01FE1D5D01FE1D5D +01FE1D84190000851A0000851A0000851B0000851B0000861C0000861C0000 +861C0000871B0000881A00008A1803038C1508098D120E0F8E1017128F1022 +1289112E1282113D147A114D1574125D156E136E156B13811569149A156614 +C6145203FA225104F9225004F8224F05F8224F05F8224E05F7234E05F7234E +05F7234E05F7234E05F723851B0000861B0000861C0000861C0000861D0000 +871D0000871D0000871E0000891D00008A1C00008C1A03038E18070890140D +0E8D12141382131D16771427177015361868164618621657195D16671A5917 +7B1A5717931A5517BA194309F126410AF026400AEF263F0BEF263E0BEF263E +0BEF263E0BEF263E0BEF263E0BEF263E0BEF26861C0000871D0000871D0000 +871E0000881E0000881E0000891F0000891F00008B1F00008C1E00008E1D02 +02911B0607881B0C0D7B1811146B16171A6217211C5A182D1C55193C1D501A +4E1E4C1B611F481B741F441A8A1F421AAA1D3310E7272F0FEA292E0FEA292D +10EA292D10E9292C10E9292C10E9292C10E9292C10E9292C10E929871E0000 +881E0000891F0000891F00008A2000008A2000008B2100008B2100008D2100 +008E2100008C2002028321050779210A0C6C1F0F125D1E1519521D1D1D461B +2521411D32233D1E4524391F5925341E6C252F1C81252E1C9E222517DC2923 +16E92B2216E92A2217E82A2217E82A2217E82A2217E82A2217E82A2217E82A +2217E82A892000008A2000008B2100008B2100008C2200008C2200008D2300 +008D2300008F230000872400007D250102742605076A27090C5E270E115126 +131745241A1D3822202431232C262E253E262C2753262B286A252827802426 +269B222223D5241B20E7291B20E7291B21E7291B21E6291B21E6291B21E629 +1B21E6291B21E6291B21E6298C2200008C2200008D2300008E2300008E2400 +008F2500008F2500009026000084270000792900006F2B0103662C04075C2E +080B512F0D0F473012153B30181B2E2D1F22272E2924243039232534502126 +3769202536801F23349A1E2032D21F172DE626172EE625172EE625172FE625 +172FE625172FE625172FE625172FE625172FE6258E2400008F250000902500 +009026000091270000922700008E28000081280000752B00006B2D00006230 +0102593304065035070947370B0E3D391014313A161A263A1D1F203C261F1D +41331E1E444A1D2045651C20457D1B1F43971B1E42CB19153CE921153DE920 +153EE920153EE920153EE920153EE920153EE920153EE920153EE920912700 +009228000093290000942A0000942A00008E2B00007E2B0000722C0000672F +00005E320000563601024E390305473D06083F410A0D35440E122945151820 +461C1C1B4A251B194F321A195348191B5461191B547A181A5394171B52C516 +144EEF1A144EEF1A154FEF1A154FEF19154FEF19154FEF19154FEF19154FEF +19154FEF19952B0000962C0000972D0000982E00008D2D00007B2D00006F2F +0000653000005B330000533700004C3B0101464003043F450506374B080A2D +4E0D10235014151B531B1817582517155B3417155F471616625E1517627514 +166290131762BD12115EF216115FF116115FF116115FF116115FF116115FF1 +16115FF116115FF116115FF116992F00009A3000009B3100008C3000007930 +00006C3100006132000059330000513700004A3B0000444000003E47020237 +4E04052E54070926580C0E1D5B121317601A141465261312683414116C4613 +126F5B121270701012708A101270B10F0F6FF4120F70F4120F70F4110F70F4 +110F71F4110F71F4110F71F4110F71F4110F71F4119C3300009D3400008C34 +000077340000693400005E350000553600004F370000483B0000424100003C +470000364F01012E570303265E05081F630A0C18671010136D191110722410 +0E7632100E79450F0E7C580D0E7E6C0C0D7F840C0D7EA50C0E7FEF0C0D7FEE +0C0D7FEE0B0D7FED0B0D80ED0B0D80ED0B0D80ED0B0D80ED0B0D80ED0B9F38 +00008C38000076370000673700005B380000533900004C390000473B000041 +4000003B470000355000002E5800002760020320670507196D090B12730E0F +0E7A170E0C80220D0A842F0C0A87410A0A8B55090A8E6908098F7F08098E9E +08098EE108098FE808098FE808098FE808098FE708098FE708098FE708098F +E708098FE7088C3B0000743A0000653A0000593B0000503C00004A3D000044 +3E0000404000003A470000345000002D59000027620000216A01021A720405 +147807090E7F0C0C0A87140B088F1E0907952A07069A3C06069E500506A264 +0405A4790405A2960506A3CF0406A5E20406A5E20405A5E20405A5E20405A5 +E20405A5E20405A5E20405A5E204733D0000633D0000573E00004E3F000048 +400000424200003D45000039470000335000002C5A000026630000206C0000 +1B740101157D02040F8404060A8D070806990E0704A5170503B0230302B834 +0202BE490201C45D0101C9730102CC8F0202C9C40202CAF00201CBF00201CB +F00201CBF00201CBF00201CBF00201CBF00201CBF00261400000554100004C +42000046440000404700003B4A0000364D0000325000002C5A000025640000 +206E00001B77000016800000118900010C940102069F020403B0060302C80E +0201E21B0101FA280101FF410000FF570000FF6F0101FF890001FFC80000FF +FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0053 +4400004B460000444900003E4C000039500000345400002F5700002B5A0000 +256400001F6D00001A750000157E0000108600000C8F00000799000103A503 +0101B9080100D3110000ED1D0000FF2B0000FF450000FF590000FF6F0000FF +860000FFB60000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF004A4B0000424D00003C50000036530000315700002C590000 +285C0000245E00001F6700001970000014780000108000000B880000069000 +000299010100A6040000BB090000D3120000EC1C0000FF290000FF430000FF +570000FF6D0000FF830000FFA70000FFF70000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF00404E00003A510000335500002D580000 +295B0000255E0000216000001F620000196A0000147200000F7900000C8100 +0009880000059000000299000100A5040000BA090000D2110000EB1C0000FF +280000FF410000FF550000FF6A0000FF800000FF9B0000FFE70000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF003753000031560000 +2B5A0000265D0000226000001F6200001C63000019650000156C0000127200 +000F7900000C80000009880000068F00000298000100A5030000B8090000D1 +110000EA1B0000FF260000FF3F0000FF530000FF670000FF7E0000FF910000 +FFDA0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +2E580000285C0000235F00001F6100001C6300001965000017650000176500 +00156B0000127200000F7900000C80000009880000068F00000298000100A4 +030000B7080000D0100000E81A0000FD260000FF3C0000FF510000FF640000 +FF7B0000FF8C0000FFBC0000FFF80000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF00265D0000216000001D6300001965000017650000176500 +001765000017650000156B0000127200000F7900000C80000009870000068F +00000298000100A4030000B6080000CE100000E71A0000FC250000FF3A0000 +FF500000FF620000FF770000FF880000FFA80000FFE50000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<740A0000750A0000750B0000760B0000770B0000770C0000780C0000780C00 +00770B000074070202730508057404110675041A067704230678042E067A03 +3C057B034A047B0259037B0268037A0177017A0188017B009E007E00CC0081 +00FF018100FF018100FF018100FF018100FF018100FF018100FF018100FF01 +8100FF018100FF01750A0000760B0000760B0000770C0000780C0000780C00 +00790D0000790D0000770B0000750802027405070574051006760519067805 +230679042D067B043B067C034A057C0359047C0267037B0277027B0187017C +019E017F01CC018100FF018100FF018100FF018100FF018100FF018100FF01 +8100FF018100FF018100FF018100FF01760B0000770B0000770C0000780C00 +00780D0000790D00007A0D00007A0E0000780C000076090102740606057505 +0F0777051907790522077A042C077B043A067C0449057D0358057C0367047C +0277027C0187027C019E017F01CB018100FF018100FF018100FF018100FF01 +8100FF018100FF018100FF018100FF018100FF018100FF01770C0000780C00 +00780D0000790D00007A0D00007A0E00007A0E00007B0E0000790D0000770A +01027507060576060E07780618077A0621077B052B077C0439077D0448067D +0458057D0367047D0276037C0287027D019E028001C9018100FF028200FF02 +8200FF028200FF028200FF028200FF028200FF028200FF028200FF028200FF +02780C0000790D0000790D00007A0E00007B0E00007B0F00007B0F00007C0F +00007A0E0000780B01017707050577060D08790617087B0620087C062A087D +0538087E0548077E0457067E0466057D0376047D0287037E029D028102C802 +8200FF028200FF028200FF028200FF028200FF028200FF028200FF028200FF +028200FF028200FF02790D00007A0E00007B0E00007B0F00007B0F00007C0F +00007C1000007C1000007B0F0000790C01017808040578070C087A0716087C +071F087D0629087E0637087F0547077F0556077F0465067E0475047E038703 +7F029D038102C7028200FF038200FF038200FF038200FF038200FF038200FF +038200FF038200FF038200FF038200FF037B0E00007B0F00007B0F00007C10 +00007C1000007D1000007D1100007D1100007D1000007B0D0101790A04057A +080B087B0715097D071E097E0728097F0636097F0646088005550780056506 +7F0475057F04860480039D038202C6038300FF048300FF048300FF048300FF +048300FF048300FF048300FF048300FF048300FF048300FF047B0F00007C10 +00007C1000007D1100007D1100007D1100007E1200007E1200007E1100007C +0E01017B0B04057B090B087C08130A7F081D0A7F08270A8007350A81064509 +8106540881056407800574068104860581049C048303C5038300FF048300FF +048300FF048300FF048300FF048300FF048300FF048300FF048300FF048300 +FF047C1000007D1100007D1100007E1200007E1200007E1300007F1300007F +1300007F1200007D1001017C0C03047D0A0A087E09120B80091C0A8109260B +8208330B8207430A8207530982066308820573078205850683049C058403C3 +048400FE058400FF058400FF058400FF058400FF058400FF058400FF058400 +FF058400FF058400FF057D1100007E1200007E1200007F1300007F13000080 +1400008014000080140000801300007F1101017E0E03047F0B08087F09100B +820A1B0B8209250B8309310B8308410B8307520A8307620983067208830684 +0784059C068604C2058501FE068300FF068100FF078000FF087F00FF087E00 +FF097E00FF097E00FF097E00FF097E00FF097F1300007F1300008014000080 +14000080150000811500008115000081160000811500008013010180100303 +800D0708810A0F0C840B190C840B230C850A2F0C85093F0C8508500B840861 +0A84077109810882097E0898097C08BC087503F80C6F00FF0F6E00FF0F6C00 +FF106B00FF116A00FE116A00FE116A00FE116A00FE116A00FE118014000080 +15000081150000811600008216000082160000821700008317000083160000 +8214000082120202830F0708830C0E0C850C170D860C220D860B2D0D870A3E +0D810B4D0E7C0C5D0E770C6C0E730D7D0E700E930D6E0DB60D6507F2125E02 +FC175D02FB175B02FA185B03FA185A03FA185A03FA185A03FA185A03FA185A +03FA1881160000821600008217000082170000831700008318000083180000 +8418000084180000841600008414020285110607860F0D0C870D150F890D20 +0F800E2A10790E3812720F47126C0F5712660F66136310781360118D125E11 +AF125B0FEB144F06F61C4F07F61C4E07F51C4D08F41C4C08F41C4C08F41C4C +08F41C4C08F41C4C08F41C8317000083170000831800008318000084190000 +84190000841A0000851A0000851A000085180000861602028714060689110C +0B820F121177101B146D11251568133216601340165B135016561360175214 +72184F1487174D14A5164E15E116400BEC1F3E0CEB1F3D0CEA1F3D0CEA1F3C +0CEA1F3C0CEA1F3C0CEA1F3C0CEA1F3C0CEA1F841800008419000084190000 +851A0000851A0000851B0000851B0000861B0000861B0000871A0000881901 +01871705067D170B0B71140F126213151759141F1953162A1A4E16371A4917 +471B4618591C41176B1D3D177F1D3A16991B3916CA1A2F10E3212E11E3202E +11E3202D11E3202D12E3202D12E3202D12E3202D12E3202D12E320851A0000 +851B0000851B0000861C0000861C0000861C0000871D0000871D0000881D00 +00891C0000821C0101791D05056F1C090A621B0D10551A13164B1A1B1A4119 +231E3B1A2E20361B3E22331C51222F1B63232A1A772328199020291ABA1E25 +18E3202519E2202419E2202419E2202319E1202319E1202319E1202319E120 +2319E120861C0000861C0000871D0000871D0000881E0000881E0000881F00 +00891F00008A1F00007F200000752101016C2104056122070A55220C0F4A22 +11153F21181B321F1E212B1F28232821382427234C23272562222524782122 +238E1F2223B81E1D20E0211C21E0211C21E0211C21DF211C22DF201C22DF20 +1C22DF201C22DF201C22DF20871E0000881E0000891F0000891F00008A2000 +008A2000008B210000872100007D23000072240000682501015E2603055428 +07094A290B0E402A1013342A161929281C2023292721212C3520212F491E23 +33621D2132781D1F318E1C1E30B41B192CE11E192DE11E192DE11E192EE11E +192EE11D192EE11D192EE11D192EE11D192EE11D8A2000008B2100008B2100 +008C2200008D2200008D23000085240000792500006F270000642800005A2A +0101512C0305492F060840310A0D36330E122B33141822331B1D1E36251D1C +3B321B1C3F451A1D405E191C4075191B3F8B181A3DAF17163BE41A163BE419 +163CE419163CE419163CE419163DE419163DE419163DE419163DE4198D2300 +008D2300008E2400008F2500009025000084260000762700006B290000612A +0000582D00004F3001014833030440360507383A080B2E3C0D10253E13161C +3F1A1A1944241917493018174D4317174E5A16184F7115174E8815174CAB14 +174BEB13174CEB13174CEB13174CEB12174DEB12174DEB12174DEB12174DEB +12174DEB129026000091260000922700009228000083280000732A0000682B +00005E2C0000552E00004D310000463501013F390203383E04053043070927 +460B0E1F481214184C1A16155124151355311512584314135B5713135C6D12 +135C8511135BA710145AEC10145AEC10145AEB10135BEB0F135BEB0F135BEB +0F135BEB0F135BEB0F135BEB0F942A0000952B0000962C0000812B0000712D +0000652E00005B2F0000523000004B320000443600003E3B00003841010131 +470304294C060821500A0D1952101214581912125E24110F6131120E644211 +0F68550F0F6A690E0F6A800D0E699F0D0F69E10C0F6AEA0C0F6AE90C0F6AE9 +0C0F6AE90C0F6AE90C0F6AE90C0F6AE90C0F6AE90C992F00009A3000007F2E +00006F30000062310000573200004F33000049340000433600003D3B000037 +4200003049000029500203225605071B5A0A0B145E100F1064190F0E6A230E +0B6E300E0B71400D0B75530B0B77660A0A787B0A0A77970A0A77CB090A78E1 +090A78E1090A78E0090A78E0090A78E0090A78E0090A78E0090A78E0099C34 +00007F3200006D3300005F340000543500004C36000046370000413900003C +3C000036430000304A000029520000235902021C6004071565080A0F6A0E0D +0C71180C0977220B087B2D0A077F3D08078250070785630606867706068691 +060685BD060686DB060686DB060686DA060686DA050686DA050686DA050686 +DA050686DA057F3600006B3600005D370000523800004A390000443B00003F +3D00003A3F0000354300002F4B000029540000235C00001D640102166A0405 +107007080B760D0A087E160906851F07048A2A05048E390403914C0302955E +020297720202968B020296B3020398D7020298D6020298D6020299D6020299 +D6020299D6020299D6020299D602693900005A3A0000503B0000483D000042 +3F00003C41000038440000334700002E4C000028550000225E00001D660000 +176E0102117503040B7C060606830A07048D110502971A03019F250201A534 +0101AB480100B05C0000B66F0001B6890101B4AF0001B7E20000B7E20000B7 +E20000B7E20000B7E20000B7E20000B7E20000B7E200593E00004E3F000046 +410000404300003A460000354A0000314D00002C50000028560000225F0000 +1C68000017710000127901010D8101020789020303920603019F0B0100B213 +0000C51D0000D42B0000DF3F0000EA540000F4690000F7820000FBA60000E9 +FF0000E9FF0000E9FF0000EAFF0000EAFF0000EAFF0000EAFF0000EAFF004D +430000454500003E490000384D0000335000002D54000029580000265B0000 +226000001C6A000017730000127B00000D830000088B000004930001019E02 +0100AD060000C60C0000E0160000F6220000FF360000FF4E0000FF630000FF +7D0000FF990000FFF40000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF00444A00003D4F000036530000305700002A5A0000265D0000 +235F00001F6100001C650000166D0000117500000E7C00000B830000078B00 +0004930000019E020100AC050000C50B0000DE160000F5210000FF340000FF +4D0000FF610000FF7A0000FF900000FFE40000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF003A510000335500002D590000285C0000 +235F0000206100001C6300001964000016670000136E0000117500000E7C00 +000B830000088B000004930000019D020100AC050000C40B0000DD150000F3 +200000FF320000FF4B0000FF5E0000FF760000FF8C0000FFD10000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00315600002A5A0000 +255E0000216100001D63000019640000176500001765000017670000146E00 +00117500000E7C00000B830000088A000004930000019D010100AB050000C3 +0B0000DB150000F2200000FF300000FF490000FF5C0000FF730000FF880000 +FFB60000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +285C0000235F00001E6200001A640000176500001765000017650000176500 +0017670000146E0000117500000E7C00000B830000088A000004920000019C +010100AA050000C10A0000D9140000F01F0000FF2E0000FF480000FF5A0000 +FF6F0000FF840000FFA40000FFED0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF00206100001C630000186500001765000017650000176500 +00176500001765000017670000146E0000117500000E7B00000B830000088A +000004920000019C010100A9040000C00A0000D8140000EF1E0000FF2C0000 +FF450000FF580000FF6C0000FF810000FF970000FFDC0000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<6D0500006E0500006E0500006F060000700600007007000071070000710700 +00710800006D0401016C0307036C0310046D0319046F02220371022C037301 +39027501460277015402770163017601720176008200770095007800B6007C +00F9007D00FC007D00FC007D00FC007D00FC007D00FC007D00FC007D00FC00 +7D00FC007D00FC006E0500006F0600006F0600007007000070070000710700 +007108000072080000720800006E0501016D0306036D030F046E0318047003 +210472022B0474023803760146027701530277016201770171017600810077 +0094007900B4007D00F8007D00FC007D00FC007D00FC007D00FC007D00FC00 +7D00FC007D00FC007D00FC007D00FC006F0600007006000070070000710700 +007108000072080000720800007309000073090000700601016E0405036E03 +0E046F0318047103210473022A047502370377024503780253027801620277 +01710177008100780093007900B3007D00F6007E00FD007E00FD007E00FD00 +7E00FD007E00FD007E00FD007E00FD007E00FD007E00FD0070070000710700 +007108000072080000730900007309000074090000740A0000740A00007107 +01016F0405036F030D05700317057203200474032A04760236047702440379 +025203790161027801700178008000780092007A00B1007E00F4007F00FD00 +7F00FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE +007108000072080000730900007309000074090000740A0000750A0000750A +0000760B0000720800007004040470040C057204160573041F057503290577 +033504780243047A0252037A02600279016F0178007F00790091007B00B000 +7F00F2007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE +007F00FE007F00FE00730800007309000074090000740A0000750A0000760B +0000760B0000770B0000770C0000740900007105030472040B057304150675 +041E057604280578033405790342047B0251037B025F037A016E0179007E00 +790090007B00AE008000F0008000FF008000FF008000FF008000FF008000FF +008000FF008000FF008000FF008000FF0074090000750A0000750A0000760B +0000760B0000770C0000780C0000780C0000780D0000760A00007306030473 +050A067405140676041D0678042706790333067A0341057C0350047C025F03 +7B026E027A017E017B0190017C00AD008000EE018100FF018100FF018100FF +018100FF018100FF018100FF018100FF018100FF018100FF01750B0000760B +0000770C0000770C0000780C0000790D0000790D00007A0D00007A0E000077 +0B000075070203750609067605130777051C07790526077A0431077C044006 +7D044F057D035E047C026D037B027D027C018F017D01AD018101EE018100FF +018100FF018100FF018100FF018100FF018100FF018100FF018100FF018100 +FF01770C0000780C0000780D0000790D00007A0E00007A0E00007B0E00007B +0F00007B0F0000790C000077090203760708067706110879061B087A062408 +7C0530087D053F077E044E067E045D057D036C047D027D037D028F027E02AC +028201EB018200FF028200FF028200FF028200FF028200FF028200FF028200 +FF028200FF028200FF02790D00007A0D00007A0E00007B0E00007B0F00007B +0F00007C1000007C1000007C1000007A0E0000780B02027808070679070F08 +7B0719087C0723087D062E097E053D087F054C077F045C067E046B057E037C +047E038F038002AB028002E4027D00FD047B00FC057A00FB057900FB057800 +FB067700FB067700FB067700FB067700FB067B0E00007B0F00007B0F00007C +1000007C1000007D1100007D1100007D1100007E1200007C0F00007A0C0202 +7A0906067A070E097D0818097E0821097F072C0980063B0980064B0880055B +077C056A077906790775068C067306A6067206DA066A01FA0B6901F90B6702 +F90B6702F80C6602F80C6502F80C6502F80C6502F80C6502F80C7C1000007C +1000007D1100007D1100007E1200007E1200007E1200007F1300007F130000 +7E1100007D0E01017C0B05067D090C097E09160A8009200A81082A0A800739 +0B7908470C7309560C6F09650C6B0A740C680B880B650BA30A640BD40A5B04 +F6125904F5125804F5135704F4135705F4135605F4135605F4135605F41356 +05F4137D1100007E1200007E1200007F1300007F1300007F14000080140000 +8014000080150000801300007F1001017E0D05057F0A0B0A8009140B7F0A1E +0C770B270E700C33106A0D4210640D50105F0D5F115B0D6F11580E8210560E +9C0F550FCB0F4E09F4154D0AF4154C0AF3154B0AF2154B0AF2154A0BF2154A +0BF2154A0BF2154A0BF2157F1300007F130000801400008014000081150000 +811500008116000082160000821600008115000081120101810F0405810D0A +09760C100F6C0D1911640F22135F102D1459113B13541149144F1159154B11 +6A1648117D15461195144612BF13410FED163F0FEC163E0FEB163D0FEB163D +0FEA163C0FE9173C0FE9173C0FE9173C0FE917801500008115000081160000 +82160000821700008317000083170000831800008318000083170000831501 +017D1404047313080966110C105A11141452121D174C132618471432184214 +40193F15521A3B15631B3714761B34148C193313AE182F12DF192F12DF192E +13DF192E13DF192E13DF192D13DF182D13DF182D13DF182D13DF1882160000 +82170000831700008318000083180000841900008419000084190000851A00 +00851900007A19010171190303661807085A180B0F4E171114451719183B17 +201C34172A1E3018381F2D194A2029185C2126186E202417851E2417A51C24 +18DA1A2418D91A2318D91A2319D91A2319D81A2219D81A2219D81A2219D81A +2219D81A831800008419000084190000841A0000851A0000851B0000851B00 +00861B0000821C0000781D00006E1D0000641D0203591E06084E1E0B0D431E +1013381E16192C1C1B1F261C2521241E33212320452023225A1F22226F1E1E +20841D1E20A21B1D20D91B1D20D91A1D21D91A1D21D91A1D21D91A1D22D91A +1D22D91A1D22D91A1D22D91A851A0000851B0000861B0000861C0000861C00 +00871D0000871D0000801E0000762000006C20000061210000572202044D23 +06084324090D39250E122E25131724241A1D1F25231F1E27311D1E2B431C1F +2E591A1E2F6F1A1C2E84191A2CA018192BDB18192CDB18192CDB18192DDA18 +182DDA18182DDA18182DDA18182DDA18182DDA18861C0000871D0000871D00 +00881E0000881F0000891F00007E20000073220000692300005E2400005425 +00004B27020342290507392B080C302D0D10262D12161E2E191B1B31231A19 +362F19193941181A3B5717193B6C16173B811616399C151638D7151639DD14 +1639DD14163ADD14163ADD13163ADD13163ADD13163ADD13163ADD13891F00 +00891F00008A2000008A2100008B2100007C2300006F240000652500005B26 +000052280000492A0000412D0203393004063133070A29360B0E203711141A +391917173E231616432F1515464014154854131549691313487E1213479911 +1446CF101346DF101346DE101346DE101347DE101347DE101347DE101347DE +101347DE108C2200008C2200008D2300008A240000792500006C2700006128 +0000572900004F290000472C0000402F000039330102323803042A3C060823 +3F0A0D1B40101216451913134B2212114E2E1211523F11115452101056660F +0F567B0E0F56960D1054C60D1054DE0D1054DE0D1054DE0D1055DE0C1055DD +0C1055DD0C1055DD0C1055DD0C8F250000902600008A26000077280000692A +00005D2B0000542C00004C2D0000452E00003F31000039360000323B01012B +400203244505071D48090B154A0E10115018100F57230E0D592E0F0C5D3E0E +0C60500D0B63630C0B64770B0B63900A0B62BB0A0C62DA0A0C62DA0A0C62DA +090B62DA090B63D9090B63D9090B63D9090B63D909932900008C2A0000762B +0000672D00005A2E0000502F000049300000433100003E3300003837000031 +3D00002B430000254901021E4E04061752080A11560F0D0D5D180D0B63220C +09662E0B08693C0A086C4D09077060070771730707718A070771AF070770D4 +060770D4060771D4060771D4060771D3060771D3060771D3060771D3068C2D +0000742E000064300000573100004D32000046330000403500003B37000037 +390000313E00002B450000254C00001F53010218580406115D08090C620E0B +09691809076F220806732C0705763A0604794B04037D5C03037F6F03037F86 +03037EA703037ED003037ED003037FCF03037FCF03037FCF03037FCF03037F +CF03037FCF037332000062330000553400004B360000443700003E39000039 +3B0000343E0000304000002B470000254F00001F560000195D010213620405 +0C670708086E0F0805761806047D200402812A030285380201894901018D5A +0101906D01018E8401018DA401018FD001018FD000008FD000008FD000008F +D000008FD000008FD000008FD000603700005338000049390000423B00003C +3D000036400000324300002D4600002A490000245000001F59000019600000 +136701020D6D030408740805047B0E0502841502018C1D0100932700009834 +00009C450000A0570000A5690000A5800000A2A00000A5D60000A5D80000A5 +D80000A5D80000A5D80000A5D80000A5D80000A5D800513B0000483D000040 +3F00003A420000344600002F4A00002B4D000027510000235400001F5A0000 +19630000146A00000E71010108780203048004030287090200910E01009E14 +0000AA1D0000B4290000BB3B0000C34F0000CC630000D07A0000D1970000CB +D40000CCEC0000CCED0000CCED0000CDED0000CDED0000CDED0000CDED0046 +4100003F44000038480000324D00002C5100002855000024580000205B0000 +1D5E000019640000136D00000F7400000C7C000009830001058B0101029501 +0100A1040000B5090000CF110000EA1B0000FF280000FF430000FF580000FF +710000FF8A0000FFDC0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF003D4A0000364F00002F5400002A590000255D000021600000 +1E6200001A64000018650000156A0000127100000F7800000D7F00000A8600 +00068E00000397000101A3030000B5080000CF100000E81A0000FF260000FF +400000FF560000FF6D0000FF860000FFC00000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF00345500002D590000275D000022600000 +1E6200001B640000176500001765000017650000156A0000127100000F7800 +000D7F00000A860000068E00000396000101A2030000B4070000CD0F0000E7 +1A0000FD250000FF3E0000FF540000FF6A0000FF820000FFAB0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF002A5A0000245E0000 +206100001B6300001865000017650000176500001765000017650000156A00 +0012700000107700000D7E00000A860000068D00000396000101A1030000B3 +070000CC0F0000E6190000FB250000FF3B0000FF520000FF670000FF7F0000 +FF9C0000FFF10000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +226000001D6200001965000017650000176500001765000017650000176500 +00176500001669000013700000107700000D7E00000A860000078D00000396 +000101A1030000B2070000CB0E0000E5180000F9240000FF390000FF500000 +FF640000FF7C0000FF910000FFDE0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001B64000017650000176500001765000017650000176500 +001765000017650000176500001669000013700000107700000D7E00000A85 +0000078D00000395000101A0020000B1070000C90D0000E3180000F8230000 +FF360000FF4E0000FF610000FF780000FF8B0000FFC10000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<62020000630200006402000065030000650300006603000067030000680300 +0068040000670201016501060165010F0265011802670121016A002A016D00 +36006F00420071004F0072005E0072006D0072007D0072008E007300A60076 +00DB007800F6007800F6007800F6007800F6007800F6007800F6007800F600 +7800F6007800F6006302000064020000650300006603000067030000680300 +0068040000690400006A040000680301016601060266010E02660117026801 +20016B0029016D0035007000420072004F0073005D0073006C0072007C0073 +008D007400A5007700DA007900F8007900F8007900F8007900F8007900F800 +7900F8007900F8007900F8007900F800650300006603000067030000680300 +0068040000690400006A0400006B0400006B0400006A030101670105026701 +0D0268011702690120026C0129016E0034007000410072004E0073005C0073 +006B0073007B0074008C007400A4007700D8007900F9007900F9007A00F900 +7A00F9007A00F9007A00F9007A00F9007A00F9007A00F90067030000680300 +0069040000690400006A0400006B0400006C0500006C0500006D0500006C04 +01016801040268020D02690216026A011F026D0128026F0133017100400173 +004D0174005C0074006B0074007B0074008C007500A3007800D6007A00F900 +7A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9 +0068040000690400006A0400006B0400006C0500006D0500006E0500006E05 +00006F0600006E050000690203026A020C036A0215036B021E026E01270270 +01320272013F0174014D0175015B0175006A0074007A0075008B007600A200 +7900D5007B00FA007B00FA007B00FA007B00FA007B00FA007B00FA007B00FA +007B00FA007B00FA006A0400006B0500006C0500006D0500006E0500006F06 +00006F06000070060000700700006F0600006B0202026B020B036B0214036D +021D036F0226037101310273013E0275014C0176015A017600690175007900 +76008A007700A1007A00D2007C00FB007C00FB007C00FB007C00FB007C00FB +007C00FB007C00FB007C00FB007C00FB006D0500006E0500006F0600006F06 +00007006000070070000710700007108000072080000710700006D0402026C +030A036D0313046E031C04710225037302300374013D0276014B0277015901 +7701680176007800760089007800A0007A00D0007D00FC007D00FC007D00FC +007D00FC007D00FC007D00FC007D00FC007D00FC007D00FC006F0600006F06 +00007007000071070000710800007208000072080000730900007309000073 +0800006F0502026E0408036E03110470031B047203240474022F0476023C03 +77024A027801580278016701770077017700880078009E007B00CE007E00FD +007E00FD007E00FD007E00FD007E00FD007E00FD007E00FD007E00FD007E00 +FD00700700007107000072080000720800007309000074090000740A000075 +0A0000750A0000740A00007106010270040704700410057204190574032305 +75032D0577023B04790249037902570379016602780176017800860079009D +007C00CB007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00 +FE007F00FE007F00FE00720800007309000074090000740A0000750A000075 +0B0000760B0000760B0000770C0000760B0000730801017105060472040E06 +740418067504210577032C06790339057A0348047B0256037A026502790175 +0179008500770099007600BF007701F7017501F6017301F5017201F4017101 +F3017001F3027001F3027001F3027001F302740A0000750A0000760B000076 +0B0000770C0000770C0000780C0000790D0000790D0000780C000075090101 +7306040574050D06760517067705200679042A067A0437067B0346057A0355 +0575046305710471056E0482056A0497046804BB046502F0056403EF066203 +EF066103EF066103EF076004EF076004EF076004EF076004EF07760B000077 +0C0000780C0000780D0000790D00007A0D00007A0E00007B0E00007B0F0000 +7B0E0000780B00007607030476060B067706150779061E077B052807770634 +097106420A6B07500A67075E0A63076D0A60087F095D0894095B08B8085705 +EF0C5606EF0C5506EE0D5406EE0D5306EE0D5306EE0D5306EE0D5306EE0D53 +06EE0D790D0000790D00007A0E00007B0E00007B0F00007B0F00007C100000 +7C1000007C1000007C1000007A0D0000780A030479080A077A07130975081C +0A6D09250C670B300D620C3D0E5C0B4A0E570B580F540B680F510B7A0F4E0C +8F0E4D0CB20D4B0AED10490AEC10490AEC10480BEC10480BEB0F470BEB0F47 +0BEB0F470BEB0F470BEB0F7B0E00007B0F00007C0F00007C1000007D100000 +7D1100007D1100007E1200007E1200007E1200007C0F00007B0C0203770A08 +076B090E0D620B170F5C0D2010570F2A11520F36124D0F4312480F5213450F +6214420F74133F0F89123E0FA8113F0FE7113D0FE5113C0FE4113B0FE3113A +0FE2113A0FE211390FE112390FE112390FE1127C1000007D1100007D110000 +7E1200007E1200007F1300007F1300007F14000080140000801400007E1100 +00741002026A1006075D0E0B0E520E12124B101B144611241541122E163B12 +3B1738124B1835135C1831126D192E1181182D119C162D11D4152C11D6152B +12D5152A12D5162A12D4162912D4162912D4162912D4162912D4167E120000 +7F1300007F1300008014000080140000811500008115000081160000821600 +007E16000073160000681501025D15050752140A0D471410123E1517163515 +1E192E15271B2A15331D2716431D2516541E2216661E20157B1C2015951A21 +16C6182016CF182016CE181F16CE181F17CE181F17CE181F17CE181F17CE18 +1F17CE18801400008115000081160000821600008217000082170000831700 +00831800007B180000731A0000671900005C190102521A0506471B090C3C1B +0E11321B14172719191C2119221E1F1B2E1E1F1D3F1D1F1F521C1E20671B1C +1F7A1A1A1E93191B1EC0181B1FD0171A1FD0171A1FD0171A20D0171A20D017 +1A20D0171A20D0171A20D01782170000831700008318000083180000841900 +008419000084190000791B00006F1C0000661D00005A1D0000501E0102461F +05063C20080B32210C10292112152020171B1C21211C1B242D1A1A273E191B +2A51181B2C6717182A7A17172991161728BC151729D214172AD214172AD214 +172AD214172AD214162BD214162BD214162BD2148419000084190000851A00 +00851A0000851B0000821B0000771D00006C1E0000621F0000592000004E21 +0000452202023C2404063326070A2A270B0F222810141A281719182C211817 +312D1617343D1516364F14163763141437771313368E121335B5121335D211 +1335D2111335D2111336D2111336D2111336D2111336D2111336D211851B00 +00861C0000861C0000871D0000821E000075200000692100005E2200005422 +00004D230000432500003B280102332B03052C2E060824300A0D1C310F1216 +33171515382114143D2D1313403C1212424E1111436110104375100F438C0F +1041B10E1041D20E1041D20D0F41D20D0F41D20D0F42D20D0F42D20D0F42D2 +0D0F42D20D871E0000881E0000891F00008120000072220000652300005924 +00005025000049260000422700003A2A0000332E01012C320203253605061E +38090B17390E10123E1711114421100F482C100F4B3B0F0E4E4D0D0D505F0D +0C51720C0C50890B0C4EAA0A0C4DD10A0C4ED10A0C4ED10A0C4ED10A0C4ED0 +0A0C4ED0090C4ED0090C4ED0098B2100008B210000802300006F2500006126 +0000562700004D280000452900003F2B00003A2C0000333100002C36000026 +3A0102203E04051841080A11420D0F0E49170E0D50210C0B532C0D0A563A0B +09594A0A085C5C09085E6F08085D8508085CA307085BCD07085BCD07085BCC +07085BCC07085CCC06085CCC06085CCC06085CCC068F2400007F2500006D28 +00005E290000532A0000492B0000422D00003C2E000037300000333300002D +380000273E0000214301011A470405134A07090D4E0E0C0B55170A095B2109 +075F2B09066138080564480604685905046A6C04046B8104046B9C050469C8 +040469C8040469C704046AC704046AC703046AC703046AC703046AC7037F29 +00006B2B00005C2C0000502E0000472F0000403100003A3300003535000031 +3700002D3A000027400000214700001B4C0101145104050E550808095A0E09 +0762180705682106036B2A05026D3603027146020176570101796A0101797E +01017897010177C3010177C4010178C4010078C3000078C3000078C3000078 +C3000078C300692E0000593000004D320000443300003D3500003837000032 +3A00002E3C00002A3F000027420000214900001B500000155601020F5B0405 +085F080706671006046F1A040275210200792900007C360000804500008355 +000086670000867B00008495000084BF000084CA000085CA000085CA000085 +CA000085CA000085CA000085CA00573400004B350000433700003C39000036 +3C0000303F00002C4300002846000024480000214C00001B530000165A0000 +106001020A650404056B090403721004027A170201811D0100862500008A30 +00008E4000009251000095630000977700009592000095BC000095D2000096 +D2000096D2000096D2000096D2000096D2000096D2004A390000413B00003A +3E0000344200002E460000294A0000254D0000215000001E5300001B550000 +165D0000106300000D690101096F020305760503037D0A0301850F02008E15 +0000971D00009E280000A4370000A9490000AE5D0000B3710000B38B0000B0 +B50000B2DF0000B3DF0000B3DF0000B3DF0000B3DF0000B3DF0000B3DF0040 +40000038440000324800002C4D000027510000225500001F5800001B5B0000 +185D0000175E000014650000116C00000E7301010A7A010107800102038803 +0201920601009E0A0000B0110000C31B0000D3270000E03B0000EA520000F5 +670000F8820000FBAD0000EBFF0000EBFF0000EBFF0000ECFF0000ECFF0000 +ECFF0000ECFF00374A0000304F00002955000024590000205D00001C600000 +18620000176400001765000017660000146C0000117300000E7A00000B8100 +000889000005910000019B010100A8040000C00A0000D9140000F2200000FF +310000FF4C0000FF610000FF7C0000FF9D0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF002D580000275D0000226000001D630000 +196500001765000017650000176500001765000017650000146C0000117300 +000E7A00000C8100000889000005910000029A010100A7040000BE0A0000D8 +140000F01F0000FF2F0000FF4A0000FF5E0000FF790000FF910000FFEF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00245E00001F620000 +1A640000176500001765000017650000176500001765000017650000176500 +00146C0000117300000F7A00000C8100000888000005900000029A010100A7 +040000BD090000D6130000EF1E0000FF2D0000FF480000FF5C0000FF740000 +FF8C0000FFDD0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +1D630000186500001765000017650000176500001765000017650000176500 +001765000017650000146C0000117300000F7A00000C810000098800000590 +00000299010100A6040000BB090000D4120000ED1D0000FF2B0000FF460000 +FF590000FF700000FF870000FFBE0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +0017650000176500001765000017650000156C0000127300000F7900000C81 +000009880000059000000299000100A5040000BA090000D3120000EB1C0000 +FF290000FF430000FF570000FF6C0000FF830000FFA60000FFF70000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<590002005A0002005A0002005B0001005B0001005C0001005C0001005D0001 +005E0001005E0101005E0006005D000E005E0016005F001F00620028006500 +320068003F006A004B006D0059006E0067006D0077006D0087006E009B006F +00BF007200E9007200E9007200E9007200E9007200E9007200E9007200E900 +7200E9007200E9005A0002005B0002005B0001005C0001005C0001005D0001 +005E0001005E0101005F010100600101005F0005005F000D015F0016016000 +1E00630027006600320068003E006B004B006E0058006E0067006E0076006E +0086006E009A007000BE007300EB007300EB007300EB007300EB007300EB00 +7300EB007300EB007300EB007300EB005B0001005C0001005D0001005D0001 +005E0101005F01010060010100600101006101000061020000600004016000 +0C016001150161001E01640027006700310069003D006C004A006F0057006F +0066006F0076006F0086006F0099007100BE007400ED007400ED007400ED00 +7400ED007400ED007400ED007400ED007400ED007400ED005D0001005D0001 +005E0101005F01010060010100610101006102000062020000630200006302 +00006101030161010C016101140162011D0165002601680030006B003C006D +0049006F005700700065006F0075006F008500700099007200BD007500EF00 +7500EF007500EF007500EF007500F0007500F0007500F0007500F0007500F0 +005E0101005F01010060010100610100006202000063020000630200006402 +000065030000650300006301020162010B016301140164011C016600250169 +002F006C003C006E0048007000560071006500700074007000850071009800 +7300BC007600F2007600F2007600F2007600F2007600F2007600F2007600F2 +007600F2007600F20060010100610200006202000063020000640200006503 +0000650300006603000067030000670300006401010164010A016401130265 +011B01670124016A002E016D003B006F004800710055007200640071007400 +71008400720097007400BA007700F5007700F5007700F5007700F5007700F5 +007700F5007700F5007700F5007700F5006302000063020000640200006503 +000066030000670300006803000068040000690400006A0400006602010166 +0109026601120267011B02690123016C002D016E003A007000470072005400 +730063007200730072008300730096007500B9007900F8007900F8007900F8 +007900F8007900F8007900F8007900F8007900F8007900F800650300006603 +0000670300006803000069040000690400006A0400006B0400006C0500006C +05000069020101670108026801100269011A026A0122026D012C0170003900 +7200460074005300740062007300720073008200740095007600B7007A00F9 +007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00 +F90068030000690400006A0400006A0400006B0400006C0500006D0500006E +0500006E0500006F0600006C0401016902060269020F036A0218036C022102 +6F012B02710137017301440175015201750161017500700074008100750094 +007700B5007B00FA007B00FA007A00F8007900F7007800F7007700F6007700 +F5007600F5007600F5006A0400006B0400006C0500006D0500006E0500006F +0600006F0600007006000070070000710700006E0501016B0305036B020E03 +6C0217036E022003700229037301350274014302760151027601600176006F +0172007E006F008F006D00AB006E00EA006B01EB016901EA016801E8016701 +E7016601E6016601E5016501E5016501E5016D0500006E0500006F06000070 +06000070070000710700007108000072080000720800007309000071070000 +6D0303036E030C046E03150470031F0472022804740234037602420372024E +036E035C046A036A046603790363038B036002A6035E02DB025C02E2035B03 +E2035A03E2035A03E2035903E2045903E2045903E2045903E2047007000071 +0700007108000072080000730800007309000074090000740A0000750A0000 +750A0000730800007005020370040A047104140572041D05730326056D0430 +0768053D0863064A085F0657085B06660859067608560689075306A3075206 +D9065106E6075006E6074F07E6074F07E6074E07E5074E07E5084E07E5084E +07E508720800007309000074090000740A0000750A0000750B0000760B0000 +770B0000770C0000780C0000760A00007307020372050905720412066A061A +086407220A5F092C0B5B0B390C550A450C5009520D4D09610E4A09720D4809 +850C46099F0B4609D10B450AE40B440AE30B430AE20B430AE10B420AE10B42 +0AE10B420AE00B420AE00B750A0000750B0000760B0000770C0000770C0000 +780C0000790D0000790D00007A0E00007A0E0000780C0000760902026D0706 +0662070C0B5909150D540B1E0E4F0D270F4B0E3210450D3D10420D4C113F0D +5C123C0D6C11390D7F11380D980F380DC40F370DD90E360DD80F350DD70F34 +0DD60F340DD60F330DD60F330DD50F330DD50F770C0000780C0000790D0000 +7A0D00007A0E00007B0E00007B0F00007B0F00007C0F00007C100000780F00 +006C0E0101610D0406550C090C4C0D1010450E19123F1021133A102A143510 +3615321145162F1155162B10661729107816280F8F15280FB513270FCD1326 +0FCC132610CB142510CA142510CA142410CA142410CA142410CA147A0E0000 +7B0E00007B0F00007C1000007C1000007D1000007D1100007D1100007E1200 +00771300006D13000061120101561204054B12080B41120E11381315142F12 +1B172912241925132E1B22133D1B20144D1C1E145F1C1D14721A1C1488191D +14AB171D14C6161C14C5161C15C5161B15C5161B15C5161B15C5161B15C516 +1B15C5167C1000007D1100007D1100007E1200007E1200007F1300007F1300 +007F140000741500006B16000061160000551601014B1704054117080A3618 +0C102C1712152316171A1D161F1C1C182A1B1B1A391A1B1C4B191A1D5E1818 +1D7118171C8617171CA716171CC615171CC615171DC614171DC614171DC614 +171EC614171EC614171EC6147E1200007F1300007F14000080140000801500 +00811500007D16000072170000681800005F190000541A00004A1A0101401B +0405361C070A2D1D0B0F241D10141C1C1519181E1E1A17212A181723391617 +264B1517275E1515277014142785141326A4121426C8121426C7111427C711 +1327C7111327C7111327C7111327C7111327C7118115000081160000821600 +0082170000831700007B1800006F1A0000651B00005A1C0000511C0000491D +00003F1E0101362003052D22060926230A0D1E230E131724151615281F1515 +2C2A13142F391213314A1212325C1111336E11103283101031A10F1031C80E +1031C70E0F31C70E0F32C70E0F32C70E0F32C70E0F32C70E0F32C70E831800 +00831800008419000084190000791A00006D1C0000601D0000561E00004D1F +0000462000003E210000352301012E26020427290507202B090B192B0D1013 +2E151312331F1112382B10113A390F0F3C490E0E3D5A0D0D3E6C0D0C3E810C +0C3D9C0B0C3BC70B0C3CC70B0C3CC60B0C3CC60A0C3CC60A0B3DC60A0B3DC6 +0A0B3DC60A851A0000851B0000861B0000781D00006A1F00005D2000005221 +000049210000422300003C240000352600002E2A0000282D0102213104051A +32070A13330C0E0F38150F0E3D1F0E0D41290D0C45380C0B47480A0A49580A +094B6A09094A7E08084998070947C4070847C4070848C3070848C3070848C3 +070848C3070848C3070848C307871D0000871E000077200000682200005A22 +00004E230000462400003E26000039280000342900002F2D00002831000022 +3501011C380304153A07090E3C0C0D0B42150B0A491F0A094C290A084F3609 +07514507065556060557680505577B05055692040554BC040554C0040455BF +040455BF040455BF040455BF040455BF040455BF0487200000752200006524 +0000562500004B260000422800003B2A0000362C0000312E00002D30000029 +340000233900001D3D0000164103040F4206080A470D09084E160806541F07 +0557290604593405035B420302605302016466020165780101648D020163AF +010162BA010162B9010163B9010163B9010163B9010163B9010163B9017226 +00006227000053290000482A0000402C0000392E0000333000002F3300002B +35000027380000233C00001D41000017460000114903040A4D070706530E07 +055B180503602003016329020065330100684100006C520000706300007176 +0000718A00006FAB00006EBD00006EBD00006FBD00006FBD00006FBD00006F +BD00006FBD005F2B0000512C0000462E00003E30000037330000313600002C +380000283B0000253E0000214000001D440000184A0000124F01010B520304 +06570805045F100403651803026B1F02016F27010071310000743E0000784E +00007C6000007D7200007B8800007BA900007AC400007AC400007BC400007B +C400007BC400007BC400007BC4004E310000443200003C350000353800002F +3B00002A3E000026410000224400001F4700001C490000184E000012530000 +0D580101095C03030561060504670E04036F160302751C02017B2301007E2D +0000813A0000854A0000895C00008B6E00008986000088A7000089CC000089 +CC000089CC000089CC000089CC000089CC000089CC00423600003A39000033 +3D00002D41000028450000234900001F4C00001C4F00001951000016530000 +15560000125B00000E6101010B660202076B04040472090403791003018116 +0100881D00008E26000093330000974400009A5600009F6900009F8100009D +A400009FD600009FD600009FD600009FD600009FD600009FD600009FD60039 +3F0000324300002B480000264C0000215000001D5400001956000017590000 +17590000175A0000165D0000136300000F6A00010C70010108760202047D04 +0302850802018E0D01009A130000A71C0000B1270000B9380000C14D0000C9 +610000CE790000CE9A0000CAE80000CAEB0000CBEB0000CBEC0000CBEC0000 +CBEC0000CBEC00304A000029500000235400001F5800001A5C0000175F0000 +175F000017600000176100001762000016650000136C0000107300000D7B00 +000A830000078B00000394000101A0020100B1070000CA0E0000E6190000FC +250000FF3F0000FF560000FF6F0000FF8B0000FFE70000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0027580000215D00001C61000018640000 +17650000176500001765000017650000176500001765000016680000136F00 +00107600000D7D00000A840000078C000004940001019F020100B0060000C9 +0D0000E4180000FA240000FF3C0000FF540000FF6C0000FF860000FFD20000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF001F6200001A640000 +17650000176500001765000017650000176500001765000017650000176500 +0016680000136E0000107500000D7C00000A840000078B000004940001019F +020100AE060000C80D0000E2170000F8230000FF390000FF520000FF680000 +FF820000FFB30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +00176500001765000016680000136E0000107500000E7C00000B840000078B +000004930001019E020100AD060000C60C0000E0170000F6220000FF360000 +FF4F0000FF640000FF7E0000FF9F0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +001765000017650000176500001765000016670000136E0000117500000E7C +00000B830000088B000004930000019D020100AC050000C50B0000DE160000 +F4210000FF330000FF4D0000FF610000FF7B0000FF910000FFE60000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<53000600530006005300060054000500540005005500050055000500560004 +0056000400560004005700050056000C005600140058001C005A0025005D00 +2F0060003A0063004700660054006800620069007100680080006800910069 +00AB006B00DA006B00DA006B00DA006B00DA006B00DA006B00DA006B00DA00 +6B00DA006B00DA005400050054000500540005005500050055000400560004 +00560004005700040057000400580003005800040057000C00570014005900 +1C005B0024005E002E0061003A006400460067005400690062006900700069 +008000690091006900AA006C00DD006C00DD006C00DD006C00DD006C00DD00 +6C00DD006C00DD006C00DD006C00DD00550005005500050056000400560004 +00570004005700040058000300580003005800030059000300590003005900 +0B00590013005A001C005C0024005F002E006200390065004600680053006A +0061006A0070006A007F006A0090006B00AA006D00DE006E00E0006E00E000 +6E00E0006E00E0006E00E0006E00E0006E00E0006E00E00056000400560004 +005700040057000300580003005800030059000300590002005A0002005A00 +02005A0003005A000A005A0013005B001B005D00240060002D006300390066 +004500690052006B0060006B006F006B007F006B0090006C00A9006E00DE00 +6F00E3006F00E3006F00E3006F00E3006F00E3006F00E3006F00E3006F00E3 +0057000300580003005800030059000300590002005A0002005A0002005B00 +02005B0001005B0001005C0002005C000A005B0012005C001B005F00230061 +002C0064003800670045006A0052006C0060006C006E006C007E006C008F00 +6D00A9006F00DD007000E5007000E5007000E6007000E6007000E6007000E6 +007000E6007000E60059000300590003005A0002005A0002005B0002005B00 +01005C0001005C0001005D0001005D0001005D0001005D0009005D0011005E +001A006000220063002B0066003700680044006B0051006D005F006D006E00 +6D007E006D008F006E00A7007000DC007100E8007100E8007100E8007100E8 +007200E8007200E8007200E8007200E8005A0002005A0002005B0001005C00 +01005C0001005D0001005E0001005E0101005F01010060010100600101005F +0008005F0010015F0019016100210064002B0067003600690043006C005000 +6E005E006E006D006E007D006E008E006F00A7007100DC007300EB007300EB +007300EB007300EB007300EB007300EB007300EB007300EB005C0001005C00 +01005D0001005E0001005F0101005F01010060010100610100006102000062 +020000620201006101060160010F01610118016300200166002A0168003500 +6B0042006D004F006F005D006F006C006F007C0070008D007000A6007300DB +007400EE007400EE007400EF007400EF007500EF007500EF007500EF007500 +EF005E0101005F010100600101006001010061020000620200006302000064 +0200006402000065030000650300006201050162010E016301170164011F01 +670029016A0034006C0040006F004E0070005C0071006B0070007B0071008C +007100A5007400D9007200ED007000EC006F00EA006E00E9006D00E9006C00 +E8006C00E8006C00E800610200006102000062020000630200006402000065 +03000066030000670300006703000068030000680300006501040165010C02 +6501150266011E01690027016C0032006E003F0070004C0072005A006F0068 +006B0077006800870065009D006400C6006200DE006000DC005E00DA005D00 +D9005D00D9005C00D8005C00D8005C00D80064020000650300006603000066 +0300006703000068040000690400006A0400006A0400006B0400006C040000 +6701020267010B026701140269011D026B0126016E0031016D003D01690149 +0266025602620263025F0272025B028202580197015601B9015401D4015301 +D4015201D4025101D3025101D3025002D3025002D3025002D3026803000068 +030000690400006A0400006B0400006C0500006C0500006D0500006E050000 +6F0500006F0600006A020202690209026A0212036B021C036802240464032D +06600539075B054507570551075404600752056F074F0580064C0595054B04 +B9054A04D6054904D6054804D6054705D6054705D6054605D5064605D50646 +05D5066B0400006B0500006D0500006E0500006E0500006F06000070060000 +700700007107000071070000710800006D0401016C03070368031005600418 +075A06200856082909530A340A4D093F0B49084C0B46075B0C44086B0C4108 +7C0B3F0892093F07B4093F08D6083E08D5093D08D4093C08D4093C08D3093B +08D3093B08D3093B08D3096F0600006F060000700600007007000071070000 +7208000072080000730900007309000074090000740A00006F070101640605 +0459060B095107130B4C091B0C470B240D420C2D0E3E0B380E3B0B460F380B +5510350B6510330B760F310B8B0E310BAB0D320BCE0C300BCD0D2F0BCC0D2E +0BCC0D2E0BCB0D2D0BCB0D2D0BCA0D2D0BCA0D720800007208000072080000 +7309000074090000740A0000750A0000760B0000760B0000770B0000710D00 +00640B0000590B03044E0A070A450B0F0E3E0C1710380D1F11330E27122F0E +31132B0E3F14290F4E14270F5F14240E6F14230E8413230DA112240DC41123 +0EC311220EC312210EC212210EC212210EC212200EC112200EC112740A0000 +750A0000750B0000760B0000770C0000770C0000780C0000790D0000780D00 +006F0F0000661000005A1000004F0F0304451007093A100C0F321013122910 +19152410211720102A181E1138191C12471A1A12571A1912691918127E1719 +129A151912BE141912BD141813BD141813BD141813BD141813BC141713BC14 +1713BC14780C0000780C0000790D0000790D00007A0E00007B0E00007B0F00 +00761000006C110000621300005A1400004F140000451402033A1506093015 +0A0E271510131F13141819141C191816271917183418171A4517171B561615 +1B6815141B7C15141A9613141ABD12141ABD12141BBD12131BBD12131BBD12 +131CBD12131CBD11131CBD117B0F00007B0F00007B0F00007C1000007C1000 +007D11000074120000691400005F150000561600004E170000441700003A18 +020330190508281A090D201A0E1218191317151B1C17141E27151421341414 +224413132456121224671210247B11102394101123BE0F1124BE0F1024BE0E +1024BD0E1024BD0E1025BD0E1025BD0E1025BD0E7D1100007D1100007E1200 +007E1200007F13000072150000671600005C170000521800004A190000431A +0000391B0000301C0203281E05072220090C1A200C111420131412241D1312 +282711112B3410102C440F0F2E540F0E2F660E0D2E790E0C2E900C0D2DBA0C +0D2DBD0C0C2EBD0B0C2EBC0B0C2EBC0B0C2EBC0B0C2EBC0B0C2EBC0B801400 +008014000080150000801500007217000065190000581A00004E1B0000461C +00003F1D0000391E00003020000029220102232504061C26070A15270C0E10 +2913100F2E1D0F0E32270E0D35340D0C37430C0B38530B0A39640A093A770A +09388D090937B2080937BB080837BA080837BA080838BA080838BA070838BA +070838BA0782170000821700007F180000701A0000611B0000541C00004A1D +0000421E00003B20000035210000302300002A260000242900011E2C030417 +2D0608102E0B0D0D33140C0B371D0B0A3B260A093E33090941420807435207 +0645630705457506054489050541AA040541B7040541B7040442B6040442B6 +040442B6040442B6040442B604831A00007F1A00006E1C00005E1E0000511F +0000472000003E21000037230000322500002E2700002A290000252D00001F +30000018330203113406070B360B0B093C140907421D080645260705473106 +044A4004034D5004025061030251720201508502014EA001014DB201014EB1 +01014EB101014EB101014EB101014EB001014EB001711F00006C1F00005C21 +00004E220000442300003B250000342700002F2900002B2C0000282E000025 +3000001F34000019380000133A02030B3C050707400C0805471505044D1E04 +025026030151300201523C0100574D00005B5F00005D7100005C8300005A9C +000059B3000059B3000059B3000059B3000059B3000059B3000059B3005D23 +0000592400004B2500004127000039290000322C00002D2E00002931000025 +340000223600001F3800001A3C0000143F00000D42020307450606044C0E04 +0352160302571E02015A2502015B2E01005C3A0000604A0000655C0000676E +000067810000669A010064B8000064B8000064B8000064B8000064B8000064 +B8000064B8004C280000492900003F2B0000372E0000303100002B34000027 +370000233900001F3C00001C3E0000193F0000144400000E4801010A4A0203 +064E060504540D05035B150302611C030165240201662C0100683800006B47 +000070590000736B0000737E00007298010070BE000070BE000070BE000071 +BE000071BE000071BE000071BE003F2F00003D2F0000353200002F36000029 +3A0000243D0000204000001D420000194500001647000015480000134C0000 +0F5000010B53020207570504055C0B0504641304026A1B0301702102007329 +000076350000794400007D55000080670000807C00007E9700007EC600007E +C600007EC600007EC600007EC600007EC600007EC60036370000343800002D +3C000027400000224300001E4700001A4A0000174D0000164E0000164E0000 +164F000014530000105800000C5D01020861040305660804046E0F04027517 +03017C1D01008125000085300000893F00008C50000090620000917700008F +9400008FC5000090D0000090D0000090D0000090D0000090D0000090D0002D +4100002B42000025470000204B00001C4F0000185200001653000017540000 +175500001756000017560000145B0000116100000E6701010A6C0202067204 +03037A090402810F02008A140000931C00009A270000A0350000A5480000AA +5C0000AF710000AE8D0000ADBF0000AFDC0000AFDD0000AFDD0000AFDD0000 +AFDD0000AFDD00254E0000234F00001E5300001957000017590000175B0000 +175B0000175C0000175D0000175E0000175E000015640000126A00000F7100 +000B780101087F01020487020201900502009C080000AE0F0000C1180000D6 +240000E3370000ED4F0000F8650000FA820000FCBA0000EFFF0000F0FF0000 +F0FF0000F0FF0000F1FF0000F1FF001D5B00001C5C0000175F000017610000 +17620000176300001764000017650000176500001765000017650000156A00 +00127100000F7800000C7F000009870000068F00000298000100A5030000BA +090000D4120000EE1D0000FF2D0000FF490000FF5F0000FF7C0000FFA50000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF001765000017650000 +17650000176500001765000017650000176500001765000017650000176500 +0017650000156A0000127100000F7800000C7F000009870000068E00000297 +000100A4030000B8080000D2110000EC1C0000FF2B0000FF470000FF5C0000 +FF780000FF950000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +00176500001765000017650000156A0000127100000F7800000C7F00000986 +0000068E00000297000101A3030000B7080000D0110000EA1C0000FF280000 +FF440000FF5A0000FF730000FF8D0000FFE70000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +001765000017650000176500001765000017650000156A0000127100000F78 +00000D7F00000A860000068E00000397000101A2030000B5080000CF100000 +E91B0000FF260000FF410000FF570000FF6E0000FF870000FFCC0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<4C0009004C0009004D0009004D0008004E0008004E0008004E0008004F0008 +004F000800500008005000070050000B005000130050001A00530022005500 +2B00580036005A0042005F004F0062005D0064006B0063007A0062008A0062 +009E006300BE006300CA006300CA006300CA006300CA006300CA006300CA00 +6300CA006300CA004D0008004D0008004E0008004E0008004F0008004F0008 +00500008005000070050000700510007005100070051000B00510012005100 +1A005300210056002A00590035005C00410060004E0063005C0065006B0064 +007A006300890063009D006400BE006500CC006500CC006500CC006500CC00 +6500CD006500CD006500CD006500CD004F0008004F0008004F0008004F0008 +00500007005000070051000700510007005200070052000600520006005200 +0A0052001200520019005400210057002A005A0035005D00410061004E0064 +005C0065006A00650079006400890064009D006500BF006600CF006600CF00 +6600CF006600CF006600CF006600CF006600CF006600CF0050000700500007 +00500007005100070051000700520007005200060052000600530006005300 +06005400060054000900530011005400190056002000590029005B0034005E +00400062004D0065005B0066006900660079006500880065009D006600BF00 +6700D2006700D2006800D2006800D2006800D3006800D3006800D3006800D3 +00510007005100070051000700520006005200060053000600530006005400 +0500540005005500050055000500550008005500100055001800570020005A +0029005D0033005F00400063004D0066005A00670069006700780067008800 +67009C006800BF006900D6006900D6006900D6006900D6006900D6006900D6 +006900D6006900D60053000600530006005300060053000600540005005400 +050055000500550005005600040056000400560004005700080056000F0057 +00170058001F005B0028005E00330061003F0064004C006700590068006800 +680078006800870068009B006900BE006B00DA006B00DA006B00DA006B00DA +006B00DA006B00DA006B00DA006B00DA005400050054000500540005005500 +05005600040056000400560004005700040057000300580003005800030058 +00070058000F00580017005A001F005D0028005F00320062003E0065004B00 +690059006A006700690077006900870069009B006A00BE006D00DE006D00DE +006D00DE006D00DE006D00DE006D00DE006D00DE006D00DE00560004005600 +04005600040057000400570003005800030058000300590003005900020059 +0002005A0002005A0006005A000E005A0016005B001E005E00270061003100 +64003E0067004A006A0058006B0066006B0076006A0086006B009A006C00BE +006F00E2006F00E2006F00E2006F00E3006F00E3006F00E3006F00E3006F00 +E30058000300580003005800030059000300590002005A0002005A0002005B +0002005B0001005B0001005C0001005C0004005C000D005C0015005D001D00 +600026006300300066003D00680049006B0057006C0065006C0075006C0085 +006A0098006900BA006700DD006500DC006400DC006300DB006200DB006100 +DA006000D9006000D9005A0002005A0002005A0002005B0002005B0001005C +0001005C0001005D0001005D0001005E0001005E0101005E0003005E000B00 +5E0014005F001C006200250065002F0067003B006A0048006B005500680062 +006400700060007F005D0092005B00AF005900D3005700D2005600D1005500 +D1005500D0005400CF005400CF005300CF005C0001005C0001005C0001005D +0001005E0001005E0101005F01010060010100610101006101000062020000 +6000010160010A016001120161011B016300240166002E00630038015F0143 +025C0150025A015D0257016C0254017B0251018D014F00A6014D00CB014C01 +CB014B01CB014A01CB014A01CA014901CA014901CA014901C9015F0101005F +0101005F010100600101006101000062020000630200006302000064020000 +650300006503000064010101630108016301110163011A015E0221035A0329 +045705340652053F064F044B064C0459064B0369064803790545038A044403 +A5044303CA034203CA034103CA034003CA034003C9043F03C9043F03C9043F +03C90462020000620200006302000064020000650300006503000066030000 +6703000068030000680400006904000067030101650106025E020E03560316 +0551051D064D0725084A082F0945073909420745093F06540A3D06640A3B06 +7409390687083806A0073805C9063706C9063606C8073506C8073506C70734 +06C7073406C7073406C7076603000066030000670300006803000069040000 +690400006A0400006B0400006C0500006D0500006D050000670501015B0403 +02510409074A0611094408190A3F09200B3A09280C370A320D340A3F0D310A +4E0D2F0A5E0E2D0A6E0D2B09810C2B099A0B2C09C40A2B09C30B2A09C20B29 +09C20B2909C10B2809C10B2809C10B2809C10B6A0400006A0400006B040000 +6C0500006D0500006E0500006F0600006F0600007006000070070000670900 +005D09000052090202470806093F090D0C370A140E310C1C0F2C0C2310280C +2C11260C3912240D4812220D5813200C68131F0C7A121F0C9210200BBB0F1F +0CBB0F1E0CBA101D0CBA101D0CBA101D0CB9101C0CB9101C0CB9106F060000 +6F0600006F06000070060000700700007107000072080000720800006E0A00 +00640B00005C0D0000530E0000490D01023E0E0508340E0A0D2C0E1011240E +16131F0E1E151C0E2716190F33171810411716105118151162171511751515 +118B131610B1121511B6121511B5121511B5121411B5121411B5121412B512 +1412B5127208000072080000720800007309000074090000740A0000750A00 +006C0C0000620E0000590F000051110000491100003E120102341205082B13 +090D23120E111B11121616121A17151424161416301514183F1413194F1312 +19601311197212101889111118AB101118B4101019B40F1019B40F1019B40F +1019B40F101AB40F101AB40F750A0000750A0000760B0000770B0000770C00 +00770C00006B0F000060100000561200004E130000471400003F1500003415 +01022B1704072417080C1D170C101517111512191A14111B2413111E301110 +203F1010214F0F0F225F0F0D22710F0D21860E0D21A70C0D21B40C0D21B40C +0D22B40C0D22B40C0D22B40B0D22B40B0C22B40B790D0000790D00007A0D00 +007A0E0000770F0000691100005D130000531400004A150000421600003B17 +0000341800002B1A0102241B04061E1D070A171D0B0F111D11120F201B100E +24240E0E26300D0D283F0D0C2A4E0C0B2B5E0B0A2B6F0B092A840A092AA109 +092AB309092AB209092AB208092AB208092AB208092BB208092BB1087C1000 +007C1000007C10000076120000681400005B1500004F170000461800003E19 +0000371A0000311B00002B1D0000251F01011F2103041923060812230A0D0D +25120E0C291B0C0B2C240B0A2F300A09313E0908334D0807345D0806356D07 +0634810605339B050532AF050532AF050532AF050533AE050533AE050533AE +050533AE047F1300007F1300007514000066160000581800004C190000431A +00003A1C0000331D00002E1F00002A20000026220000202500001A28010213 +2905070D29090B0A2E120A08321B080735240806382F06053A3D05043C4C04 +043E5B0403406C03023F7E02023C9502023BAA01013BAA01013CAA01013CA9 +01013CA901013CA901013CA9016E1800006E18000065190000551A0000491C +00003F1D0000371F0000302000002B2200002824000025260000212900001B +2C0000152E01020E2F040608310A0806371206043C1B05033E230402402D03 +02433A020145490101485A0100496B0000497C00004691000044AB000044AB +000044AB000044AB000044AB000045AB000045AB005B1D00005B1D0000521D +0000461E00003C200000342200002E2500002927000026290000222C00001F +2E00001C300000163300000F35010109360505053A0B050341140302451B02 +0247230201482B02014A3701014D4701005058010052690000527B0000508F +00004EAF00004EAF00004EAF00004EAF00004EAF00004EAF00004EAF004A21 +00004A2100004322000039240000322600002C290000272C0000232F000020 +3100001D3300001A35000016370000103A00000B3B0102063C040504410B05 +03481203024D1A020250210201512902015235010054430000595500005D67 +00005D7900005C8D000059B3000059B3000059B300005AB300005AB300005A +B300005AB3003C2700003C27000037280000302B00002A2F00002532000021 +3500001D3700001A390000173B0000143C0000133D0000104000000C420101 +0744030505490905044F110402561903025A2002015C2801015D3201005F40 +0000645100006864000069760000688C000066B2000066B9000066B9000066 +B9000066B9000066B9000066B900322F0000322F00002E3100002834000023 +3800001F3B00001B3D0000173F000015410000154200001543000014440000 +114800000D4B0101094D03040652080504580F04035F170302651F02016826 +01006A3001006C3D0000714E000075600000767300007589000074AF000073 +C0000074C0000074C0000074C0000074C0000074C0002A3800002A38000027 +3A0000213E00001D4100001844000015470000154800001548000015490000 +164A0000154B0000125000000E5401010A580303065C060504620D04036A15 +0402701C020175230100792C00007C3900007F4A0000845B0000856F000084 +87000083AC000083C9000083C9000083C9000083C9000084C9000084C90022 +430000224300001F4500001A490000164D0000164E0000164F0000164F0000 +16500000165100001651000016530000135800000F5D00010B630202086804 +04056E090403751003027D160200841D01008A2500008E3200009243000096 +5500009B6900009A82000098A900009AD400009AD400009AD400009AD40000 +9AD400009AD4001B4F00001B4F000018510000165400001755000017560000 +17570000175700001758000017590000175A0000175B000014620000106800 +000D6E010109750202057B030303830703018C0C010097110000A4190000AF +250000B7350000BF4A0000C8600000CD790000CC9F0000C9EA0000CAEB0000 +CAEB0000CAEB0000CBEB0000CBEC00175B0000175B0000175B0000175C0000 +175D0000175E0000175F000017600000176100001762000017630000176400 +00146B0000117300000E7A00000B820000088A000004920000019D020100AC +050000C60B0000E1170000F8230000FF3B0000FF540000FF6F0000FF8D0000 +FFFB0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF001763000017630000 +17640000176500001765000017650000176500001765000017650000176500 +001765000017660000146D0000117400000E7B00000B820000088A00000592 +0000019C010100AB050000C40B0000DE160000F6220000FF380000FF520000 +FF6B0000FF870000FFE30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +0017650000176500001765000017660000146C0000117300000E7A00000B82 +00000889000005910000019B010100A9050000C20B0000DC150000F4210000 +FF350000FF4F0000FF670000FF820000FFC20000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017660000146C00001173 +00000E7A00000B8100000889000005910000019B010100A8040000C00A0000 +DA140000F2200000FF320000FF4D0000FF630000FF7E0000FFA60000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<46000B0046000B0046000B0046000B0047000B0047000B0048000A0048000A +0049000A0049000A0049000A0049000A0049001000490017004B001E004E00 +26005000300053003C00570049005B0057005D0066005E0075005D0083005C +0094005C00AC005D00BF005D00BF005D00BF005D00BF005D00BF005D00BF00 +5D00BF005D00BF0047000B0047000B0047000B0048000B0048000A0048000A +0049000A0049000A004A000A004A000A004A000A004B0009004A0010004A00 +16004C001E004F0026005100300054003C00580049005C0057005E0065005F +0074005E0083005D0094005D00AC005E00C1005E00C1005E00C1005E00C100 +5E00C1005E00C1005E00C1005E00C10048000A0048000A0048000A0049000A +0049000A004A000A004A000A004A0009004B0009004B0009004C0009004C00 +09004B000F004C0016004D001D005000250053002F0055003B00590048005D +0056005F006400600073005F0082005E0093005E00AC005F00C2005F00C200 +5F00C2005F00C2005F00C2005F00C3005F00C3005F00C3004A000A004A000A +004A000A004A000A004B0009004B0009004B0009004C0009004C0009004D00 +09004D0009004D0008004D000F004D0016004E001D005100250054002F0056 +003B005A0048005E0056006000640061007300600082005F0093006000AB00 +6000C4006000C4006000C4006000C4006000C4006000C4006000C4006000C4 +004B0009004B0009004B0009004B0009004C0009004C0009004D0009004D00 +08004E0008004E0008004E0008004F0008004E000E004E00160050001D0052 +00250055002F0058003B005B0047005F005500620063006200720062008100 +610092006100AB006200C6006200C7006200C7006200C7006200C7006200C7 +006200C7006200C7004C0009004C0009004C0009004D0009004D0008004E00 +08004E0008004F0008004F0008004F000800500007005000070050000E0050 +00150051001D005400250057002E0059003A005C0047006000540063006200 +6300710063008100620091006300AB006300CA006300CA006400CA006400CA +006400CA006400CA006400CA006400CA004E0008004E0008004E0008004E00 +08004F0008004F000800500007005000070051000700510007005100070052 +00070051000D005100140053001C005500240058002E005B0039005E004600 +61005300640062006500700064008000640091006400AB006500CE006500CE +006500CE006500CE006500CE006500CE006500CE006600CE00500007005000 +07005000070050000700510007005100070052000700520006005200060053 +000600530006005400060053000C005300140054001B00570024005A002D00 +5C0039005F00450063005300650061006600700066007F00650090006600AA +006700D2006700D2006700D2006600D2006500D2006500D1006400D0006300 +D0005200070052000700520007005200060053000600530006005300060054 +0005005400050055000500550005005500040055000B005500130056001B00 +580023005B002C005E00380061004400640052006700600068006F0065007E +0062008E005F00A6005D00CF005B00CE005A00CF005900CE005800CE005800 +CD005700CD005700CD00530006005300060053000600540005005400050055 +00050055000400560004005600040057000400570004005800030057000A00 +5700120058001A005A0022005D002C00600037006300440061004F005F005C +005C006A00590079005600890053009F005100CA005000CA004F00CA004E00 +C9004D00C8004C00C8004C00C8004C00C70056000400560004005600040056 +00040057000400570004005800030058000300590003005900030059000200 +5A0002005A000900590011005A0019005C0021005D002A005901330156013E +0253014A0251015702500166014D0175014A018501480099004600C0004500 +C2004400C2004300C1004300C1004200C1004200C0004100C0005800030058 +000300580003005800030059000300590002005A0002005B0002005B000100 +5B0001005C0001005C0001005C0007005C0010005900170154011E02510325 +034E042F044A043905470445054403520543036205410372043F0382033D02 +97033C01BB023B01C1023A02C1023902C0023902C0023802C0023802C00238 +02C0025A0002005A0002005A0002005B0002005B0001005C0001005D000100 +5D0001005E0101005F0101005F010100600101005D00050055010C024E0313 +0449041A0544052106410629073C06330839063F0837054D0836055D083405 +6C0832057E07310593063104B6053104C0053004BF052F04BF052E05BE052E +05BE052E05BE052D05BE065D0001005D0001005D0001005E0101005F010100 +6001010061010100610200006202000063020000630200005C030000530302 +014A03070643050E083D06160937071D0A3308240B2F082D0B2D083A0B2A08 +470C2809570C2708660C2608780B25078D0A2607AE092607BB092507BA0924 +07BA092407B9092307B9092307B90A2307B90A610200006102000061020000 +620200006302000064020000650300006603000066030000630400005B0600 +00550700004B0701014107040738080B0A3109120C2B09190D260A200F230A +2910210A34101F0B42111D0B51111B0B60111A0A71101A0A860F1B0AA40E1B +0AB40D1A0AB30D1A0AB30E190AB20E190AB20E180AB20E180AB20E66030000 +66030000660300006703000068030000690400006A0400006A040000620600 +005A080000520A00004C0B0000420C0101380C04062F0C080C270C0E0F200C +14111B0C1C13180D2414160E2F14140E3C15120F4B15120F5B14110F6C1312 +0F8011120F9C10120FAE0F120FAE0F1110AE0F1110AD0F1110AD0F1010AD0F +1010AD0F6B0400006B0400006B0400006C0500006D0500006E0500006D0600 +0061080000580B0000500C0000490E0000420F0000381001012F1003062611 +070B1F100C0F180F1114131019141112221411142C1311163A11101749100F +1859100E186A100D177E0F0D17980E0D16AD0D0D17AC0D0D17AC0D0D17AC0D +0D18AC0C0C18AC0C0C18AC0C6F0600006F0600006F06000070070000710700 +006C090000600B0000560D00004D0F0000451000003E120000371300002E13 +0001271403052015070A19150B0E121510130F1719120E1922100E1B2C0F0D +1D390D0D1E480D0C1F580C0B1F680C0A1F7B0B0A1F950A0A1FAC090A1FAB09 +0A1FAB09091FAB09091FAB090920AB090920AB097309000073090000730900 +00740A00006B0C00005E0E0000531000004A110000411300003A1400003315 +00002D16000027170101211903051B1A0609131A090D0E1B0F100C1D190E0B +20220C0A232C0B0A24390A0926480908275709072767080627790706279007 +0626A9060626A8060627A8060627A8060527A8050527A7050527A705770C00 +00770C0000770C00006B0E00005D10000051120000471400003E1500003516 +00002F1800002A190000261A0000211C00001C1E0203162005070E20080B0B +22100B0925180A08282109072B2C07062D3906052E47050430550504316504 +03317604032F8B03022DA402022EA402022EA302022EA302022EA302022EA3 +02022EA2026911000069110000691100005B1300004E150000431600003A18 +0000321900002B1B0000271C0000241E0000212000001D2200001724010110 +2504050A26080907291007062D18060430210503322B040235380202364501 +013854010139640101397401003788000034A3000034A3000034A3000034A3 +000034A3000034A3000034A3005816000058160000581600004C1700004019 +0000371A00002F1C0000291E00002520000022220000202400001D26000018 +280000112A01010B2B0305062D090604321104023619030237200202392902 +013B3501013C4301013F52010140630101407301003E8700003BA500003BA7 +00003BA700003BA700003BA700003BA700003BA700481A0000481A0000481A +00003E1C0000341E00002D2000002822000024250000202700001D2900001A +2B0000172C0000122E00000C300101073103040433090503371004023C1803 +023E1F02023F27020141320101434101014650010048620000497300004785 +000044A3000044AB000044AB000044AB000044AB000044AB000044AB003A1F +00003A1F00003A1F0000312100002B24000026270000222A00001E2C00001A +2E0000173000001431000012320000103400000C3501010836030305380705 +043D0F040243170302461E020247250201493002014B3D01014E4E01005260 +000053710000528400004FA100004EAF00004EAF00004EAF00004EAF00004F +AF00004FAF002F2600002F2600002F26000029290000242D0000203000001C +3200001834000014360000133700001337000013380000113900000D3B0001 +093D0203053F060504440D04034B150302501D020152240201532D0101543A +0100584A00005C5D00005E6F00005E8200005C9D01005BB400005BB400005B +B400005BB400005BB400005BB400282F0000282F0000282F0000233200001E +35000019380000153A0000143B0000143C0000143D0000143D0000143E0000 +124000000F4300000A45020206470505044D0C0503541403025A1B03015D23 +02015F2B01006037000064470000685900006B6C00006B8000006A9B010068 +BA000069BA000069BA000069BA000069BA000069BA00203900002039000020 +3900001C3C0000173E00001440000015410000154200001543000015440000 +154400001545000013470000104B00000C4F01020852040405570905045E12 +0403651A03016A2102016D2901006F34000072430000775500007A6800007A +7D0000799A000078C2000078C2000078C2000078C2000078C3000078C30019 +430000194300001943000015460000154700001548000015490000164A0000 +164B0000164C0000164C0000164D000014500000115500000D590101095E03 +030562070504690E040371160301771D02007D240100802F0000843E000087 +4F00008B6200008C7800008A9800008ACD00008BCD00008BCD00008BCD0000 +8BCD00008BCD00164E0000164E0000164E0000164F00001650000016510000 +16510000165200001653000017540000175500001756000015590000125F00 +000E6401010B6A02020770040304770804027E0E030187140100901C000097 +2600009C340000A2460000A65B0000AC710000AA900000AACE0000ACDB0000 +ACDB0000ACDB0000ACDB0000ACDB0017560000175600001756000017570000 +17590000175A0000175B0000175C0000175D0000175D0000175E0000175F00 +0016620000136900000F7000000C770101097F010105860102028F0302009B +070100AC0C0000C2150000D9200000ED310000F64C0000FC640000FE830000 +FED30000F7FF0000F7FF0000F8FF0000F8FF0000F8FF001760000017600000 +17600000176100001762000017630000176400001765000017650000176500 +00176500001765000016680000136F0000107600000D7D00000A850000078D +00000396000101A1030000B4080000CF100000EA1B0000FF290000FF470000 +FF5E0000FF7D0000FFB20000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +001765000017650000176500001765000016680000136F0000107600000D7D +00000A850000078C00000395000101A1020000B3070000CD0F0000E81A0000 +FF270000FF440000FF5B0000FF780000FF9C0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +0017650000176500001765000017650000176500001765000016680000136F +0000107600000D7D00000A840000078C00000395000101A0020000B1070000 +CB0E0000E6190000FD260000FF400000FF580000FF720000FF8F0000FFF900 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3F000C003F000C003F000C003F000C0040000C0040000C0041000C0041000C +0041000C0042000C0042000C0042000C0043000E004200140044001A004600 +210049002A004B0036004F004300540052005700610058006F0057007E0056 +008D0056009F005700B6005700B7005700B7005700B7005700B7005700B700 +5700B7005700B70040000C0040000C0040000C0041000C0041000C0041000C +0042000C0042000C0043000C0043000C0043000C0044000C0044000D004400 +140045001A00470021004A002A004C00360050004300540051005800600059 +006F0059007D0057008C0057009F005800B8005800B8005800B8005800B800 +5800B8005800B8005800B8005800B80042000C0042000C0042000C0042000C +0042000C0043000C0043000C0044000C0044000C0045000B0045000B004500 +0B0045000D004500140046001A00480021004B002A004D0035005100420055 +00510059005F005A006E005A007D0059008C0058009F005900B9005900B900 +5900BA005900BA005900BA005900BA005900BA005900BA0043000C0043000C +0043000C0043000C0044000C0044000B0045000B0045000B0046000B004600 +0B0046000B0047000B0047000D004600130047001A004A0021004C002A004F +00350052004200560050005A005F005C006D005B007C005A008B0059009E00 +5A00BB005A00BB005A00BB005A00BB005A00BB005A00BB005A00BB005A00BB +0045000B0045000B0045000B0045000B0045000B0046000B0046000B004700 +0B0047000B0047000B0048000A0048000A0048000C0048001300490019004B +0021004E002A00500035005300410058004F005B005E005D006C005C007B00 +5B008B005B009E005B00BB005C00BD005C00BD005C00BD005C00BD005C00BD +005C00BD005C00BD0046000B0046000B0046000B0046000B0047000B004700 +0B0048000A0048000A0049000A0049000A0049000A004A000A004A000C0049 +0012004A0019004C0020004F002900510034005500410059004F005C005D00 +5E006C005E007B005D008A005C009E005D00BB005D00BF005D00BF005D00C0 +005D00C0005D00C0005D00C0005D00C00048000A0048000A0048000A004800 +0A0049000A0049000A0049000A004A000A004A000A004B0009004B0009004B +0009004B000B004B0012004C0019004E002000510029005300340056004000 +5A004E005E005C0060006B005F007A005E0089005E009E005E00BB005F00C2 +005F00C2005F00C2005F00C2005F00C2005F00C2005F00C2004A000A004A00 +0A004A000A004A000A004A000A004B0009004B0009004C0009004C0009004C +0009004D0009004D0008004D000A004D0011004D0018004F00200052002900 +55003400570040005C004D005F005B0061006A0061007900600089005F009D +006000BC005E00C3005D00C3005C00C3005B00C3005A00C3005900C2005900 +C2004C0009004C0009004C0009004C0009004C0009004D0009004D0008004E +0008004E0008004E0008004F0008004F0008004F0009004F0011004F001800 +51002000540028005700330059003F005D004C0061005A00610068005D0077 +005A008600560098005400B7005300C4005100C4005000C3004F00C3004F00 +C3004E00C3004E00C2004D0008004D0008004D0008004E0008004E0008004F +0008004F000800500008005000070050000700510007005100070051000800 +510010005100170053001F00560028005800320058003D0057004900550056 +0054006400520073004F0082004B0094004900B2004800C3004700C3004600 +C2004500C2004500C1004400C1004400C10050000800500008005000080050 +00070050000700510007005100070052000700520006005300060053000600 +530006005300070053000F005300160055001E00520025004F012D014C0237 +024A014302490150014801600146016F0143007E00410090003F00AD003E00 +BF003D00BF003C00BE003C00BE003B00BE003B00BE003B00BE005200060052 +00060052000600520006005300060053000600540006005400050054000500 +5500050055000500560004005600060055000E00500014014B011A02470220 +0244032803400332043E033E043C024A043B025B0439026B0337027B033602 +8D023501A8013401BC013401BB013301BB013201BB013201BB013101BB0131 +01BB0154000500540005005400050054000500550005005600040056000400 +5600040057000400570003005800030058000300530003004D010A01460210 +03400316043C041D053704240634052D0632053906300546062E0455072C04 +65062B0475062B0388042B03A3032B03B9032A03B8032903B8032903B70428 +03B7042803B7042803B7045700040057000400570004005700040058000300 +5800030059000300590002005A0002005A00020058000100510101004C0201 +00440205043C040C0635051307300619082C0621092906290A2607340A2407 +410A2307500A21075F0A20066F0A2006830821059C072105B4072005B30720 +05B3071F06B3071F06B2081F06B2081E06B2085A0002005A0002005A000200 +5A0002005B0002005B0001005C0001005C0001005D00010056010000500300 +004B050000450600003B060305320608092B070F0B2508160C22081D0D1F08 +260E1C09300F1A093C0F180A4B0F170A5A0F16096A0F15097C0E1608940C17 +08AD0B1608AD0B1608AC0C1509AC0C1509AB0C1509AB0C1409AB0C5D000100 +5D0001005D0001005D0001005E0101005F010100600101005F010000560300 +004F05000049070000430900003C0A0000320A0204290A060A220A0C0D1C0A +1210180A1A11140B2212120C2B12100D37120F0E45120F0E55110E0F65110E +0E77100E0E8E0E0F0DA80D0E0EA70D0E0EA70D0D0EA70D0D0EA70D0D0FA60D +0D0FA60D6202000062020000620200006202000063020000640200005F0300 +00550600004E080000460A0000400B0000390D0000330E0000290E0204220E +06091C0E0A0D150D0F11100F17120F1120110E1229100D14350F0D15440E0C +16530D0B16630D0A16740C0A158A0B0A15A50B0A15A50A0A15A50A0916A50A +0916A40A0916A40A0916A40A67030000670300006703000067030000680400 +005F060000550800004C0A0000440C00003C0E0000350F00002F1000002911 +0000221202041C1305081613090C0F130E100D15170F0B171F0E0B19290C0A +1B350B0A1C430A091D520A081D6109071D7209071D8708071CA307071DA307 +061DA207061DA206061DA206061EA206061EA2066D0500006D0500006D0500 +006D05000060080000540B00004A0D0000410F000038100000311200002B13 +000026140000231500001D170203171705071118080B0B190E0D0A1B160B09 +1D1F0A0720290807213507062343060524500604245F050424700503248304 +03239E0303239E0303249E0303249E0303249D0303249D0302249D03620A00 +00620A0000620A00005F0B0000520D0000471000003D110000341300002D14 +00002715000024170000211800001E1A0000191C0101121D03050C1D070908 +1F0E090721160705241E060426280503283503022A4202022B4F02012C5D01 +012C6D01012B80010129980101289C0101289C0101289C0101289C0101299C +0101299C0154100000541000005410000051100000451200003A1400003115 +00002A17000025180000211A00001F1C00001C1D0000191F0000142100000D +2203040722070605250E0503291603022B1E03022D2702012E340101304001 +01314E0101325C0101326C0101317F01012E9701012D9F01012D9F01012D9F +01012D9F01012D9F01012D9F01451400004514000045140000431500003716 +00002E180000281A0000231C0000201E00001D2000001A2200001723000015 +2400000E2600000727020305280704032B0E04032E1603022F1D0302312502 +0233310201353E0101364C0101375B0101386B0101377E01003495000033A3 +000033A3000033A3000033A3000033A3000033A30037190000371900003719 +0000341900002C1B0000261E0000222000001E2200001B2400001826000014 +27000012290000112900000D2A0000082B0203052C0604042F0D0403331503 +02361C030237240202392E02013B3B01013D4A01013F5A0101406A01003F7C +00003C9400003AA600003AA600003AA600003AA600003AA600003AA6002C1E +00002C1E00002C1E00002A1F000025220000212500001C2700001829000015 +2B0000112C0000112D0000112D0000122E00000E2F00000A30010205310505 +04350B0403391303023D1B02023E220202402B020142380101444701014758 +010049690000487B00004592000044AB000044AB000044AB000044AB000044 +AB000044AB00252600002526000025260000242700001F2A00001A2D000016 +2F00001230000012310000123200001232000012330000123300000F350000 +0B36010106370404043B0A0503401204024519020247210201492902014A35 +01014D4401005155000054670000547A0000529000004FAF00004FAF000050 +AF000050AF000050B0000050B0001E2F00001E2F00001E2F00001D30000018 +32000013340000133500001336000013370000133700001338000013380000 +13390000103B00000C3D0101073E03040542080504481004034E180302531F +02015427020155320100573F00005C5100006065000061780000608E00005D +B500005DB500005DB500005DB500005DB500005EB500173800001738000017 +38000016380000143A0000143B0000143C0000143D0000143D0000143E0000 +143F0000143F000014400000114300000E46010109480203054C070504520E +0403591603025E1E020162260201632F0100643C00006A4D00006E61000070 +7400006F8B00006DB700006DBC00006DBC00006DBC00006DBC00006DBC0014 +40000014400000144000001440000015410000154200001543000015440000 +1545000015460000154700001547000015480000124C00000F5000010B5402 +0207570504055D0C0504651404026B1C030170230100732B0000763800007A +4900007F5B0000807000007F8900007EB400007EC600007EC600007EC60000 +7EC600007EC60015490000154900001549000015490000164A0000164B0000 +164C0000164D0000164E0000164F0000164F00001650000016510000145600 +00105B00000C60010208650403056A080403720F040279160201811D010086 +2500008B3100008F42000093550000976900009684000094B0000096D20000 +96D2000096D2000096D2000096D30016520000165200001652000016520000 +16530000175400001755000017560000175700001758000017590000175A00 +00175B000014600000116600000E6D01010A730102067A030303810603018A +0B020094100000A2170000AE230000B7330000BF480000C95F0000CE7A0000 +CCA50000CAEB0000CBEC0000CBEC0000CCEC0000CCEC00175C0000175C0000 +175C0000175C0000175D0000175E0000176000001760000017610000176200 +00176300001764000017650000156B0000127200000F7900000C8000000988 +000005900000029A010100A8040000C00A0000DB150000F5210000FF380000 +FF530000FF6F0000FF900000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +001765000017650000176500001765000017650000156B0000127200000F79 +00000C80000009880000059000000299010100A7040000BE0A0000D9140000 +F3200000FF340000FF500000FF6A0000FF890000FFF60000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +0017650000176500001765000017650000176500001765000017650000156A +0000127100000F7800000C80000009870000068F00000299000100A6040000 +BC090000D7130000F01F0000FF310000FF4D0000FF660000FF840000FFDC00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003B000D003B000D003B000D003B000D003C0011003C0017003F00 +1D00410025004400300048003D004C004B0050005B0052006A005200780051 +008700500097005000AB005100B1005100B1005100B1005100B1005100B100 +5100B1005100B1003A000D003A000D003A000D003A000D003A000D003A000D +003B000D003B000D003C000D003C000D003C000D003D000D003D000D003D00 +11003E00170040001D004300250045002F0049003D004D004B0051005A0053 +0069005300780052008600510096005100AB005200B2005200B2005200B200 +5200B2005200B2005200B2005200B2003B000D003B000D003B000D003B000D +003B000D003C000D003C000D003D000D003D000D003D000D003E000D003E00 +0D003E000D003E0011003F00170041001D004400250046002F0049003C004E +004A0052005900540068005400770053008600520096005200AB005300B300 +5300B3005300B3005300B3005300B3005300B3005300B3003C000D003C000D +003C000D003C000D003D000D003D000D003E000D003E000D003E000D003F00 +0C003F000C0040000C0040000C00400011004000170042001D004500250047 +002F004B003C004F004A005300590055006800550076005400850053009500 +5400AA005400B4005400B4005400B4005400B4005500B4005500B4005500B4 +003E000D003E000D003E000D003E000D003E000D003F000C003F000C004000 +0C0040000C0040000C0041000C0041000C0041000C00410010004200160044 +001D004600250049002E004C003B0050004900540058005700670057007600 +56008500550095005500AA005600B6005600B6005600B6005600B6005600B6 +005600B6005600B60040000C0040000C0040000C0040000C0040000C004100 +0C0041000C0041000C0042000C0042000C0043000C0043000C0043000C0043 +0010004300160045001D00480024004A002E004D003B005100490055005700 +580066005800750058008400560094005600A9005700B7005700B7005700B7 +005700B7005700B7005700B7005700B70042000C0042000C0042000C004200 +0C0042000C0042000C0043000C0043000C0044000C0044000C0044000B0045 +000B0045000B00450010004500160047001C00490024004C002E004F003A00 +5300480057005600590065005A00740059008300580094005800AA005900B9 +005900B9005900B9005900B9005900B9005900B9005900B90043000C004300 +0C0043000C0043000C0044000C0044000C0045000B0045000B0046000B0046 +000B0046000B0047000B0047000B0047000F004700160048001C004B002400 +4D002E0050003A0054004700580055005B0064005B0073005B008200590093 +005700AA005500BC005400BC005200BC005100BC005100BB005000BB005000 +BB0046000B0046000B0046000B0046000B0046000B0046000B0047000B0047 +000B0048000B0048000A0048000A0049000A0049000A0049000E0049001500 +4A001C004D0024004F002D0052003900550046005800540057006200550071 +00520080004E0090004C00A8004B00BF004900BE004800BE004700BE004700 +BE004600BE004600BE0048000B0048000B0048000B0048000B0048000A0048 +000A0049000A0049000A004A000A004A000A004A000A004B0009004B000900 +4B000E004B0015004C001C004E00230051002D004E0036004D0042004C004F +004B005E004A006D0047007C0044008C004200A4004100C0004000C0003F00 +BF003E00BF003D00BF003D00BF003D00BF004A000A004A000A004A000A004A +000A004A000A004A0009004B0009004B0009004C0009004C0009004D000900 +4D0009004D0008004D000D004D0014004C001B004900200046012601420130 +0141013C01400148013F0058013E0069013C007800390088003800A0003800 +BE003700BE003600BE003500BE003500BE003400BE003400BD004C0009004C +0009004C0009004C0009004C0009004D0009004D0008004E0008004E000800 +4E0008004F0008004F000800500008004E000C0048001100420117013E011C +023B01220237022B0334023703330244033202530231016302300173022E01 +84012E009B012E00B9002D00B9002D00B8002C00B8002B00B8002B00B7002B +00B7004E0008004E0008004E0008004E0008004F0008004F00080050000700 +50000700510007005100070051000700520007004B000500450007013F020D +023902130334031904300320052C0428052A0433052804400526044E052503 +5E0525036D0525037F03250296022601B4022502B4022402B3022302B30223 +02B3022302B2022202B2025100070051000700510007005100070051000700 +52000600520006005300060053000600540005004F00040049010300450102 +003B020303340309052E040F062A04160726051E0823052609210530091F06 +3C091D064A091C0659091B0568081B057A071C048F061D04AF051C04AE051B +04AD061B04AD061A04AD061A04AC061A04AC06540005005400050054000500 +5400050054000500550005005500050056000400550004004D000200480201 +00400300013B040000330502032B05060725060C092106140A1D061B0C1A07 +230D18072C0D1508380E1408450D1309540D1208630D1108740C1207880B13 +06A7091207A7091207A60A1107A60A1107A50A1107A50A1007A50A57000400 +570004005700040057000400570004005800030058000300530002004C0201 +00450300003F05000039070000340800002C090102240805071E080A0B1908 +100D1509180F110A20100F0B29100D0C330F0C0D400F0C0D4F0E0B0D5F0E0B +0D6F0D0B0D830C0B0C9E0B0B0CA10A0B0DA10A0A0DA00A0A0DA00A0A0DA00A +0A0DA00A5A0002005A0002005A0002005A0002005A0002005B000100520100 +004B030000440600003D08000036090000300B00002B0C0000250D01021E0C +0407180C090B120C0E0F0E0D160F0C0F1E0E0B11260D0A12310C0A143E0B09 +144D0A08145C0A08146D0A07147F090713980807149E0807149D0707149D07 +06149D0706159D0706159D075E0101005E0101005E0101005E0101005D0100 +00520300004A060000420800003A0A0000330C00002C0D0000270F00002310 +00001F100102191104061311080A0D110D0E0A13150D09151D0B0817260907 +183108071A3E07061A4C07051B5A06051B6A06041B7C05041A9304041B9A04 +041B9A04031B9904031B9904031B9903031C99035904000059040000590400 +00590400005306000049090000400B0000370D00002F0E0000291000002411 +0000211200001E1300001A140102141503050E16060909160C0A0719140906 +1B1C07051D2506041E310403203E0403204B03022158020121680201217901 +01208D010120970101209701012097010120970101209701012097014E0A00 +004E0A00004E0A00004E0A0000480B00003E0D0000340F00002C1100002612 +0000221400001E1500001B17000019180000151900010F1B0203091B050706 +1C0C06041E130503201B03022325020124310201253D010125490101255701 +012666010125780101248C0101239901012399010123990101249901012499 +0101249901410F0000410F0000410F0000410F00003B100000311200002913 +000024150000201700001C180000191A0000171B0000141D0000101E00000A +1F0102051F050404210C030323130303241A030226240201282F0201293C01 +012A4801012A5501012B6501012A760101288B0101279C0101279C0101279C +0101279C0101279C0101279C01331300003313000033130000331300002E14 +000026160000221800001E1A00001A1C0000171E0000141F0000122000000F +2100000D220000092201010522040404240B040327120303281903022A2203 +022C2D02012E3901012F4601013054010131640101307501012E8A01012C9F +01012C9F01012C9F01012C9F01012C9F01012C9F0128180000281800002818 +00002818000025190000201C00001C1E00001920000015220000122300000F +24000010250000102500000E2500000A2601010626040404280A04032C1103 +032E19030230200302322A0201333601013544010136530101376301013774 +01003588000032A2000032A2000032A2000032A2000032A2000032A200221E +0000221E0000221E0000221E00001F2000001B220000172400001326000010 +270000102800001028000011290000112900000F2A00000B2B0101072B0304 +052D0805033110040234180302361F030238270202393301013B4101013D50 +01013F6101013F7301003D8700003AA600003AA600003AA600003AA600003A +A600003AA6001C2600001C2600001C2600001C260000192700001429000011 +2B0000112B0000112C0000112D0000112D0000112D0000122E0000102F0000 +0C300000083102030532070504370E04023C1603023E1E02023F2502024130 +0201433E0101464E010049600100497200004885000044A7000044AB000044 +AB000045AB000045AB000045AB00152E0000152E0000152E0000152E000012 +2F000012300000123000001231000012310000123200001233000012330000 +13340000113500000E3600000937020205390505043E0C040344140302481C +02024A2302014B2D02014D3A0101504B0100545D0000567000005584000052 +A4000051B0000052B0000052B0000052B0000052B000133400001334000013 +34000013340000133500001336000013360000133700001338000013380000 +13390000133A0000143A0000133B00000F3E00000B4001020641040604460A +05034D130402531A030156220201582B0101593601005C4600006159000064 +6D00006481000062A0000061B7000061B7000061B7000061B7000061B70014 +3B0000143B0000143B0000143B0000143C0000143D0000143E0000143E0000 +143F00001440000014410000154100001542000014430000104700000D4A01 +01084D03040552090504581104035F1903026420020167280100693300006C +4200007154000074680000747E0000749D000072BF000072BF000072BF0000 +72BF000072BF00154400001544000015440000154400001544000015450000 +15460000154700001548000015490000164A0000164A0000164B0000154D00 +00125200000E5601010A5A0303065E060504650D04036D160302731D020178 +2401007C2E00007F3D0000834F000087620000887A0000869C000086CB0000 +86CB000086CB000087CB000087CB00164D0000164D0000164D0000164D0000 +164E0000164F00001650000016510000165200001653000016530000175400 +001755000016570000135D00000F6200010C680202086D030304740704037C +0D0301841301008D1B0000942400009A3200009F450000A45A0000A9710000 +A7940000A9DA0000A9DA0000AADA0000AADA0000AADA001757000017570000 +17570000175700001758000017590000175A0000175B0000175C0000175D00 +00175E0000175F0000176000001761000014680000106F00000D7700000A7E +010106860101038F0202019A050100AB090000C4110000DF1D0000FA2B0000 +FF490000FF620000FF840000FFEB0000FEFF0000FEFF0000FFFF0000FFFF00 +17620000176200001762000017620000176300001764000017650000176500 +00176500001765000017650000176500001765000017660000146D00001174 +00000E7B00000B830000088B000004930001019E020100B0060000CA0E0000 +E7190000FF270000FF450000FF5E0000FF7E0000FFCD0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017650000176500001766 +0000146D0000117400000E7B00000B830000088A000004930000019E020100 +AE060000C80D0000E5180000FC250000FF410000FF5A0000FF790000FFA800 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000E003A0014003B00 +1A003E0020004000290043003600480044004C0053004E0064004F0072004E +0081004D0090004D00A2004E00AE004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0E003A0014003B001A003E0020004000290043003600480044004C0053004E +0063004F0072004E0081004D008F004D00A1004E00AE004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000E003A0014003B001A003E002000400029004300360047 +0043004C0053004E0063004F0072004E0080004D008F004D00A0004E00AE00 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000E003A0014003B001A003E00200040 +00290043003600480043004C0052004F006200500071004F0080004E008E00 +4E00A0004F00AF004F00AF004F00AF004F00AF004F00AF004F00AF004F00AF +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003B000E003B0013003C +0019003F0020004200290045003500490043004D0052005000620051007000 +50007F004F008E004F00A0005000B0005000B0005000B0005000B0005000B0 +005000B0005000B0003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003B000D003B000D003C000D003C000D003C000D003C +000D003C0013003E0019004000200043002800460035004A0042004E005100 +520061005300700052007F0051008E0050009F005100B1005100B1005100B2 +005200B2005200B2005200B2005200B2003B000D003B000D003B000D003B00 +0D003B000D003B000D003C000D003C000D003D000D003D000D003D000D003E +000D003E000D003E000D003E0013003F00190042001F004500280047003400 +4B004100500050005300600054006F0054007E0053008D0052009F005300B3 +005300B3005300B3005300B3005300B3005200B3005100B4003D000D003D00 +0D003D000D003D000D003D000D003D000D003E000D003E000D003F000C003F +000C003F000C0040000C0040000C0040000C00400013004100190044001F00 +46002800490033004D00410051004F0055005F0056006E0054007D0051008B +004E009E004C00B7004B00B8004A00B8004900B7004800B7004700B7004700 +B8003F000C003F000C003F000C003F000C003F000C003F000C0040000C0040 +000C0041000C0041000C0042000C0042000C0042000C0043000C0042001200 +4300190045001F00480028004A0033004E0040004E004D004E005C004D006B +004A007A004700890044009C004300BB004100BB004000BC004000BC003F00 +BC003E00BC003E00BC0041000C0041000C0041000C0041000C0041000C0042 +000C0042000C0043000C0043000C0043000C0044000C0044000C0045000B00 +45000B00440012004500180047001F004700260044002F0043003A00430047 +004300570042006800400077003D0086003A009B003A00BF003900BF003800 +BF003700BF003700BF003600BF003600BF0044000C0044000C0044000C0044 +000C0044000C0044000C0045000B0045000B0045000B0046000B0046000B00 +47000B0047000B0047000B0047001100430017003F001B003C00210039002A +01370035013700420036005100350062003400720032008300310098003100 +BD003000BF003000BF002F00BF002F00BF002E00BF002E00BF0046000B0046 +000B0046000B0046000B0046000B0047000B0047000B0047000B0048000A00 +48000A0049000A0049000A0049000A00460009003F000E003A011301360119 +0132011F022F0127022D0132022B013E022A014C0129015C0128016C012801 +7E01270093002900B5002800BA002700B9002700B9002600B8002600B80026 +00B80049000A0049000A0049000A0049000A0049000A0049000A0049000A00 +4A000A004A000A004B0009004B00090049000800430007003E00050037010A +0131020F032C02160329031D042603250425032F0423033B04210249041F02 +57041E0266041F0278031F018B012001AA012001B1011F01B1011F01B0011E +01B0011E01AF011E01AF014B0009004B0009004B0009004B0009004B000900 +4C0009004C0009004D0009004D0009004D00080046000600410004003C0003 +01330102012D02070328030D052403130621041B071F0423071D042C071A04 +3707180545071705530716046207160472061703850518029F031802A80317 +02A8041603A7041603A7041603A6041503A6044E0008004E0008004E000800 +4E0008004E0008004E0008004F0008004F0008004C00060044000400400002 +0135010101300200012C0400002504040520040A071C0511091905190A1605 +210B14062A0C1107340C1007400B0F074E0C0E075D0C0D076C0B0D067F090F +0596080F05A1070E05A0070D05A0080D069F080D069F080D069F0851000700 +5100070051000700510007005100070051000700520006004A000400440102 +003A020101340300012F0500002A06000026070000200703051A0708091507 +0F0B1107170D0E081F0D0C0A260D0A0B300D0A0B3C0C090C4A0B090D590B08 +0C680A080C7A09080B8F08080B9B08070B9B08070B9B08070C9A08070C9A07 +070C9A07540005005400050054000500540005005400050053000400490102 +004102010139040001330600002D07000028090000240A0000210B00001B0B +0304150A07090F0A0C0C0B0C140D090D1C0C080F240A07112E0907123A0806 +12480706135607051365070512760604128A05041297050412960504139604 +04139604041396040313950450000200500002005000020050000200500002 +00490201003F04000038060000300800002A0A0000250B0000210D00001E0E +00001B0F0000160F0304100F06080A0F0B0B0811130A06131B080515230704 +162D0504173A04031847040318540402186303021873020119860201199201 +01199201011992010119920101199201011992014704000047040000470400 +0047040000470400003F060000360900002E0B0000270C0000220E00001F0F +00001B1000001911000016130000111402030B14050606150A080516120603 +181A04021A2203011C2E02011C3A01011D4602011D5302011C6102011C7201 +011C8401011C9401011C9401011C9401011C9401011C9401011C94013D0900 +003D0900003D0900003D0900003D090000330B00002B0D0000250F00002010 +00001C120000191300001715000014160000121700000C1801010618040403 +1A0A03031B1103021C1803021D2102011F2C02011F38020120440201205102 +0120600201207001011F8301011F9601011F9601011F9601011F9601011F96 +01011F9601300E0000300E0000300E0000300E0000300E0000281000002212 +00001E1300001A1500001717000014180000121900000F1A00000D1B000009 +1C0101051B0303031D0904031E1003031F170302201F0302222A0201233701 +012443010124500201245E0201246F01012382010122980101229801012298 +01012298010122980101229801251300002513000025130000251300002513 +0000211400001C16000019180000151A0000121C00000F1D00000D1E00000D +1E00000E1E00000A1E0000061E0303041F080403220F030322160302241E03 +02262802012735010128410101294E0101295D0101296D010128810101269B +0101269B0101269B0101269B0101269B0101269B011E1800001E1800001E18 +00001E1800001E1800001B1A0000171C0000131E0000101F00000E2000000E +2000000E2100000E2100000F2100000C220000072102030522070403250E03 +0327150302281D03022B2602012C3201012E3F01012E4C01012F5B0101306C +01012E7F01012C9901012B9E01012B9E01012B9E01012B9E01012C9E01191E +0000191E0000191E0000191E0000191E000015200000112200000F2300000F +2300000F2400000F2400000F24000010250000102500000D26000008260202 +0527060404290C04032D1403022E1C030230240202322F0201343C0101354A +010136590101376A0101367E01003298000032A2000032A2000032A2000032 +A2000032A20013240000132400001324000013240000132400001026000010 +26000010270000102700001028000010280000112900001129000011290000 +0E2A00000A2B0102062C0504042F0B040333130302351B030237220202392B +02013B3901013D4701013F580101406901003F7C00003C9600003AA600003B +A600003BA700003BA700003BA700112A0000112A0000112A0000112A000011 +2A0000112B0000112B0000112C0000112C0000112D0000112D0000122E0000 +122E0000122F00000F3000000B310101073204040435090503391104023E19 +030240200202412802014335010146440101495501004B6800004A7B000048 +94000046AC000046AC000046AC000046AC000046AC00123000001230000012 +30000012300000123000001230000012310000123200001232000012330000 +13340000133400001335000013350000103700000C380101083A0204053C08 +0504420F0402481703024B1F02014D2602014E310101503F01005551000058 +650000597900005791000055B2000055B2000055B2000055B2000055B20013 +36000013360000133600001336000013360000133700001338000013390000 +13390000143A0000143B0000143B0000143C0000143D0000123F00000E4100 +010A43020305460605044C0D040353150302591D02015B2502015D2E01005E +3B0000634D00006861000069750000688E000066B9000066B9000066B90000 +66B9000066B900143E0000143E0000143E0000143E0000143E0000143F0000 +14400000144100001542000015430000154400001544000015450000154600 +0013480000104C00000C5002020753040405590A050460130402671B03016C +2202006E2B010071370000754800007A5B00007C7100007A8B000079C00000 +79C3000079C3000079C300007AC30015480000154800001548000015480000 +1548000015490000164A0000164B0000164C0000164D0000164E0000164E00 +00164F00001650000014530000115800000D5D01010962030305670704046E +0E0402761603017D1C010083240000883000008C41000090540000946A0000 +9287000092BC000093D1000093D1000093D1000093D1001652000016520000 +16520000165200001652000016530000175400001755000017560000175700 +001758000017590000175A0000175B0000155F0000126500000F6B01010B72 +010107790203038004030288090200930E0000A1160000AE210000B8300000 +C1460000CB5E0000D27C0000CEB00000CDED0000CDEE0000CEEE0000CEEE00 +175E0000175E0000175E0000175E0000175E0000175F000017600000176100 +00176200001763000017640000176500001765000017650000166900001370 +0000107700000D7E00000A860000068E00000297000100A5030000BB090000 +D7130000F2200000FF350000FF530000FF700000FF9A0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017650000176500001765 +00001669000013700000107700000D7E00000A860000068E00000297000100 +A4030000B9090000D4120000EF1E0000FF310000FF4F0000FF6B0000FF8D00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A0010003A00 +16003C001C003F00240042002F0045003D004A004B004D005C004F006B004F +007B004D008A004D009B004E00AE004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A0010003A0016003C001C003F00240042002F0045003C004A004B004D +005B004F006B004F007A004D0089004D009A004E00AE004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A0010003A0016003C001C003F00240042002E0045 +003C0049004B004D005B004F006B004F007A004D0089004D009A004E00AE00 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A0010003A0016003C001C003F +00240041002E0045003C0049004A004D005A004F006A004F007A004D008900 +4D0099004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A0010003A +0016003C001C003F00230041002E0045003C0049004A004D005A004F006A00 +4F0079004D0088004D0098004D00AD004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A0010003A0016003C001C003F00230041002E0045003B0049004A00 +4D005A004F0069004F0079004E0087004D0097004D00AC004E00AE004E00AE +004E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A0010003A0016003C001C003F00230041002E00 +45003B00490049004D0059004F0069004F0078004E0087004D0097004D00AB +004D00AE004C00AF004A00AF004900B0004900B0004800B1003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A0010003A0016003C001C00 +3F00230042002D0045003B004A0049004E0058004F0068004C007700490085 +00460096004400B0004200B6004100B7004000B8004000B8003F00B9003F00 +B9003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003B000D003B000D003B000D003C000D003C001000 +3C0016003E001C004100230044002D00440039004500460045005400440065 +00420074003F0083003C0095003B00B3003A00BD003900BE003800BF003800 +BF003700BF003700C0003B000D003B000D003B000D003B000D003B000D003B +000D003B000D003C000D003C000D003D000D003D000D003D000D003E000D00 +3E000D003E000F003E00150040001C003D0021003A00280039003400390041 +0039004F00380061003700710035008100330094003300B4003300C2003200 +C2003100C2003000C2003000C2003000C2003D000D003D000D003D000D003D +000D003D000D003D000D003E000D003E000D003F000C003F000C003F000C00 +40000C0040000C0040000C003F000E003A0013003600180033001E00300025 +002F0030002E003C002D004B002C005B002B006B002A007D002A0091002B00 +B0002B00C1002A00C1002900C1002900C1002900C0002800C00040000C0040 +000C0040000C0040000C0040000C0040000C0040000C0041000C0041000C00 +42000C0042000C0042000C0043000C003D000A0037000B00320010002E0015 +012A011C012801240127012D01250139012300470022005500210065002100 +760022008B002300A9002300BC002300BB002200BB002100BA002100BA0021 +00B90042000C0042000C0042000C0042000C0042000C0043000C0043000C00 +44000C0044000C0044000B0045000B0040000A003A000800340006002E0007 +0029010D012601130223021A032102220320022B031E0236031B0243021A02 +52021901610219017102190184011B009E011B00B1001B00B0001A00AF001A +00AF001900AE001900AE0045000B0045000B0045000B0045000B0045000B00 +45000B0046000B0046000B0047000B0045000A003E00080037000600310004 +002B0003012601040222020A031F0211041C0319051A03210618032A061603 +33061403400613034E0612035C0611036C0511027D04120293031301A60213 +02A5021202A4021202A3021102A3031102A20348000A0048000A0048000A00 +48000A0048000A0048000A0049000A0049000A00430008003B000600340004 +002D0102012801020125020101210302031C03080519041007150418081304 +2009100527090E05300A0C063C090B0649090A0657090A066608090576080A +048A060B049C050A049B060A049B0609049A0609049A0609049A064B000900 +4B0009004B0009004B0009004B0009004B0009004A000800410006003A0004 +01300102012A0201012603010023040000200500001C060102170506061205 +0D090F06150A0B071D0B0908240A08092D0A070A3809060B4508060B530805 +0B6207050A7107050A840605099605050A9605040A9505040A9505040A9505 +040B94044B0007004B0007004B0007004B0007004B00070049000600400004 +00350102012E0201012904000024050000210600001E0800001B0900001809 +0102120905060C080A0A080A130A070C1A09060D2208050F2A060410360504 +1043040310500403105F0402106E0302108002021091020111900201119001 +011190010111900101128F0142010201420102014201020142010201420102 +0140010201340201012D04000027060000230800001F0900001C0A0000190C +0000170D0000130D01020D0D0406080E0908060F1107041119050312200402 +142A03011536020115420101154F0201155D0101156C0101147E0101149001 +01149001011490010114900101149001011490013504000135040001350400 +013504000135040001330500002C07000026090000210A00001D0C00001A0D +0000170E000014100000121100000F12010108120304041308050314100302 +15170201161F0201172902011834010118410201184D0201185B0201176B01 +01177C010117910101179101011791010117910101179101011792012C0900 +002C0900002C0900002C0900002C0900002A0A0000240B00001F0D00001B0F +00001710000014110000121300000F1400000D1500000A1600000516020203 +16070303170E030218150302181D02011A2702011B3301011B3F02011B4C02 +011B5A02011B6901011B7B01011A9001011A9301011A9301011A9301011B93 +01011B9301230E0000230E0000230E0000230E0000230E0000220E00001D10 +00001911000015130000121500000F1600000C1700000B1800000B1800000B +1800000618020203180604031A0D03021A1403021B1C03021D2602011E3202 +011E3E01011F4A02011F5802011F6701011E7A01011E8F01011E9501011E95 +01011E9501011E9501011E95011C1200001C1200001C1200001C1200001C12 +00001B1300001715000013170000101800000D1900000C1A00000C1A00000C +1A00000C1B00000C1B0000081B0101041B0504031D0B03031D1203021F1A03 +022024020122300201223C010123490201235602012366010122780101228E +01012198010121980101219801012198010121980116180000161800001618 +0000161800001618000015180000111A00000E1C00000D1C00000D1D00000D +1D00000D1D00000D1D00000D1E00000D1E0000091E0101051E040404200A04 +03211203032219030224220202262E0201273A010128470101285501012864 +010128760101268C0101259B0101269B0101269B0101269B0101269B01101D +0000101D0000101D0000101D0000101D00000F1E00000E1F00000E1F00000E +1F00000E2000000E2000000E2000000E2100000E2100000E2100000A220000 +0521030404230904032610030327180302292003022B2B02012D3801012E45 +01012E5301012F6301012F7501012D8B01012B9E01012B9E01012B9E01012B +9E01012B9E010F2200000F2200000F2200000F2200000F2200000F2200000F +2200000F2300000F2300000F2300000F2400000F2400000F24000010250000 +0F2500000B2600000726030404280804032B0F03032E1703022F1F03023128 +020133340101344201013651010137610101377301003489000032A2000032 +A2000032A2000032A2000032A2001026000010260000102600001026000010 +26000010260000102600001027000010270000102800001028000011290000 +11290000112A0000112A00000D2B0000082C0203052D070504310E04033516 +0302371D0302382502023A3002013C3F01013F4E010141600101417201003F +8800003CA700003CA700003CA700003CA700003CA700112B0000112B000011 +2B0000112B0000112B0000112B0000112C0000112D0000112D0000122E0000 +122E0000122F0000122F000012300000123000000E3200000A330102053405 +0504380C04033D140302411C020242230202442C0201463A0101494B01004C +5D01004D7000004C86000049AC000049AD000049AD000049AD000049AD0012 +31000012310000123100001231000012310000123200001232000012330000 +133400001334000013350000133600001336000013370000133700000F3A00 +000B3B0101063C030504410A0503471204024D1A020250210201512A020152 +360100554600005A5A00005D6E00005D8300005AA8000059B300005AB30000 +5AB400005AB400133900001339000013390000133900001339000013390000 +143A0000143B0000143C0000143D0000143D0000143E0000143F0000143F00 +0014400000114300000D46010108480304054C080504531004035A1803025F +2002016228010063320100664100006B5500006F6900006F8000006EA30000 +6CBC00006DBC00006DBC00006DBC0015420000154200001542000015420000 +15420000154200001543000015440000154500001546000015470000154800 +001549000015490000164A0000124E00000F5300010B570203065B05040561 +0C040369150402701D030175240100782E00007C3C0000804E000084630000 +847B000082A1000082C9000083C9000083C9000083C900164D0000164D0000 +164D0000164D0000164D0000164D0000164E0000164F000016500000165100 +001652000016530000165400001754000017550000145B0000106000000C66 +0102096C030305720604037A0C0301821302008B1A00009323000098310000 +9E440000A35A0000A8730000A59B0000A8D90000A8D90000A8D90000A9D900 +175800001758000017580000175800001758000017590000175A0000175B00 +00175C0000175D0000175E0000175F00001760000017600000176100001468 +0000116F00000E7700000B7E00000886000104900101019B020100AC060000 +C80D0000E6190000FF270000FF470000FF620000FF860000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017650000176500001765 +000017650000156B0000127200000F7A00000C810000088900000591000001 +9C010100AB050000C60C0000E3180000FD250000FF430000FF5E0000FF8000 +00FFE70000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +13003B0019003D001F004000280043003500470043004C0053004E0064004F +0074004E0084004D0094004D00A9004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A0013003B0019003D001F004000280043003500470043004C +0053004E0064004F0073004E0083004D0093004D00A8004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A0013003B0019003D001F004000280043 +003500470043004C0053004E0064004F0073004E0083004D0093004D00A700 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A0013003B0019003D +001F004000280043003500470043004B0052004E0063004F0073004E008200 +4D0092004D00A6004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +0013003B0019003D001F004000280043003400470042004B0052004E006300 +4F0072004E0082004D0091004D00A5004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A0013003B0019003D001F00400027004300340047004200 +4B0051004E0062004F0072004E0081004D0091004D00A4004E00AE004E00AE +004E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A0012003B0018003D001F0040002700 +43003400470042004B0051004E0062004F0071004E0081004D0090004B00A4 +004A00B0004800B1004700B2004600B2004500B3004400B3003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A0012003A001800 +3D001F004000270043003300470041004B0050004A0061004800700045007F +0041008F003F00A6003E00B8003C00B9003C00BA003B00BB003A00BC003A00 +BC003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A0012003A0018003D001E003F0027003D0031003D003E003E004C003D005E +003C006E0039007D0036008E003500A9003500C1003400C1003300C2003200 +C2003200C2003100C3003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A0012003800170035001D003200240031002E0031003B +003000490030005A002E006A002D007B002C008E002C00AA002D00C5002C00 +C5002B00C5002B00C5002A00C5002A00C5003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0037000C00320010002E0015002B001B00290022 +0028002B00270037002500460024005600230065002300770023008B002400 +A7002600C4002500C3002400C3002400C3002300C3002300C3003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3B000D003B000D003C000D0039000C0034000A002F0009002A000D00270012 +00240019002200210122002A00200034001E0042001C0051001B0061001B00 +71001B0085001D00A0001F00BE001E00BD001D00BC001D00BB001C00BB001C +00BA003C000D003C000D003C000D003C000D003C000D003C000D003C000D00 +3D000D003D000D003E000D003D000C0037000A00310009002B000700270006 +0024000A01210111011E0119021C0121021B0129021A01320117013F011501 +4D0214015C0114016B0114007D00150094001700B1001600B0001600AF0015 +00AE001500AD001400AD003F000C003F000C003F000C003F000C003F000C00 +3F000C003F000C0040000C0040000C003B000B00340009002E000700280006 +0024000500210004011E0108021B0110031802170316021F04150227041302 +300410023C040F0249040E0257040D0266030D0276030E0189020F01A2010E +01A1010E01A0010D01A0010D019F010D019F0142000C0042000C0042000C00 +42000C0042000C0042000C0042000C0041000B003A000900310007002A0005 +0026000400210103011E0102021C0102021902060315020E05120316051003 +1E060D0325070B042D07090438070804440707055206070461060604700506 +03800507039904070398040603970406039704050397040503970445000B00 +45000B0045000B0045000B0045000B0045000B0040000A00370007002E0005 +0028000300230102011F0102021D0201011A03010118040101140404040F04 +0B070C04140809051B080706220705072A07040834060409410503094E0503 +095D0403096B0402097B030208900302089102020991020209900201099002 +010990013B0006003B0006003B0006003B0006003B0006003B000600360005 +002C00030126010201210201011E0301011B05010119060000160700001408 +0001100703040906070906081108050A1906030B2005020C2803020D320201 +0E3F02010E4B01010E5901010E6801010D7801010D8B01010D8E01010D8E01 +010D8E01010D8E01010D8E012E0102012E0102012E0102012E0102012E0102 +012E0102012A02020125030101200400001D0600001A070000170800001409 +0001120A01010F0B00010B0C0303050C0806030D1004020F1703010F1E0201 +1027010111310101113D0101114A01011057010110660101107601010F8901 +010F8F01010F8F0101108F0101108F0101108F012604000026040000260400 +00260400002604000026040000240500001F0700001B080000180A0000150B +0001120C00010F0E00010D0F00000B100000051001020310060302110E0302 +11150201121D02011326010114300101143C01011348010113560101136501 +01137501011388010113900101139001011390010113900101139001200800 +0020080000200800002008000020080000200800001E090000190B0000160C +0001120E00010F1000000D1100000A12000009130000091300000713010103 +13050303130C030214130302141B020115240201162E0101163A0101164602 +01165402011663010116740101168701011691010116910101169101011691 +01011691011A0D00001A0D00001A0D00001A0D00001A0D00001A0D0000180E +000014100000101100000D1300000A1400000A1400000A1500000A1500000A +150000081501010415040303160A0302161103021719020218220201192C02 +011A3801011A4502011A5202011A6102011972010119850101199301011993 +01011993010119930101199301141200001412000014120000141200001412 +000014120000121300000E1500000B1600000B1600000B1700000B1700000B +1700000B1700000B18000009180101051703030318090303191003021A1703 +021B2002011D2B02011D3701011E4302011E5102011E5F02011D7001011D84 +01011D9501011D9501011D9501011D9501011D95010E1700000E1700000E17 +00000E1700000E1700000E1700000C1800000C1800000C1900000C1900000C +1900000C1A00000C1A00000C1A00000C1A00000A1A0001061A0303031B0804 +031C0E03031D1603021F1E0302202902012135020122420101224F0201225D +0201226E010121830101219701012197010121970101219701012197010C1B +00000C1B00000C1B00000C1B00000C1B00000C1B00000C1B00000D1B00000D +1C00000D1C00000D1C00000D1D00000D1D00000D1D00000D1D00000B1E0000 +071D0203041E060403200D030321140302231C030225270201263302012740 +0101274D0101285C0101286D010127810101259A0101259A0101259A010125 +9A0101259A010E1E00000E1E00000E1E00000E1E00000E1E00000E1E00000E +1E00000E1F00000E1F00000E1F00000E2000000E2000000E2000000E210000 +0F2100000D210000082101020522060404240C040327130303281B03022A24 +02012C3102012D3D01012E4B01012F5A01012F6B01012E8001012B9C01012B +9E01012B9E01012B9E01012B9E010F2200000F2200000F2200000F2200000F +2200000F2200000F2200000F2300000F2300000F2400000F2400000F240000 +1025000010250000102500000E2600000A2701010627040404290B04032D12 +03022F1A030231220202332C02013439010136480101375801013869010137 +7E0100339A000033A3000033A3000033A3000033A300102700001027000010 +27000010270000102700001027000010270000102800001028000011290000 +11290000112A0000112A0000112A0000112B00000F2C00000B2D0101072E03 +0404300905033410030237180302392002023B2902013D3501013F44010141 +55010143680100427C00003F9800003EA800003EA800003EA800003EA80011 +2D0000112D0000112D0000112D0000112D0000112D0000112D0000122E0000 +122E0000122F00001230000012300000123100001231000012320000113300 +000D3400010835020305370705043C0E040242160302451E02024626020148 +3101014A4001014E52010051660000517A00004E9500004DAE00004DAE0000 +4DAE00004DAE00133400001334000013340000133400001334000013340000 +13340000133500001336000013360000133700001338000013380000133900 +00133A0000123B00000E3D00000A3F02020541050604460C05034E14030253 +1C020155240201572E0100583B01005D4D0000626200006377000062920100 +5FB600005FB600005FB6000060B600143C0000143C0000143C0000143C0000 +143C0000143C0000143D0000143E0000143F00001440000014400000144100 +0015420000154300001543000014450000104900000C4C0102084F04040554 +0905045B120403621A0301672202016A2A01006C37000070480000755C0000 +77720000768F000074C0000075C0000075C0000075C1001547000015470000 +154700001547000015470000154700001547000015490000164A0000164B00 +00164C0000164C0000164D0000164E0000164F000015510000125600000E5B +01010A5F030306640604046B0D0403731503017B1C010081240000852F0000 +894000008D540000916B00008F8A000090CE000090D0000090D0000090D000 +16530000165300001653000016530000165300001653000016530000175500 +0017560000175700001758000017590000175A0000175A0000175B0000165D +000013640000106A00000C71010108780202047F03030288070200920C0100 +A1130000AF1E0000BB2D0000C5440000D15E0000D87E0000D1C50000D2F100 +00D2F20000D3F2001760000017600000176000001760000017600000176000 +00176000001762000017630000176400001765000017650000176500001765 +00001765000017670000136E0000107500000D7D00000A840000078C000003 +95000101A2030000B7080000D3120000EF1E0000FF330000FF520000FF7300 +00FFAC0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +10003A0016003C001C003F00230041002E0045003C004A004B004D005C004F +006D004E007D004D008D004D00A1004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000F003A0015003C001C003F00230041002E0045003C0049 +004B004D005C004F006C004E007D004D008D004D00A0004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000F003A0015003C001C003F00230041 +002D0045003C0049004A004D005B004F006C004E007C004D008C004D009F00 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000F003A0015003C +001B003F00230041002D0045003B0049004A004D005B004F006B004E007C00 +4D008B004D009F004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000F003A0015003C001B003E00220041002D0045003B0049004A004D005A00 +4F006B004F007B004D008B004D009E004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000F003A0015003C001B003E00220041002D0044003B00 +490049004D005A004F006A004F007A004D008A004D009D004E00AE004E00AE +004E00AE004E00AE004E00AE004D00AE003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000F003A0015003B001B003E002200 +41002C0044003A00490049004D0059004F006A004E007A004A00890047009C +004600B2004400B3004300B4004200B5004100B6004000B6003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000F003A001500 +3B001B003E00220041002C0044003A00450047004600570044006800420078 +003E0088003C009E003A00BC003900BD003800BE003700BE003700BF003600 +BF003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000F003A0015003B001B003A002100380029003700360038004300380053 +0037006500340075003300870032009F003100C3003000C3003000C4002F00 +C4002F00C5002E00C5003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000F0035001300310018002E001F002C0027002C0032 +002B0040002A00510029006100280072002700850028009E002900C5002900 +C5002800C5002700C5002700C5002600C5003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0034000C002F000C002A0010002800160025001E +00240026002300300021003E001F004E001E005E001E006F001E0083001F00 +9B002200C3002100C3002000C2002000C2001F00C2001F00C1003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0035000C002E000A002A0009002600090023000F +00200016001E001E001E0026001D002F001A003C0018004B0017005B001600 +6B0016007E00170095001A00B9001900BC001900BC001800BB001800BA0017 +00BA003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0036000C002F000A002A00090025000800220008 +001F0008001D000F001A00170018001F001700270016002F0013003B001100 +4900100057000F0067000F00770010008B001200AB001200B0001100AF0011 +00AE001000AD001000AC003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D003A000D0031000B002B00090026000800220007 +001F0006001C0006001A00060117000E011501160113011E01110126010F01 +2E020D0138020C0145010A0152010901610209017002090180010A0099010A +009F000A009E0009009D0009009C0009009C003C000D003C000D003C000D00 +3C000D003C000D003C000D003C000D0038000C002F00090029000800240007 +00200006001D0005001A000401180103011601040112010C020F0214030D01 +1C030A02230408022A04060234040503400405034D0304035B0303036A0303 +03760303028F02030295020302950203029402020294020203940235000A00 +35000A0035000A0035000A0035000A0035000A0035000A002D000800270006 +00220005001E0004011A010301180103011602020114020201120302010C02 +0804090312050603190504042004030527040206310302063D020107490201 +07570100076500000773000007860000068F0000068F0000068F0000068F00 +00068F002A0006002A0006002A0006002A0006002A0006002A0006002A0006 +00250004001F0103011B010202190202011603010114040101120401011005 +01010D06010105040407040610050207170301091E02000A2500000A2F0000 +0A3B00000A4700000A5500000A6300000972000009830000088E0000088E00 +00088E0000088E0000098E0022010301220103012201030122010301220103 +0122010301220103011D0102021A0301011804010115050101120601010F07 +01010D0801010A090001080A0001030A0603020B0E02010B1502010B1C0101 +0C2401000D2D00010D3901010D4501010D5301000C6101000C7000000B8101 +010B8E01010B8E01010B8E01010B8E01010B8E011D0401011D0401011D0401 +011D0401011D0401011D0401011D0401011A05000116060001130801011009 +01010D0A01010A0C0000070D0000070D0000060E0000020D0403020D0C0302 +0D1402010E1B02010E2201010F2C01010F3701010F4301010F5101010F5F01 +010E6E01010E8001010E8E01010E8E01010E8E01010E8E01010E8E01180800 +0018080000180800001808000018080000180800001808000014090001110A +01010E0C00010A0E0000080F0000080F0000080F0000081000000810000003 +0F0203020F0A0302101203011019020111210101122A010112350101124101 +01124F0101125D0101126D0101117F0101118F0101118F0101118F0101118F +0101118F01120C0001120C0001120C0001120C0001120C0001120C0001120C +00010F0E00010B0F0000081100000811000009110000091100000912000009 +120000091200000412020203120803021210030213170201131F0201152801 +011534010115400101154D0201155B0101156B0101147D0101149001011590 +010115900101159001011590010C1100000C1100000C1100000C1100000C11 +00000C1100000C1100000913000009130000091300000A1300000A1400000A +1400000A1400000A1400000A140000061402020315060303150D0302161503 +02161D02011826020118320101193E0201194B02011959020118690101187C +0101189201011892010118920101189201011892010A1500000A1500000A15 +00000A1500000A1500000A1500000A1500000A1500000A1500000B1600000B +1600000B1600000B1700000B1700000B1700000B1700000717010104170504 +03180C0302191303021A1B03021B2402011C3002011D3D01011D4902011D57 +02011D6701011C7A01011C9101011C9401011C9401011C9401011C94010B18 +00000B1800000B1800000B1800000B1800000B1800000B1800000B1800000B +1800000C1900000C1900000C1900000C1900000C1A00000C1A00000C1A0000 +081A0101041A0404031B0A03031C1103021D1903021F220201202E0201213B +02012148020121550201226502012178010120900101209701012097010120 +9701012097010C1B00000C1B00000C1B00000C1B00000C1B00000C1B00000C +1B00000D1B00000D1B00000D1C00000D1C00000D1C00000D1D00000D1D0000 +0D1D00000D1D00000A1E0000051D0304041F09040321100303221703022320 +0302252C02012638010127450101285301012863010127760101268E010125 +9A0101259A0101259A0101259A010E1E00000E1E00000E1E00000E1E00000E +1E00000E1E00000E1E00000E1F00000E1F00000E2000000E2000000E200000 +0E2100000E2100000F2100000F2100000B220000072202030423080403260F +030327160302291F03022B2902012D3501012E4301012F5101013062010130 +7501012D8D01012C9E01012C9E01012C9E01012C9E010F2300000F2300000F +2300000F2300000F2300000F2300000F2300000F2300000F2300000F240000 +0F24000010250000102500001026000010260000102600000D270000082802 +0205280604042C0D04032F150302311D03023325020234310201363F010138 +4E01013960010139730100368A000034A3000034A3000034A3000034A30010 +28000010280000102800001028000010280000102800001028000010280000 +11290000112A0000112A0000112B0000112B0000112C0000112C0000112C00 +000E2E00000A2F01020630050404330B0403371303023B1B02023C2302023E +2D0201403B0101434B0101455E0100467100004488000041A9000041A90000 +41A9000041AA00122F0000122F0000122F0000122F0000122F0000122F0000 +122F0000122F00001230000012310000123100001232000012320000123300 +001334000013340000103600000C37010107380304043C0905034111040247 +1902024A2102014B2902014D36010150470100545A0000566F000055860000 +52B0000052B0000052B1000052B10013370000133700001337000013370000 +133700001337000013370000133800001338000013390000143A0000143B00 +00143B0000143C0000143D0000143D0000114000000E420101094402030547 +0705044E0E0403551703025A1F02015D2701015E3201006041000066550000 +696B00006982000067AE000067B9000067B9000067B9001441000014410000 +14410000144100001441000014410000144100001542000015430000154400 +00154500001545000015460000154700001548000015480000134C00000F50 +00010B54020207580504055E0B0504651404026C1C030171230100752D0000 +783C00007C4E000081640000807E00007FA900007FC700007FC700007FC700 +164D0000164D0000164D0000164D0000164D0000164D0000164D0000164E00 +00164F00001650000016510000165200001653000016530000175400001755 +000014590000115F00000D650101096A02030671050403780B030280120200 +8918000092210000982F00009D420000A25A0000A8740000A4A30000A7D900 +00A8D90000A8D900175A0000175A0000175A0000175A0000175A0000175A00 +00175A0000175B0000175C0000175D0000175E0000175F0000176000001761 +0000176200001763000015670000126F00000F7700000C7F00000987000005 +900000029A010100A9040000C50B0000E3180000FE260000FF470000FF6400 +00FF8B0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A0012003A0018003D001F004000280043003500470043004C0054004E +0065004F0076004E0087004D0099004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A0012003A0018003D001E00400027004300340047 +0043004C0053004E0065004F0075004E0086004D0099004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A0012003A0018003D001E0040 +00270043003400470043004C0053004E0064004F0075004E0085004D009800 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A0012003A +0018003D001E004000270043003400470042004C0053004E0064004F007400 +4E0085004D0097004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A0012003A0018003D001E004000270043003400470042004B005200 +4E0064004F0074004E0084004D0096004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A0012003A0018003D001E004000270042003300 +470042004B0052004E0063004F0073004E0084004D0095004D00AD004E00AE +004D00AE004B00AF004A00B0004900B0003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A0012003A0018003D001E00 +4000260042003300470041004B0051004E0063004B00720048008200440094 +004200B2004000B6003F00B7003E00B8003D00B9003C00BA003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A001200 +3A0018003D001E00400026004000310040003E0040004D00400060003E0070 +003B008000380094003700B8003600C0003500C0003400C1003300C2003300 +C2003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A0011003900170036001C003300230032002E0032003B0032004A +0031005C002F006D002E007F002D0095002E00B9002D00C5002C00C5002B00 +C5002B00C5002A00C5003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0037000D0032000F002E0014002B001A002800220028002B +002700380025004700240058002200680022007C00230093002500B6002500 +C5002400C4002300C4002300C4002200C4003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0037000D0031000B002C000A0028000C002500120022001A +002100220020002A001F0036001C0045001A00550019006500190078001A00 +8E001D00B1001D00C0001C00C0001C00BF001B00BE001B00BE003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0038000D0031000B002B000900270008002300080020000B +001E0012001B001A001A0022001A002A001700350015004300130052001200 +620012007300130087001400A5001500B8001400B6001400B5001300B40013 +00B3003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0033000B002C000A0027000800230008001F0007 +001D0007001A000B001800120016001B001400230013002A00110035000F00 +41000D004F000C005E000B006D000C007F000D0097000D00A9000D00A7000C +00A6000C00A5000B00A4003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0036000C002E000A0028000900230008001F0007 +001C000700190006001700050015000A001200120110001B000E0022000C00 +2A000A00330009003F0007004B0006005A00050068000500770006008B0006 +009A0006009A0005009900050099000500980033000B0033000B0033000B00 +33000B0033000B0033000B0033000B0032000B002A000900240008001F0007 +001C00070019000600160005001400050012000400100009000D0012010B00 +1B0008002100060027000400310103003C0002014901020157000101650001 +01720001018200000193000001930000019300000193000001930027000800 +27000800270008002700080027000800270008002700080026000800210007 +001C000700190006001600050014000400120004000F0103000D0102000A01 +0601070111020402180202021E010102240100032D0100043A000004450000 +045300000462000004700000037E0000039100000391000003910000039100 +00039100200006002000060020000600200006002000060020000600200006 +001F0006001B0005001700040115010300120103000F0202000D0201000B03 +0100080301000202020301040F020105150100051C000005230000062B0000 +063800000643000006510000065F0000066E0000057C000005900000059000 +0005900000059000000590001A0103011A0103011A0103011A0103011A0103 +011A0103011A010301190103011601020113020201100301010D0401010B05 +01010705000105070000030800000207040101070D020107140101071B0100 +08220000082A00000835000008410000084E0000085C0000086B0000077B00 +00078F0000078E0000078E0000078E0000078E001503010115030101150301 +011503010115030101150301011503010115030101110401010E0501010B07 +010108080000040A0000050A0000050A0000050A0000030A030102090B0201 +091202010A1901010A2001000B2800000B3300000B3F00000B4C01000B5A00 +000B6900000A790000098E0100098E0100098E0100098E01000A8E01100601 +011006010110060101100601011006010110060101100601010F0701010C08 +0101080A0000050B0000060C0000060C0000060C0000060C0000060C000004 +0C0101020C0803020C1002010C1702010D1F01010E2701010E3101010E3D01 +010E4A01010E5801010D6701000D7801010C8C01010C8E01010C8E01010C8E +01010C8E010A0B00000A0B00000A0B00000A0B00000A0B00000A0B00000A0B +0000090C0000070D0000070E0000070E0000070E0000070E0000070E000007 +0F0000070F0000050F0101020E0603020F0E03020F1502010F1D0201102501 +01112F0101113B010111480101115601011065010110760101108A0101108F +0101108F0101108F0101108F01080F0000080F0000080F0000080F0000080F +0000080F0000080F0000080F00000810000008100000081000000810000008 +110000081100000811000009110000071101010311040303110C0302121303 +02121B020113230101142D0101143901011446010114540101146301011474 +01011388010113900101139001011490010114900109120000091200000912 +00000912000009120000091200000912000009120000091200000913000009 +13000009130000091300000A1300000A1400000A1400000814010104140302 +0314090302151103021518020116210201172B020118370101184402011852 +02011861020117720101178701011892010118920101189201011892010A15 +00000A1500000A1500000A1500000A1500000A1500000A1500000A1500000A +1500000A1500000A1600000B1600000B1600000B1600000B1600000B170000 +0A170000051702020317080303180F0302191603021A1E02011B2902011C36 +01011C4202011C5002011C5F02011C7001011C8501011C9401011C9401011C +9401011C94010B1800000B1800000B1800000B1800000B1800000B1800000B +1800000B1800000B1800000B1800000C1900000C1900000C1900000C190000 +0C1A00000C1A00000B1A0000071A0202041A0604031C0D03031D1403021E1C +03021F2702012134020121400201214E0201215C0201216E01012183010120 +97010120970101209701012097010C1B00000C1B00000C1B00000C1B00000C +1B00000C1B00000C1B00000C1B00000D1B00000D1C00000D1C00000D1C0000 +0D1D00000D1D00000D1D00000D1E00000C1E0000081E0102041E050403200C +030321130302231B03022424020126310201273E0101284B0101285A010128 +6C010127820101259A0101259A0101259A0101269B010E1F00000E1F00000E +1F00000E1F00000E1F00000E1F00000E1F00000E1F00000E1F00000E200000 +0E2000000E2100000E2100000F2100000F2100000F2200000E2200000A2300 +010522040404240A040327110303291903022B2203022D2E02012E3B01012F +48010131580101316A0101308001012D9F01012D9F01012D9F01012D9F010F +2400000F2400000F2400000F2400000F2400000F2400000F2400000F240000 +0F240000102500001025000010260000102600001026000010270000102700 +000F2800000B29000007290304042B0805032E100302321803023320030235 +29020137360101394501013B5601013C6801013B7E0100379E000036A40000 +36A5000037A500112A0000112A0000112A0000112A0000112A0000112A0000 +112A0000112A0000112A0000112B0000112C0000112C0000112D0000112D00 +00122E0000122E0000112F00000D300000093102030532060504370E04023C +1603023F1E0202402502014231020144410101485301004A670000497C0000 +469B000045AB000045AB000045AB0012310000123100001231000012310000 +12310000123100001231000012310000123200001233000013340000133400 +0013350000133600001336000013370000133700000F3A00000B3B0102063C +040504410B0503481303024E1C020150230201512D0101523B0100574D0000 +5C6300005D7900005B97010059B3000059B3000059B300143B0000143B0000 +143B0000143B0000143B0000143B0000143B0000143B0000143C0000143D00 +00143D0000143E0000143F0000144000001440000014410000144200001146 +00000D490101084B03040550080504571104035E19030263210201662A0100 +673600006C480000715D0000737400007293000070BE000070BE000071BE00 +15460000154600001546000015460000154600001546000015460000154600 +001548000015490000164A0000164B0000164B0000164C0000164D0000164E +0000164F0000135400000F5901010B5D02020762050404690B040371140301 +791B02007E230100832E0000874000008B5400008F6C00008D8F00008DCE00 +008ECF00008ECF001654000016540000165400001654000016540000165400 +0016540000175400001755000017560000175700001758000017590000175A +0000175B0000175C0000175D000014630000106A00000D7101010978010205 +7F02030288060201920A0100A1110000B21B0000C12A0000CC420000DA5D00 +00E3810000D9F10000DAF70000DBF800> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000F003A0015003B001B003E00220041002D0045003C004A004C004D +005D004F006F004E0080004D0092004D00AA004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000F003A0015003B001B003E00220041002D0045 +003C004A004B004D005D004F006E004E007F004D0091004D00A9004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000F003A0015003B001B003E +00220041002D0045003B0049004B004D005C004F006E004E007F004D009000 +4D00A7004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000E003A +0015003B001B003E00220041002C0045003B0049004A004D005C004F006D00 +4E007E004D008F004D00A6004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000E003A0014003B001B003E00220041002C0044003B0049004A00 +4D005B004F006C004E007E004D008F004D00A5004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000E003A0014003B001A003E00210041002C00 +44003A00490049004D005B004F006C004E007D004D008E004C00A4004A00B0 +004800B1004700B2004600B2004400B3003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000E003A0014003B001A00 +3E00210041002C0044003A00490049004900590048006B0045007B0041008C +003E00A7003C00B9003B00BB003A00BC003900BD003900BE003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000E00 +3A0014003B001A003D0021003A002900390036003A0044003A005500390067 +003600790034008C003300AA003200C2003100C3003000C3003000C4002F00 +C4003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000E0036001300320018002F001E002D0027002C0032002C0041 +002B005200290063002800760028008B002900AA002A00C5002900C5002800 +C5002700C5002700C5003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0035000C002F000B002B000F002800160025001D00240026 +002300300021003E001F004F001E005F001E0072001E0088002000A7002100 +C3002000C2001F00C2001F00C1001E00C1003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0034000C002E000A00290009002500080022000E00200015 +001E001E001D0026001C002F0019003C0017004C0016005C0015006E001500 +820017009F001900BC001800BB001700BA001700B9001600B9003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0035000C002E000A002900090024000800210007001E0007 +001C000E001900160017001E001600260015002F0012003B0010004A000F00 +59000E0069000E007B000F0093001100AF001000AE000F00AC000F00AB000E +00AB003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0038000D0030000B002900090024000800200007001D0007 +001A0006001800060016000E001300160011001F00100026000E002E000C00 +3A000A004700090055000800640008007400080087000900A00008009E0008 +009D0007009C0007009B0037000D0037000D0037000D0037000D0037000D00 +37000D0037000D0037000D0033000B002B00090025000800200007001D0007 +001A00060017000500150005001300040010000D010E0016000B001E000900 +250007002C000500380004004300030051010301600002016F0003017E0002 +009600020195000101950001019400010194002A0009002A0009002A000900 +2A0009002A0009002A0009002A0009002A00090027000800210007001D0007 +0019000600170005001400050012000400100004000E0003000A000D010800 +160005001C010300220002012900010137000002410000024F0000025E0000 +026D0000017900000193000001930000019300000193000001930020000700 +200007002000070020000700200007002000070020000700200007001E0007 +001A0006001700050014000500110004000F0003000C0003000A0002000800 +010004000D000201140000011B000001210000012800000236000002400000 +024E0000025D0000026C000002770000019200000193000001930000019300 +00019300190006001900060019000600190006001900060019000600190006 +00190006001700060014000500110004000E0003000B000200090001000500 +0100020000000000000000010D000001140000011B00000120000002280000 +0235000002400000024D0000025C0000026B00000276000001900000019300 +00019300000193000001920013000400130004001300040013000400130004 +00130004001300040013000400120004000E0003000B000200080101000401 +00000102000001020000010200000102000001030B01000312010003190000 +041F00000427000004320000053E0000054B00000459000004680000047400 +00048C00000391000003910000039100000391000E0202000E0202000E0202 +000E0202000E0202000E0202000E0202000E0202000C020200090301000503 +00000204000002050000020500000205000002060000030600000105080101 +0511010106180100061E000007250000072F0000073B000007480000075600 +00076500000673000006870000058F0000058F0000058F0000058F00080501 +01080501010805010108050101080501010805010108050101080501010605 +00000307000003070000030800000408000004080000040900000409000004 +0900000208070202080F020108160101091D0100092400000A2D00000A3900 +000A4500000A530000096200000971000008840000088E0000088E0000088E +0000088E00040A0000040A0000040A0000040A0000040A0000040A0000040A +0000040A0000050A0000050A0000050A0000050B0000050B0000050B000005 +0B0000050B0000060C0000030B0402020B0C02010B1402010B1B01010C2201 +000D2B01000D3701010D4301010D5101000C6001000C7001000C8201010B8E +01010B8E01010B8E01010B8E01060C0000060C0000060C0000060C0000060C +0000060C0000060C0000060C0000060C0000060D0000060D0000060D000007 +0D0000070E0000070E0000070E0000070E0000030E0202020E0A03020E1203 +010E1902010F200101102A01011035010110410101104E0101105D01010F6D +01010F8001010E8E01010F8E01010F8E01010F8E01070F0000070F0000070F +0000070F0000070F0000070F0000070F0000070F0000080F0000080F000008 +10000008100000081000000810000008100000081100000811000005100202 +0311070302110F030211170201121E02011328010114330101143F0101134C +0101135B0101136B0101137E01011390010113900101139001011390010912 +00000912000009120000091200000912000009120000091200000912000009 +12000009120000091200000913000009130000091300000913000009130000 +0A140000061401010314050303140C030215140302151C0201162502011730 +0101183D0101174A02011759020117690101177D0101179101011791010117 +9101011791010A1500000A1500000A1500000A1500000A1500000A1500000A +1500000A1500000A1500000A1500000A1500000A1600000B1600000B160000 +0B1600000B1600000B170000081701010417040303180A0303181203021919 +03021A2302011C2E02011C3B01011C4802011C5602011C6701011C7B01011B +9401011B9401011C9401011C94010B1800000B1800000B1800000B1800000B +1800000B1800000B1800000B1800000B1800000B1800000C1900000C190000 +0C1900000C1900000C1A00000C1A00000C1A0000091A0101051A0303031B09 +04031C1003021D1703021F200202202C020121390201214602012254020122 +650201217801012092010120970101209701012097010D1B00000D1B00000D +1B00000D1B00000D1B00000D1B00000D1B00000D1B00000D1C00000D1C0000 +0D1C00000D1D00000D1D00000D1D00000D1E00000D1E00000E1E00000B1E00 +00061E0203041F070403210E030322160302241E0302262902012736010128 +43010129520101296301012976010127900101269B0101269B0101269B010E +2000000E2000000E2000000E2000000E2000000E2000000E2000000E200000 +0E2000000E2000000E2100000F2100000F2100000F2200000F2200000F2200 +000F2300000D230000082401020524060404270D04032A1503022B1C03022D +2502012F32010131400101324F01013360010133740101308E01012EA00101 +2EA001012EA001102500001025000010250000102500001025000010250000 +10250000102500001025000010260000102600001027000010270000102800 +001028000011290000112900000E2A00000A2B0102062C0504042E0B040332 +130302351B030236230202382D02013A3C01013D4C01013F5E01013F720100 +3C8C00003AA600003AA600003AA600112C0000112C0000112C0000112C0000 +112C0000112C0000112C0000112C0000112C0000112D0000122E0000122E00 +00122F0000122F0000123000001230000012310000103200000C3301010835 +030304370805033C100402411803024420020245290201473601014A470100 +4E5B0100507000004E8900004BAE00004BAE00004BAE001335000013350000 +13350000133500001335000013350000133500001335000013350000133600 +001337000013370000133800001339000013390000143A0000143B0000123C +00000E3F0001094002030543060504490D040350160302561E020158260201 +593101005B41000061550000646C00006486000061B7000061B7000062B700 +14400000144000001440000014400000144000001440000014400000144000 +00144000001441000015420000154300001544000015450000154500001546 +00001547000014490000104E00000C51010208550404055A0A050462130402 +691B03016E230100722C0000753B0000794E00007E6500007D8100007CB800 +007CC500007CC500164D0000164D0000164D0000164D0000164D0000164D00 +00164D0000164D0000164E0000164F00001650000016510000165200001652 +000016530000175400001755000015580000125E00000E6401010A69020206 +6F040403770904027F1102008817000092200000982E00009E410000A35A00 +00A8770000A6AF0000A8D90000A9DA00> +] 4 {} bind dup dup dup ] +/RenderingIntent (Perceptual) +>> +setcolorrendering diff --git a/crd/zjs/kx.crd b/crd/zjs/kx.crd new file mode 100644 index 0000000..836404b --- /dev/null +++ b/crd/zjs/kx.crd @@ -0,0 +1,4682 @@ +<< +/ColorRenderingType 1 +/BlackPoint [0.000000 0.000000 0.000000] +/WhitePoint [0.964200 1.000000 0.824900] +% Bradford Cone Space +/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] +/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ] +% VonKries-like transform in Bradford Cone Space +/TransformPQR [ +{exch pop exch 3 get mul exch pop exch 3 get div} bind +{exch pop exch 4 get mul exch pop exch 4 get div} bind +{exch pop exch 5 get mul exch pop exch 5 get div} bind +] +/EncodeLMN [ +{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind +] +/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] +/EncodeABC [ +{ 116 mul 16 sub 100 div } bind +{ 500 mul 128 add 255 div } bind +{ 200 mul 128 add 255 div } bind +] +/RenderTable [ 33 33 33 [ +<000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 +FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 +0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF +000000FF000000FF000000FF000000FF> + + + + + + + + +<9D3600009E3600009E370000A03A0000A23C0000A63F0000AB420000B24000 +07B93C0010BD34001ABA280027B01A003BA00A064D9600155594002A539300 +45549300625294007E4F92009F4C8C00D4488802FF3F8802FF3F8803FF3F88 +03FF3F8803FF3F8803FF3F8803FF3F8803FF3F8803FF3F8803FF3F8803FF3F +8803FF3F8803FF3F9E3600009E3600009E380000A03A0000A23C0000A63F00 +00AC420000B2400007B93C0010BD34001ABA290027B01A003BA00A064D9600 +155594002A54930044549300615295007E5092009F4C8C00D4498803FF3F88 +03FF408803FF408803FF408803FF408803FF408803FF408803FF408803FF40 +8803FF408803FF408803FF408803FF409E3600009E3700009F380000A03A00 +00A33D0000A7400000AC430000B3410006BA3D0010BE36001ABC2B0026B21C +003AA20C064C9700135694002854930043559300605395007C5192009E4E8C +00D24A8803FF408803FF408803FF408803FF408803FF408803FF408803FF40 +8803FF408803FF408803FF408803FF408803FF408803FF409E3600009E3700 +009F380000A03B0000A33D0000A7400000AC430000B3420006BA3E000FBF37 +0019BD2C0026B31D0039A40D054B97001157950027559400415693005E5495 +007B5293009D4F8C00D14B8904FE418904FF418904FF418904FF418904FF41 +8904FF418904FF418904FF418904FF418904FF418904FF418904FF418904FF +419E3700009F3800009F390000A13B0000A33E0000A7410000AC440000B343 +0006BA3F000FC0390019BE2E0025B51E0038A60F054B98000F589500255694 +003F5794005C5595007A5393009C508C00D04D8904FE428904FF428904FF42 +8904FF428904FF428904FF428904FF428904FF428904FF428904FF428904FF +428904FF428904FF429E3700009F3800009F390000A13C0000A33E0000A741 +0000AC440000B3440006BA40000EC13A0018BF2F0025B6200037A811044A99 +000D599600245795003D5894005B569500785494009B518C00CF4E8A05FD43 +8A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF +438A05FF438A05FF438A05FF438A05FF439F3800009F380000A03A0000A13C +0000A33F0000A7420000AC450000B3450005BA41000EC23C0018C0310024B8 +220036AA1204499A000A5A9700225896003A59940059589600775595009A53 +8D00CE4F8A05FD448A05FF438A05FF438A05FF448A05FF448A05FF448A05FF +448A05FF448A05FF448A05FF448A05FF448A05FF448A05FF449F3800009F39 +0000A03A0000A13D0000A3400000A7420000AD460000B3460005BB43000DC3 +3E0017C2330023BA240035AD1503489A00085C9800205A9600385A94005659 +96007556950098548D00CB518B06FC458A06FF448A06FF458A06FF458A06FF +458A06FF458A06FF458A06FF458A06FF458A06FF458A06FF458A06FF458A06 +FF459F390000A03A0000A03B0000A13D0000A4400000A7430000AD470000B3 +470004BB45000DC43F0017C3350022BD260033B01702479C01045D99001D5B +9700355B9500545B96007358960096568E00C8538C07FC478B07FF468B07FF +468B07FF468B07FF468B07FF468B07FF468B07FF468B07FF468B07FF468B07 +FF468B07FF468B07FF46A03A0000A03A0000A13C0000A13E0000A4410000A7 +440000AD480000B3490004BB47000CC4410016C5370021C02A0032B41A0146 +9F04035C9A001A5D9800325D9500515C97007159960092588F00C4558C07FB +498C07FF478C07FF478C07FF478C07FF478C07FF478C07FF478C07FF478C07 +FF478C07FF478C07FF478C07FF478C07FF47A03A0000A13B0000A13C0000A2 +3F0000A4420000A8450000AD490000B44B0003BC49000BC4440015C73A0020 +C32D0030B91D0045A208025A9B00175F9A002F5F96004E5F97006D5C97008F +5A9000C1578D07F94C8C08FF498C08FF498C08FF498C08FF498C08FF498C08 +FF498C08FF498C08FF498C08FF498C08FF498C08FF498C08FF49A13B0000A1 +3C0000A13D0000A2400000A4430000A8460000AD4A0000B44D0002BC4B000B +C5460014CA3E001FC732002EBD210042A70C01599D0112619B002B6196004A +619800695E97008B5C9200BD5A8D06F84F8D09FF4A8D0AFF4B8D0AFF4B8D0A +FF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D0AFF4B8D +0AFF4BA13C0000A23D0000A23E0000A3410000A4440000A8480000AE4C0000 +B44F0002BC4D000AC6490013CD42001ECC37002CC2250040AD1000579F010D +649D00276398004463980064619800875F9300B95D8806F755850BFF50810D +FF50810DFF50810DFF50810DFF50810DFF50810DFF50810DFF50810DFF5081 +0DFF50810DFF50810DFF50A23D0000A23E0000A33F0000A3420000A5450000 +A8490000AE4E0000B4500002BC500009C64D0012D147001CCF3C0029C62A00 +3DB4160054A2020666A00122659B003D66880059697B00766B6C00A36C6004 +EE685B06FF655603FF685503FF685503FF685503FF685503FF685503FF6855 +03FF685503FF685503FF685503FF685503FF68A33E0000A33F0000A3400000 +A4430000A5470000A84B0000AE500000B4520002BC530008C6510010D24C00 +1AD2410027CC310039BE1E0050A70600678A05166D6E0025766100437B5000 +647D44008E7C3C00DB783800FF753600FF763500FF763500FF763500FF7635 +00FF763500FF763500FF763500FF763500FF763500FF763500FF76A33F0000 +A4400000A4420000A4450000A5480000A84C0000AD510000B3540001BB5500 +06C655000ED2500018D6470024D2390035B62C004B871C0064631109753F00 +0D882D002A8F22004B901B00768B1500BD841300FF7F1000FF801000FF8010 +00FF801000FF801000FF801000FF801000FF801000FF801000FF801000FF80 +1000FF80A4410000A5420000A5430000A4460000A64A0000A84E0000AC5200 +00B2560001BB580005C558000DD1550016DB4F0021BB4B0031913F00456E2F +005F491F0075220F008D0A07179A080C3B98050F699004109F850313FF8103 +15FF800215FF800215FF800215FF800215FF800215FF800215FF800215FF80 +0215FF800215FF800215FF80A5420000A6430000A6450000A5480000A64C00 +00A8500000AB540000B1580000B95B0004C45C000BCB5C0013B15E001E995B +002C7C52003F5D4400583B35006D13220084021F168F0024368D0029678600 +29987C002CFF77002EFF76002FFF76002FFF76002FFF76002FFF76002FFF76 +002FFF76002FFF76002FFF76002FFF76002FFF76A6440000A7450000A74600 +00A64A0000A64D0000A8520000AB560000B05A0000B85E0003B8610009A565 +00119568001B846800266E650038535E004F304F006314410675003A168100 +42357D00476377004B90710050FF6B0052FF6A0052FF6A0052FF6A0052FF6A +0052FF6A0052FF6A0052FF6A0052FF6A0052FF6A0052FF6A0052FF6AA74600 +00A8470000A8480000A74C0000A6500000A8530000AA570000AE5C0000AA61 +00029C670008916D000F86730016797700206477002F4A7300432A6800580B +58006C015B18720062376D00665E69006B87660072E6610073E5610073E461 +0073E4610073E4610073E4610073E4610073E4610073E4610073E4610073E4 +610073E461A9480000A9490000A94B0000A84E0000A7510000A7550000A959 +0000A05E0000936400038B6C00068475000B7C7D00116F84001A5B88002643 +8700362780004C0F78055D00781764008134600084565D00897B5A0096D457 +0098D4560098D4560098D4560098D4560098D4560098D4560098D4560098D4 +560098D4560098D4560098D456AB4B0000AC4B0000AB4D0000A9510000A754 +0000A75700009B5A00008C5F0000846700027F7200047A7C00077287000C67 +9200135599001D3F9B0029279A003B1099014E009B125600A12C5200A94D4E +00B2714C01CDBC4901D2C94701D2C94701D2C94701D2C94701D2C94701D2C9 +4701D2C94701D2C94701D2C94701D2C94701D2C947AE4D0000AF4E0000AE50 +0000AA530000A85500009A580000885B00007E610000796B00007577000171 +8200026A90000560A0000B53B0001240BA001C29C0002A15CA003907D60F41 +01E3254101F4483F02FB6A3E09FE91380CFF9C340CFF9C340CFF9C340CFF9C +340CFF9C340CFF9C340CFF9C340CFF9C340CFF9C340CFF9C340CFF9C34B050 +0000B1510000B0520000AB5500009C570000865800007A5D0000736500006F +6F00006B7B000066880000609A000059AE00034EC3000A3CD2001429EC011F +15FB012D05FE0F3806FF2F3303FF4D3302FF683305FF843106FF912F06FF91 +2F06FF912F06FF912F06FF912F06FF912F06FF912F06FF912F06FF912F06FF +912F06FF912FB3530000B3530000B3540000A1560000875600007959000070 +5F00006A67000066720000617E00005B8C0000569E000050B3000344C5000B +32D2001422F9021E0AFB002F05FE193003FF362E01FF542D01FF6C2D03FF84 +2D03FF932C03FF932C03FF932C03FF932C03FF932C03FF932C03FF932C03FF +932C03FF932C03FF932C03FF932CB5550000B5550000A85500008A53000079 +5400006E59000067600000626900005D74000057800000518F00004EA20000 +46B6000438C3000B29D9001518F3012009F80B2908FF252701FF3E2900FF59 +2801FF6F2801FF842901FF962801FF962801FF962801FF962801FF962801FF +962801FF962801FF962801FF962801FF962801FF9628B5550000AD5500008D +5100007A5100006D530000655900005E610000596A0000547600004E830000 +4992000045A500003CB500042EC3000C20DE001610EE002108F8142304FF2A +2400FF442300FF5D2200FF722301FF852408FFA51D08FFA51D08FFA51D08FF +A51D08FFA51D08FFA51D08FFA51D08FFA51D08FFA51D08FFA51D08FFA51DB3 +5500008F5000007C4D00006E4F0000635300005C59000057620000516C0000 +4C78000046860000419500003CA5000032B2000426C7000D19E3001709EE02 +2002F7172200FF302100FF491E00FF601E00FF741F00FF85200FFFB7140FFF +B7140FFFB7140FFFB7140FFFB7140FFFB7140FFFB7140FFFB7140FFFB7140F +FFB7140FFFB714905100007D4D00006F4B0000634E00005B530000555A0000 +4F6300004A6E0000437B00003D8800003895000032A4000029B300051FCA00 +0E13E6001702EC042000FC1D1F00FF351D01FF4D1A01FF631900FF761B00FF +861C0AFFB6140BFFBF130BFFBF130BFFBF130BFFBF130BFFBF130BFFBF130B +FFBF130BFFBF130BFFBF130BFFBF137C4D00006E4A0000634A00005A4E0000 +535400004E5C000048650000427100003B7E0000358900002F9500002AA300 +0022B5000619CE000F0CE1001702F20C1B00FF221B00FF3B1902FF511501FF +651500FF791800FF861806FFB31307FFBB1207FFBB1207FFBB1207FFBB1207 +FFBB1207FFBB1207FFBB1207FFBB1207FFBB1207FFBB126E4A000063490000 +5A4A0000534F00004D560000475E0000416900003A750000337F00002D8A00 +002896000023A500021CB9000812CF000F06DF021600F5121800FF271700FF +3F1401FF541100FF671200FF7A1401FF88140EFFB3090EFFBB080EFFBB080E +FFBB080EFFBB080EFFBB080EFFBB080EFFBB080EFFBB080EFFBB080EFFBB08 +6149000059490000524A00004C5000004658000040620000396D0000327800 +002C820000268B0000229700001DA8000216BD00080CD1000F02E0061400F4 +181400FF2C1200FF431000FF570E00FF690F00FF7B1007FF8D0B10FFB1020E +FFB6030EFFB6030EFFB6030EFFB6030EFFB6030EFFB6030EFFB6030EFFB603 +0EFFB6030EFFB60358490000514900004C4B000046520000405B0000396500 +00327000002B7A000025830000218E00001D9A000018AB000310BE000907D1 +020E00E20A1100F81E1004FF330B00FF470C00FF5A0B00FF6B0B00FF7B0C04 +FF8B090DFFAE010EFFB4000EFFB4000EFFB4000EFFB4000EFFB4000EFFB400 +0EFFB4000EFFB4000EFFB4000EFFB400> +<9B3100009B3100009B3200009C3300009E350000A1370000A5390000A93800 +04AE33000DB02C0018AD210024A514003798070A459100184A90002B489000 +44499100604791007945900096418C00C13D8800FC388700FF368700FF3687 +00FF368700FF368700FF368700FF368700FF368700FF368700FF368700FF36 +8700FF368700FF369B3100009B3200009C3200009C3400009E360000A13700 +00A5390000A9380004AE34000DB12D0017AE220024A61500379A0809459100 +174B90002A499000434A91005F4891007846900095428C00BF3E8800FB3986 +00FF368600FF378600FF378600FF378600FF378600FF378600FF378600FF37 +8600FF378600FF378600FF378600FF379B3100009B3200009C3300009D3400 +009E360000A1380000A53A0000AA390004AF35000DB32E0017B0240023A816 +00369B0908459200154C9000284A9000424B91005E4991007747900094448C +00BE3F8800FA3A8600FF378600FF378600FF378600FF378600FF378600FF37 +8600FF378600FF378600FF378600FF378600FF378600FF379B3200009C3200 +009C3300009D3500009F370000A2390000A63A0000AA3A0004B036000CB430 +0016B1250022A91700359C0A08459300144D9000274B9100404C91005C4A92 +007648910093458C00BC418800F93B8600FF388600FF388600FF388600FF38 +8600FF388600FF388600FF388600FF388600FF388600FF388600FF388600FF +389B3200009C3300009C3300009D3500009F370000A2390000A63B0000AB3B +0003B037000CB5310016B3260022AA1900349E0B07449300134E9000264C91 +003F4D91005B4B92007549910092468C00BB428800F83C8600FF398600FF39 +8600FF398600FF398600FF398600FF398600FF398600FF398600FF398600FF +398600FF398600FF399C3300009C3300009D3400009D3600009F380000A23A +0000A63C0000AB3C0003B138000CB6320016B4280021AC1A0033A00C064494 +00114F9100254D91003D4E9100594C9200744A920091478D00B9438800F63E +8600FF3A8600FF3A8600FF3B8600FF3B8600FF3B8600FF3B8600FF3B8600FF +3B8600FF3B8600FF3B8600FF3B8600FF3B9C3300009C3400009D3400009E36 +00009F380000A23A0000A63C0000AB3D0003B23A000BB8340015B6290021AE +1C0032A20E054495000F519100244E91003B4F9200574E9200734C93009049 +8D00B7448900F53F8600FF3C8600FF3C8600FF3C8600FF3C8600FF3C8600FF +3C8600FF3C8600FF3C8600FF3C8600FF3C8600FF3C8600FF3C9C3400009D34 +00009D3500009E370000A0390000A33B0000A73D0000AC3E0002B33B000BB9 +360014B82B0020B11E0031A410044396000D5392002250920039509200554F +9300714D93008F4A8D00B6468901F4418701FF3D8701FF3D8701FF3D8701FF +3D8701FF3D8701FF3D8701FF3D8701FF3D8701FF3D8701FF3D8701FF3D8701 +FF3D9D3400009D3500009E3600009E380000A03A0000A33C0000A73E0000AD +400002B43D000ABB380014BA2E001FB320002FA712024397000A5493001F52 +930036529200525193006F4F94008E4C8E00B4488A01F3428702FF3E8702FF +3E8702FF3E8702FF3E8702FF3E8702FF3E8702FF3E8702FF3E8702FF3E8702 +FF3E8702FF3E8702FF3E9D3500009E3600009E3700009F380000A13B0000A4 +3D0000A8400000AD420001B53F0009BC3A0013BC30001EB623002EAB150141 +9A03085495001C549400325493004F5394006D5195008A4F8F00B14B8B02F2 +448803FF3F8803FF408803FF408803FF408803FF408803FF408803FF408803 +FF408803FF408803FF408803FF408803FF409E3600009E3700009F3700009F +390000A13C0000A43E0000A9410000AE440001B5410009BC3C0012BE33001D +BA27002CB01800409E0707529600185695002F5693004C5694006A53950087 +519000AE4D8B01F1488904FF418904FF418904FF418904FF418904FF418904 +FF418904FF418904FF418904FF418904FF418904FF418904FF419E3700009F +3800009F380000A03A0000A23D0000A5400000A9430000AE460000B5430008 +BD3F0011C137001CBE2B002AB41C003EA20B06509800145996002B58940048 +5895006656960083539200AA508B01EF4C8A05FF438A05FF438A05FF438A05 +FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A05FF438A +05FF439F3800009F390000A03A0000A13B0000A23E0000A5410000A9440000 +AF470000B6460007BD420010C43B001BC2300028B820003BA810054E9A000E +5C9800275A9500425B9500615997007F568C00A3567E00ED557D0AFF477A0B +FF47790CFF47790CFF47790CFF47790CFF47790CFF47790CFF47790CFF4779 +0CFF47790CFF47790CFF47A0390000A03A0000A13B0000A13D0000A23F0000 +A5430000A9460000AF490000B6490006BE46000FC8400019C6350026BD2500 +38AF15034C9C01075F9A00225E8F0039607F00526374006D6568008F655B00 +D9655603FF5D5201FF605001FF615001FF615001FF615001FF615001FF6150 +01FF615001FF615001FF615001FF615001FF61A03B0000A13B0000A13C0000 +A23E0000A3410000A5440000AA480000AF4B0000B64C0005BF4A000DC94500 +18CA3A0024C42C0035B71B0149990601617E0415686400246F59003D744C00 +5A7642007D743A00BA713700FF6B3500FF6C3300FF6C3300FF6C3300FF6C33 +00FF6C3300FF6C3300FF6C3300FF6C3300FF6C3300FF6C3300FF6CA13C0000 +A23D0000A23D0000A2400000A3430000A6460000AA4A0000B04E0000B75000 +04BF4E000CCA490016CF410021CB340031A52900467C1A005E5B0F096F3801 +0D7F28002685210041881B00678415009B7F1400FF771100FF780F00FF780F +00FF780F00FF780F00FF780F00FF780F00FF780F00FF780F00FF780F00FF78 +0F00FF78A23D0000A33E0000A33F0000A3410000A4440000A6480000AA4C00 +00B0510000B7530003BF52000BCA4F0014CA4A001EAC46002D8739003F662B +0059431C006E1E0D00840807148F080C3290050F5C89041088800312FA7902 +13F9790214F8780214F8780214F8780214F8780214F8780214F8780214F878 +0214F8780214F8780214F878A33F0000A4400000A4410000A4430000A54700 +00A64A0000A94E0000AF530000B5550002BE560009B9570011A558001C8F55 +0028734B0039563F005135300067111E007C021D158600222F8500265B7F00 +278377002AF570002BFB6F002DFC6F002DFC6F002DFC6F002DFC6F002DFC6F +002DFC6F002DFC6F002DFC6F002DFC6F002DFC6FA5410000A5420000A64300 +00A5450000A5480000A64C0000A9500000AE550000B4580001AA5C00079A5F +00108C6100197D610023675E00334D56004A2B47005F1039066F0034167900 +3C307600415B700044826A0046E5650048FF630049FF620049FF620049FF62 +0049FF620049FF620049FF620049FF620049FF620049FF620049FF62A64300 +00A6440000A7450000A6470000A64B0000A74F0000A9530000AC5700009F5C +0001926100078966000E7F6C00157170001E5E6F002C456A003F265F005409 +4F01660052186B005A3467005F586300637D5F0067C95B0068ED590069ED58 +0069ED580069ED580069ED580069ED580069ED580069ED580069ED580069ED +580069ED58A7460000A8460000A8470000A74A0000A74D0000A7510000A855 +0000975800008B5E0002846600067D6E000A74760011677B0019557E00243D +7D0033237600480C6E055A006F185E0077335A007B5557007E76540084AF51 +0087DA500088DA4F0088DA4F0088DA4F0088DA4F0088DA4F0088DA4F0088DA +4F0088DA4F0088DA4F0088DA4FA9480000A9490000AA4A0000A94D0000A74F +0000A753000092550000855A00007D610001786B0004737500076B7E000C5E +8700134D8D001C388E0028228D003A0A8A024D008D155000922E4C00974D48 +009D6F4600ABA34400AFD74200B0D84100B0D84100B0D84100B0D84100B0D8 +4100B0D84100B0D84100B0D84100B0D84100B0D841AB4B0000AC4C0000AD4D +0000AB500000A95300009153000081560000785C0000726500006E70000169 +7B0002618600065894000B4B9F001237A4001D23A7002B0FB0003A04B6123E +00BE283D00C6483B00CB6A3A03DB8D3805EABC3305EBBB3305EBBB3305EBBB +3305EBBB3305EBBB3305EBBB3305EBBB3305EBBB3305EBBB3305EBBB33AF4E +0000B04F0000B0500000AD5200009252000080530000745800006D5F000068 +690000647400005E8100005890000052A3000249B700073AC6000F29E10118 +17FC012404FD083206FF2A2C01FF472D01FF642C02FF7D2D03FF942B03FF94 +2B03FF942B03FF942B03FF942B03FF942B03FF942B03FF942B03FF942B03FF +942B03FF942BB2510000B2520000B35300009652000080520000735500006A +5B0000636300005E6D00005A780000548600004E9600004AAB000140BC0006 +30C8000F21E901190EF3002609FD192704FF312700FF4D2800FF682701FF7F +2802FF982602FF992602FF992602FF992602FF992602FF992602FF992602FF +992602FF992602FF992602FF9926B4540000B5550000995300008250000073 +51000068550000615C00005B640000566E0000507B00004B89000046990000 +41AC000135B9000627CF001018E5001A09F2072306FD1F2300FF372400FF53 +2200FF6B2201FF7F2308FFA11D0AFFA91B0AFFA91B0AFFA91B0AFFA91B0AFF +A91B0AFFA91B0AFFA91B0AFFA91B0AFFA91B0AFFA91BB55500009B53000083 +4E0000744D0000675000005F550000585C0000536500004E710000487E0000 +428B00003E9B000037AB00012BB9000720D2001111EA011B02F1082301FC24 +2100FF3D1F00FF571D00FF6E1E00FF801F0AFFA4170EFFBB140EFFBB140EFF +BB140EFFBB140EFFBB140EFFBB140EFFBB140EFFBB140EFFBB140EFFBB149D +530000834E0000744B0000674C00005E50000057560000515E00004B670000 +457300003F8000003A8D0000349A00002DA8000124BB000819D600120AE702 +1B00F60F1F00FF291D00FF431A01FF5A1800FF701A00FF811B06FF9F170BFF +CB110BFFCB110BFFCB110BFFCB110BFFCB110BFFCB110BFFCB110BFFCB110B +FFCB110BFFCB11834E0000734B0000674900005D4B00005650000050570000 +4A600000446A00003D77000036820000308D00002B9A000025AA00021DBF00 +0A12D7001205E6041900FE161A00FF2E1901FF471602FF5D1300FF721600FF +821705FF9E1307FFDC1007FFDC1007FFDC1007FFDC1007FFDC1007FFDC1007 +FFDC1007FFDC1007FFDC1007FFDC10734B0000664900005D490000554B0000 +4F51000049590000436300003C6E0000357900002E840000298F0000249B00 +001FAC000317C4000B0BD6001302E80A1600FF1C1600FF331401FF4B1101FF +5F1000FF731200FF84140DFFA10805FFDF0D05FFDF0D05FFDF0D05FFDF0D05 +FFDF0D05FFDF0D05FFDF0D05FFDF0D05FFDF0D05FFDF0D654900005B490000 +544900004E4C000048530000425C00003B660000347200002D7C0000278500 +00239000001F9E000119B0000411C5000B07D7031100E80E1300FE221201FF +380F00FF4E0E00FF620D00FF750F03FF870D0FFFA20205FFD70905FFD70905 +FFD70905FFD70905FFD70905FFD70905FFD70905FFD70905FFD70905FFD709 +5A490000534900004D4A0000474E0000415600003B600000346A00002D7500 +00277E0000228800001E93000019A1000114B300050BC7000C02D5041000ED +150F05FD290A04FF3F0800FF510A00FF640900FF760B01FF860B09FFA10407 +FFCC0407FFCC0407FFCC0407FFCC0407FFCC0407FFCC0407FFCC0407FFCC04 +07FFCC0407FFCC04514900004B4A0000464C0000415100003B5A0000346400 +002D6E000027780000218100001D8A00001996000014A400010EB5000605C5 +000B00D80A0C02F11B0A09FD300103FF420400FF540600FF660600FF760701 +FF860706FF9F0208FFC40008FFC40008FFC40008FFC40008FFC40008FFC400 +08FFC40008FFC40008FFC40008FFC400> +<952B0000962C0000962C0000972D0000992E00009B3000009E310000A23000 +03A52C000BA6240015A21B00219B0F003491040C3F8C001B408B002C3E8E00 +433E8E005E3D8E00733B8D008D388B00B3348A00F7308700FF2B8700FF2B87 +00FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B +8700FF2B8700FF2B952B0000962C0000972D0000972D0000992F00009B3000 +009F310000A2300003A62C000BA7250015A31C00209C10003393050C3E8C00 +1A408B002B3F8E00423F8E005C3E8E00733C8D008C398B00B1358A00F53187 +00FF2C8700FF2C8700FF2C8700FF2C8700FF2C8700FF2C8700FF2C8700FF2C +8700FF2C8700FF2C8700FF2C8700FF2C962C0000962C0000972D0000982E00 +009A2F00009C3100009F320000A3310003A62D000AA8260014A41D00209D11 +003294060B3E8D0019418C002A3F8E0041408F005B3F8E00723C8D008C398B +00B0368A00F3328700FF2C8700FF2C8700FF2D8700FF2D8700FF2D8700FF2D +8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D962C0000972D00 +00982E0000982E00009A3000009C310000A0320000A3320003A72E000AA928 +0014A61E001F9F12003195070A3E8E0018428C0029408E0040418F005A408E +00713D8E008B3A8B00AF378A00F0338700FF2D8700FF2D8700FF2D8700FF2D +8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF +2D972D0000972D0000982E0000992F00009A3100009D320000A0330000A433 +0003A72F000AAA290013A720001EA01300309708093E8E0016448C0027418E +003E428F0058418F00703E8E008A3C8C00AE388A00EE348700FF2E8700FF2E +8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF +2F8700FF2F8700FF2F972D0000982E0000992F00009A3000009B3100009D33 +0000A0340000A4340002A8310009AB2B0013A821001EA215002F980A083D8F +0015458C0026428F003C438F0056428F006F408F00893D8C00AC398A00EB35 +8700FF308700FF308700FF308700FF308700FF308700FF308700FF308700FF +308700FF308700FF308700FF308700FF30982E0000992F0000993000009A30 +00009C3200009E330000A1350000A5350002A9320009AD2D0012AA23001DA4 +17002E9A0B073D900013478D0024448F003A448F0054448F006E419000883F +8C00AA3B8A00E8378700FF318700FF318700FF318700FF318700FF318700FF +318700FF318700FF318700FF318700FF318700FF318700FF31992F00009A30 +00009A3000009B3100009C3300009E340000A1360000A5360002AA340008AE +2E0012AC25001DA619002D9D0D063D910010498E0022458F00374690005245 +90006C43900087408C00A83D8A00E5398700FF338700FF338700FF338700FF +338700FF338700FF338700FF338700FF338700FF338700FF338700FF338700 +FF339A3000009A3100009B3100009B3200009C3400009F350000A2370000A6 +380001AB360007AF300011AE27001CA91B002BA00F043C92000E4B8F002048 +9000344890004F4790006A45910085438D00A63F8A00E13B8700FF358700FF +358700FF358700FF358700FF358700FF358700FF358700FF358700FF358700 +FF358700FF358700FF359B3100009B3100009B3200009C3300009D3400009F +360000A2380000A73A0001AC380007B1330010B12A001BAC1E0029A311023C +95020B4C90001D4A9000314A90004C4A91006947920084458E00A4418A00DD +3D8600FF378600FF378600FF378600FF378600FF378600FF378600FF378600 +FF378600FF378600FF378600FF378600FF379B3200009C3200009C3300009C +3400009D350000A0370000A3390000A73C0000AD3A0006B235000FB42D001A +B0210028A714003B9805094B92001A4D91002E4C9100494C9100664A920081 +488F00A1448B00D7408600FF398600FF398600FF398600FF398600FF398600 +FF398600FF398600FF398600FF398600FF398600FF398600FF399C3300009C +3300009D3400009D3500009E370000A0390000A43B0000A83D0000AE3C0005 +B438000FB7310019B4250026AB1700399C08074A9400175091002B4F910045 +4F9200624D93007E4B90009E478B00D1438600FF3C8600FF3C8501FF3C8401 +FF3C8401FF3C8401FF3C8401FF3C8401FF3C8401FF3C8401FF3C8401FF3C84 +01FF3C9C3400009D3500009D3500009E3600009F380000A13A0000A53D0000 +A93F0000AF3F0005B63B000EBB350018B92A0024B01B0036A10C0549960012 +54930027529300405292005E508E007850820093507800C34E7508FF417108 +FF426F08FF436E08FF436E08FF436E08FF436E08FF436E08FF436E08FF436E +08FF436E08FF436E08FF439D3500009E3600009E3700009F3700009F3A0000 +A23C0000A53F0000AA420000B0420004B73F000CBF3A0016BD2E0022B52000 +33A711034798000C57950022558500345A77004C5D6E00665F6200835F5900 +B55E5202FC564F01FF574D01FF594C00FF594C00FF594C00FF594C00FF594C +00FF594C00FF594C00FF594C00FF594C00FF599E3700009F3700009F380000 +9F390000A03B0000A33E0000A6410000AB440000B1450003B843000BC03E00 +15C1340020BB260030AF1701448C06005C750414625C0021685300386D4800 +546F3F00746D3800A26B3400F4643200FF643000FF652F00FF652F00FF652F +00FF652F00FF652F00FF652F00FF652F00FF652F00FF652F00FF659F380000 +A0390000A03A0000A03B0000A13D0000A3400000A6430000AB460000B14900 +01B9470009C0420013C53A001EBC30002C9825004073180059530E08683301 +0C772600247C20003C7F19005D7D150086791300E7711100FD701000FD710F +01FC710F01FC710F01FC710F01FC710F01FC710F01FC710F01FC710F01FC71 +0F01FC71A03A0000A13B0000A13B0000A13C0000A23F0000A3420000A64500 +00AC490000B24C0001B94B0008C1480011B846001B9F4100297E34003A5E27 +00523D1A00671A0C007B07051386070A2F86050E5282030E777B0310C57302 +11F3710112F2710013F2710013F2710013F2710013F2710013F2710013F271 +0013F2710013F2710013F271A13C0000A23D0000A23D0000A33E0000A34100 +00A4440000A7480000AC4C0000B2500001BA500006AA52000F9A52001A874E +00246B4400335038004A312B00610F1B0075011A157E001F2C7C0023527800 +2476710026BB6A0029F869002BF968002BF968002BF968002BF968002BF968 +002BF968002BF968002BF968002BF968002BF968A33E0000A33F0000A43F00 +00A4400000A4430000A5470000A74B0000AC4F0000B15300019F5700069259 +000E855B0016755A001F6056002D474E0043294100580F3406680031167100 +382E6D003E5269004076640042B35F0044FB5C0045FB5C0045FB5B0045FB5B +0045FB5B0045FB5B0045FB5B0045FB5B0045FB5B0045FB5B0045FB5BA44000 +00A5410000A5420000A5430000A5460000A5490000A74D0000A75100009656 +00018B5A0006825F000C786400136A68001C576600283F61003B2357004F08 +470160004A1864005331610058555D005C7559005FA855005FFE500060FF4F +0061FF4F0061FF4F0061FF4F0061FF4F0061FF4F0061FF4F0061FF4F0061FF +4F0061FF4FA6430000A6440000A6440000A7450000A6480000A64C0000A150 +00008F530000845800027D5F0005766700096D6D0010607300184E76002238 +7400311F6C00430964055400671957006E3154007251520077714D007A994B +007DE947007EE846007EE846007EE846007EE846007EE846007EE846007EE8 +46007EE846007EE846007EE846A7450000A8460000A8470000A9480000A74B +00009F4E00008A5000007F540000775B0001716400046B6D00076376000B57 +7E00124683001B328400271E820038087F04490082184A00872F45008A4B43 +008F6D400098943F0098E43C0099E53B0099E53B0099E53B0099E53B0099E5 +3B0099E53B0099E53B0099E53B0099E53B0099E53BA9490000AA4A0000AB4A +0000AC4B0000A14E0000894E00007B510000725700006C5F00006769000161 +730003597E00065089000B439200123095001D1E97002B0A9D013902A1153B +00A7293800AC473500B0683400C0893400D0D83000D1D93000D2D93000D2D9 +3000D2D93000D2D93000D2D93000D2D93000D2D93000D2D93000D2D930AC4C +0000AD4D0000AE4E0000A54E00008A4D0000794E00006E530000675A000061 +6300005C6D000057790000508600014A96000340A3000831AE001122BE001B +11CC002703DC0C2D00EC242C00F3452900F5632902FB7D290AFFA3210DFFAF +1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFFAE1E0DFF +AE1E0DFFAE1EB04F0000B1500000A85100008C4D00007A4D00006D50000064 +5600005D5E000058670000537300004D800000478F000043A100003BB10003 +2EC0000A21DC001410ED001F06F7122303FF2B2300FF472100FF622100FF7A +2204FF971F0BFFAC1A0BFFAC190BFFAC190BFFAC190BFFAC190BFFAC190BFF +AC190BFFAC190BFFAC190BFFAC19B3530000AF5400008C5000007B4C00006D +4E0000625200005B58000055600000506900004A760000448300003F920000 +3AA1000030AE000326C3000B19E0001508ED031E00F6162200FF312000FF4C +1C00FF651C00FF7B1E05FF971A0DFFBE130DFFBE130DFFBE130DFFBE130DFF +BE130DFFBE130DFFBE130DFFBE130DFFBE130DFFBE13B45500008C5000007A +4C00006D4A0000614D000059520000535900004E610000486C000041790000 +3B850000359200002F9F000028AF00041EC6000C12E1001502EB051D00FE1D +1D00FF371B01FF501701FF681800FF7D1A02FF93190AFFCF110AFFCF110AFF +CF110AFFCF110AFFCF110AFFCF110AFFCF110AFFCF110AFFCF110AFFCF118D +500000794C00006B4A000061490000584D0000525300004C5B000046640000 +40700000397B0000328600002C920000279F000021B2000518CB000D0ADC00 +1603F10E1900FF221900FF3C1602FF541300FF6A1400FF7F1605FF941306FF +E00F06FFE00F06FFE00F06FFE00F06FFE00F06FFE00F06FFE00F06FFE00F06 +FFE00F06FFE00F794C00006A4A00005F49000058490000514E00004B540000 +455D00003F68000037730000307E00002A8800002593000021A200021AB600 +0611CD000E05DD031400F1131600FF281500FF401200FF571000FF6B1100FF +81120CFF9A0804FFDF0C01FFF10E01FFF10E01FFF10E01FFF10E01FFF10E01 +FFF10E01FFF10E01FFF10E01FFF10E694A00005E4900005649000050490000 +4A4F0000445700003E610000376C00002F77000029800000248A0000209600 +001BA5000215B900070BCF000E02DD071200F2191202FF2D0E00FF450D00FF +590C00FF6D0D00FF810E0BFF9A0405FFD70800FFF90B00FFF90B00FFF90B00 +FFF90B00FFF90B00FFF90B00FFF90B00FFF90B00FFF90B5D49000054490000 +4E4A0000494B0000435100003D5A0000366500002F6F000029790000238200 +001F8C00001B99000016A800030FBB000806CD000D00DF0C0F02F61F0C08FF +360501FF480900FF5C0900FF6F0900FF810A06FF990508FFCB0202FFED0602 +FFED0602FFED0602FFED0602FFED0602FFED0602FFED0602FFED0602FFED06 +534900004D4A0000474B0000434D00003D550000365E00002F690000287300 +00237C00001E8500001A8F0000169C000010AB000309BC000800CB010C00E5 +120B05F7250506FF390100FF4B0500FF5F0500FF700501FF820605FF970208 +FFC40002FFE10402FFE10402FFE10402FFE10402FFE10402FFE10402FFE104 +02FFE10402FFE1044B4A0000464C0000414E00003C500000365800002F6200 +00286C0000237600001E7E00001987000015920000119E00000BAC000403BB +010800D0080800E9170703FA280202FF3B0100FF4E0200FF610200FF720202 +FF830103FF960004FFBA0003FFD30003FFD30003FFD30003FFD30003FFD300 +03FFD30003FFD30003FFD30003FFD300> +<8F250000902600009126000091270000922800009429000097290000992800 +019B2500089A1E00129616001E9009002F8B030E3588001C3688002B348B00 +42348C005B338B006F318A00862E8A00A72B8A00DF278500FF218500FF2285 +00FF228500FF228500FF228500FF228500FF228500FF228500FF228500FF22 +8500FF228500FF229025000090260000912700009227000093280000952900 +0097290000992900019B2500089B1F00129717001D910A002E8B030D358900 +1B3688002B358B0041358C005A348B006F318A00862F8A00A62C8A00DD2885 +00FF228500FF228500FF228500FF228500FF228500FF228500FF228500FF22 +8500FF228500FF228500FF228500FF22902600009126000091270000922800 +0093290000952A0000972A00009A2A00019C2600089C2000129918001D920B +002E8D040D3689001A3789002A368B0040368C0059358B006E328B0085308A +00A52D8A00DC298600FF238600FF238600FF238600FF238600FF238600FF23 +8600FF238600FF238600FF238600FF238600FF238600FF2391260000912700 +00922800009228000093290000962A0000982B00009A2A00019D2700079D21 +00119A19001C930D002D8E050C368A001939890029368B003E378C0058368C +006D348B0084318A00A42E8A00D92A8600FF248600FF248600FF248600FF24 +8600FF248600FF248600FF248600FF248600FF248600FF248600FF248600FF +2491270000922800009228000093290000942A0000962B0000992B00009B2B +00019E2800079F2200119C1A001B950E002C8F060B368A00183A890027378B +003D388D0056378C006C358B0083328B00A22F8A00D72B8600FF258600FF25 +8600FF258600FF258600FF258600FF258600FF258600FF258600FF258600FF +258600FF258600FF25922700009228000093290000942A0000952B0000972C +0000992C00009C2C00019F2A0007A12400109D1C001B9710002B910709368B +00173C890026398C003B398D0054388C006B368C0082348B00A1308A00D52C +8600FF268600FF268600FF268600FF268600FF268600FF268600FF268600FF +268600FF268600FF268600FF268600FF269228000093290000942A0000942A +0000952B0000972C00009A2D00009D2E0001A02B0006A326000F9F1D001A99 +12002A930808378C00153D8900253A8C00393B8D00523A8D0069388C008135 +8B009F328A00D22E8700FF278700FF278700FF278700FF278700FF278700FF +278700FF278700FF278700FF278700FF278700FF278700FF2793290000942A +0000952B0000952B0000962C0000982D00009B2E00009E2F0001A12D0005A4 +27000FA21F001A9C140028950906378D00133F8900233B8C00373C8D00503B +8D00683A8D007F378B009D348A00CF308700FF298700FF298700FF298700FF +298700FF298700FF298700FF298700FF298700FF298700FF298700FF298700 +FF29942A0000952B0000962C0000962C0000972D0000992F00009C3000009F +300000A32F0005A629000EA42100199F160027970A04388E0011418A00213E +8C00343E8E004D3D8E00663C8D007E398B009B368A00CC328700FF2B8700FF +2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700FF2B8700 +FF2B8700FF2B8700FF2B952B0000962C0000972D0000972D0000982F00009A +3000009D310000A0320000A4310004A82C000DA7230018A21900259A0D0237 +90010E438C001E408D0031408E004A408F00643E8E007C3C8C0099388A00C9 +348800FF2E8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700FF2D8700 +FF2D8700FF2D8700FF2D8700FF2D8700FF2D962C0000972D0000982E000099 +2F00009A3000009C3100009E330000A1340000A5330004A92E000DAA260017 +A61C00239E10003793040D428D001B438D002D428F0047428F0062418F007A +3E8D00963B8B00C4378800FF318700FF2F8700FF2F8700FF2F8700FF2F8700 +FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F8700FF2F982E000099 +2F0000992F00009A3000009B3100009D3300009F340000A2350000A6350003 +AB31000CAD2A0016AA200022A213003497080A418F0017468E002A458F0043 +4590005E44900077418F00933E8B00BF3A8600FD358201FF338001FF347E01 +FF357E01FF357E01FF357E01FF357E01FF357E01FF357E01FF357E01FF357E +01FF35992F00009A3000009B3100009B3200009C3300009D340000A0360000 +A3370000A7380002AC34000AB12E0014AE240020A71700329C0C0840910013 +4A8F00264890003E4890005A47850070497C0087497300A8486D03F3406A05 +FF3D6805FF3E6505FF3F6505FF3F6505FF3F6505FF3F6505FF3F6505FF3F65 +05FF3F6505FF3F6505FF3F9B3100009B3200009C3200009C3300009C340000 +9E360000A0380000A43A0000A93B0002AF380009B4330013B228001EAC1C00 +2FA210053F94000E4E8B00214E7C00315370004757680060595D0079595700 +9F584F01E2524B00FF504900FF514800FF524800FF524800FF524800FF5248 +00FF524800FF524800FF524800FF524800FF529C3200009C3300009D340000 +9D3500009D3600009F380000A13A0000A53C0000AA3E0001B13C0008B73700 +12B72E001DB221002BA714023F810500576B03145D540021614D0034664400 +4E683C00696736008F653100D25F2F00FF5D2D00FF5E2B00FF5E2A00FF5E2A +00FF5E2A00FF5E2A00FF5E2A00FF5E2A00FF5E2A00FF5E2A00FF5E9D340000 +9D3500009E3600009E3600009F380000A03A0000A23C0000A63F0000AC4200 +00B2400007BA3C0010BD34001BAC2C00288C22003A6A1600534C0D08622E01 +0C6F230022741D00367819005477140079731200B66C1100F9691001F8690F +02F8690F02F8690F02F8690F02F8690F02F8690F02F8690F02F8690F02F869 +0F02F8699E3600009E3700009F3800009F380000A03A0000A13C0000A33F00 +00A7420000AC450000B3450005BB41000EA9400019913B0024763000345724 +004B38180061170A00740606127E050B2A7E050E4A7C030E6C75020F9F6E01 +10EA6A0011E96A0012E96A0012E96A0012E96A0012E96A0012E96A0012E96A +0012E96A0012E96A0012E96A9F380000A0390000A03A0000A03B0000A13C00 +00A23F0000A4410000A8450000AD480000AE4A00049E4C000D8F4B00177D46 +0020643E002E4A3400442C27005A0D19006E01191476001D297400224A7200 +236B6B002498640027F3620029F462002AF461002AF461002AF461002AF461 +002AF461002AF461002AF461002AF461002AF461A03B0000A13B0000A13C00 +00A23D0000A23E0000A3410000A5440000A8480000A44D0000955000058A52 +000D7E5300146E53001C5A4F00284246003E253A00530D2E0662002C176A00 +332A6600394C63003C6D5E003E985A003FF6560040F6550041F5550041F555 +0041F5550041F5550041F5550041F5550041F5550041F5550041F555A23D00 +00A23E0000A33E0000A33F0000A4410000A4440000A54700009C4C00008E50 +0001845400057B58000B715D001163600019515E00253B590036204F004906 +40025A0045185D004D2D5A00534F5700576E53005A944F0059FD48005AFD48 +005BFD47005BFD47005BFD47005BFD47005BFD47005BFD47005BFD47005BFD +47005BFD47A43F0000A4400000A5410000A5420000A5440000A5470000974A +0000874D00007D510001765800046F5F00096565000E596A0016496D002033 +6B002E1C63003F075A054E005F195100672F4E006B4E4C00706C4700738E44 +0074F13E0075F73E0075F83D0075F83D0075F83D0075F83D0075F83D0075F8 +3D0075F83D0075F83D0075F83DA5420000A6430000A6440000A7450000A747 +000095490000834A0000784E0000705500016A5D0003646500065B6D000A50 +750011407A001A2C7A00251A7700350573044300791944007F2E400082493D +0087693A008D8C38008CD935008CF134008DF233008DF233008DF233008DF2 +33008DF233008DF233008DF233008DF233008DF233A7460000A8470000A848 +0000A94900009649000082490000754B00006B51000065580000606100015A +6B000352750006487F000B3B8600122A8A001D198C002A058E023900921736 +00962A32009A4730009F662F00A8852F00AFC32C00ADF12900AEF12900AEF1 +2900AEF12900AEF12900AEF12900AEF12900AEF12900AEF12900AEF129AA49 +0000AB4A0000AC4B0000974A000082480000734A0000684E0000615400005B +5C00005665000050710000497D00014289000438950009299C00131BA7001D +0BB1022801BA0F2B00C3252800CA442500CE632401D97C2506E9A12206F4CC +1F06F4CC1E06F4CC1E06F4CC1E06F4CC1E06F4CC1E06F4CC1E06F4CC1E06F4 +CC1E06F4CC1EAE4D0000AF4E0000984D0000824A000073490000674B00005E +51000058580000526100004D6C000047790000418700003C96000036A60000 +2BB500061FCE000F11E8011900F0062200FD242000FF401D00FF5B1B00FF75 +1D02FF8E1D0DFFC0130DFFC0130DFFC1130DFFC1130DFFC1130DFFC1130DFF +C1130DFFC1130DFFC1130DFFC113B25200009A500000824C0000734A000067 +4A00005D4E000056540000505C00004A650000447100003D7E0000378A0000 +319700002BA4000023B8000718D300100AE4011900F70F1D00FF291B00FF45 +1802FF5F1600FF781900FF8C1A09FFD21109FFD31109FFD31109FFD31109FF +D31109FFD31109FFD31109FFD31109FFD31109FFD3119D530000814E000071 +4B0000654900005C4A0000544F00004E560000495E0000426800003B750000 +348000002E8B00002997000024A700021CBC000911D2001105E4051700FD16 +1900FF2F1701FF491401FF611200FF791503FF8F1308FFD60D05FFE30F05FF +E30F05FFE30F05FFE30F05FFE30F05FFE30F05FFE30F05FFE30F05FFE30F81 +4E0000704A0000634900005A490000544A00004D5000004758000041620000 +3A6D0000337800002C820000278C0000229800001DAA000316C0000A0AD400 +1101E5091500FC1D1500FF341200FF4D1000FF630F00FF7A110BFF950808FF +CE0900FFF50E00FFF50E00FFF50E00FFF50E00FFF50E00FFF50E00FFF50E00 +FFF50E00FFF50E6F4A00006249000059490000524900004C4B000046520000 +405B000039650000327000002B7B000026840000218E00001D9C000018AD00 +040FC2000A06D4030F00E70F1101FC230F04FF3B0B00FF500C00FF650B00FF +7B0D08FF930609FFC70500FFFA0A00FFFA0A00FFFA0A00FFFA0A00FFFA0A00 +FFFA0A00FFFA0A00FFFA0A00FFFA0A6049000057490000504900004B4A0000 +464D00003F550000395F0000326A00002B740000257D0000208600001C9100 +00189F000012B000040AC3000A00D1030E00ED150D07FC2A0505FF400500FF +540800FF680800FF7B0903FF93060AFFC00000FFFF0700FFFF0700FFFF0700 +FFFF0700FFFF0700FFFF0700FFFF0700FFFF0700FFFF07564900004F4A0000 +494B0000444C00003F50000038590000316300002B6D000025770000208000 +001B8900001794000013A200000CB2000504C1000A00D70A0A00F11A0907FD +2F0102FF420400FF560400FF6A0400FF7C0503FF920207FFB80000FFF80400 +FFFF0400FFFF0400FFFF0400FFFF0400FFFF0400FFFF0400FFFF0400FFFF04 +4D4A0000474B0000424D00003D4F000038530000315D00002A670000257100 +001F7A00001A820000168C0000129700000DA3000106B2000500C2030800DD +100600F51E0502FC300101FF450000FF590100FF6B0101FF7E0102FF900003 +FFAF0001FFE90100FFF10100FFF10100FFF10100FFF10100FFF10100FFF101 +00FFF10100FFF101454C0000404E00003B51000036530000315700002A6100 +00246A00001F7400001A7C000016850000118E00000D99000007A4000201B2 +010500C90A0400E2150300F8220201FF340000FF4B0000FF5C0000FF6E0101 +FF800001FF8D0001FFA70000FFE10000FFE60000FFE60000FFE60000FFE600 +00FFE60000FFE60000FFE60000FFE600> +<8A2000008B2100008B2100008C2200008C2200008E23000090230000912200 +01921F0007911900108C11001B860501298401102D84001E2B86002C2B8800 +412B8900572988006B278800812689009E238A00CD208500FF1A8300FF1983 +00FF198300FF198300FF198300FF198300FF198300FF198300FF198300FF19 +8300FF198300FF198B2100008B2100008C2200008C2200008D2300008E2300 +009023000092220001931F0007921A00108D12001A8605002A84010F2D8400 +1D2C86002C2C8800402B8900562A88006A288800802789009D248A00CC2085 +00FF1B8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A +8300FF1A8300FF1A8300FF1A8300FF1A8B2100008C2200008C2200008D2300 +008D2300008F240000912400009223000193200006931B000F8E13001A8706 +002A85010E2E84001C2D86002A2C88003E2C8900562B89006A2988007F2789 +009C258A00CA218600FF1C8300FF1B8300FF1B8300FF1B8300FF1B8300FF1B +8300FF1B8300FF1B8300FF1B8300FF1B8300FF1B8300FF1B8C2200008C2200 +008D2300008D2300008E2400008F240000912400009324000194210006941C +000F901400198907002986020D2E85001B2E8600292D88003D2D8A00552C89 +00692A89007E2889009A268A00C8228600FF1D8400FF1B8400FF1B8400FF1B +8400FF1B8400FF1B8400FF1B8400FF1B8400FF1B8400FF1B8400FF1B8400FF +1B8C2200008D2300008D2300008E2400008E24000090250000922500009424 +000195220005951D000E911500188A09002887030C2F85001A308600282E89 +003B2F8A00532E8900672B89007D2A890099278A00C6238700FF1E8400FF1C +8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF +1C8400FF1C8400FF1C8D2300008D2300008E2400008E2400008F2500009025 +0000932600009525000196230005971E000E931700188C0B002789040B2F86 +0018318600273089003A308A00512F8A00662D89007C2B8A0097288A00C425 +8700FF208400FF1D8400FF1E8400FF1E8400FF1E8400FF1E8400FF1E8400FF +1E8400FF1E8400FF1E8400FF1E8400FF1E8D2300008E2400008F2400008F25 +000090250000912600009326000096260001972500049920000D951800178F +0D00258B05092F8700173386002531890038318B004F308A00652E8A007B2C +8A00962A8A00C1268800FF218500FF1F8500FF1F8500FF1F8500FF1F8500FF +1F8500FF1F8500FF1F8500FF1F8500FF1F8500FF1F8500FF1F8E2400008F25 +00008F2500009026000091260000922700009428000097280000992600049A +21000C971A0016910F00248D0707308800153586002332890035338B004D32 +8B0063308A00792E8A00942B8A00BE288800FF238500FF208500FF208500FF +208500FF208500FF208500FF208500FF208500FF208500FF208500FF208500 +FF208F25000090250000902600009127000092270000932800009529000098 +2900009A2800039C23000B991C0016941200238F0805308900123887002135 +890033358B004A348B0062338B0078308A00922D8A00BB2A8900FF258500FF +228500FF228500FF228500FF228500FF228500FF228500FF228500FF228500 +FF228500FF228500FF22902600009126000091270000922800009328000094 +290000962A0000992B00009C2A00039D25000B9C1E001597150021920A0331 +8A01103A88001F378A0030378C0047378C0060358B0076338A0090308A00B8 +2C8900FF278600FF248600FF248600FF248600FF248600FF248600FF248600 +FF248600FF248600FF248600FF248600FF2491270000922800009328000093 +290000942A0000952B0000982C00009A2D00009D2C00029F28000A9F210014 +9B180020950C00328D030E3A8A001D3A8A002D398C0044398D005E388C0074 +358B008D328A00B42E8A00FC2A8600FF268600FF268600FF268600FF268600 +FF268600FF268600FF268600FF268600FF268600FF268600FF269328000093 +290000942A0000952B0000952B0000972D0000992E00009C2F00009F2E0002 +A22B0009A3240012A01B001E990F003091050B3B8B001A3D8A002A3B8D0040 +3C8E005B3B8D0071388C008A358700AD338100EE307C00FF2D7B00FF2E7800 +FF2F7600FF2F7600FF2F7600FF2F7600FF2F7600FF2F7600FF2F7600FF2F76 +00FF2F942A0000952B0000962C0000962C0000972D0000982E00009A300000 +9D310000A1310002A42E0008A7280011A41F001C9E13002D9508083B8D0016 +418B00263E8D003C3F870053417E00684275007E426E0099416700D93E6301 +FF396001FF3A5F01FF3B5D01FF3C5D01FF3C5D01FF3C5D01FF3C5D01FF3C5D +01FF3C5D01FF3C5D01FF3C962C0000972D0000972D0000982E0000992F0000 +9A3000009C3200009F330000A3330001A7320006AA2C0010A823001BA31800 +2A9A0C053B900011458100204774002D4B6900425061005952580072525300 +92524D00C84E4900FF494700FF4A4500FF4B4400FF4B4400FF4B4400FF4B44 +00FF4B4400FF4B4400FF4B4400FF4B4400FF4B982E0000992F0000992F0000 +9A3000009B3100009C3200009D340000A0350000A4370000A8350005AC3000 +0EAD280019A91D00279813023976050151630314574F001E5A4700305F4000 +4861370062603300835F2F00B75A2D00FC562B00FC562900FB572700FB5727 +00FB572700FB572700FB572700FB572700FB572700FB572700FB579A300000 +9B3100009B3200009B3200009C3300009D3400009F360000A1380000A53A00 +00AA390004AF35000DB32E00179D280023821F00346114004C460C075B2A01 +0B682100206C1B00327016004D7012006D6D10009A681100F4621001F3620F +02F2620E02F1620E02F1620E02F1620E02F1620E02F1620E02F1620E02F162 +0E02F1629B3200009C3300009C3300009D3400009D3500009E370000A03900 +00A33B0000A73D0000AC3E0003AB3C000B9C3B0016873400216C29002E5020 +00453316005B1509006D04051176050A2876050D4474020E6470010F8B6900 +0FE1640010E1630011E1630012E2620012E2620012E2620012E2620012E262 +0012E2620012E2620012E2629D3400009D3500009E3600009E3600009E3700 +009F390000A13B0000A43E0000A9410000A24400029445000B86430014743E +001D5C370029452E003D292400540B1700680017146E001C286C0020446A00 +2264660022885E0026EB5C0027EE5B0028EE5A0028ED5A0028ED5A0028ED5A +0028ED5A0028ED5A0028ED5A0028ED5A0028ED5A9E3700009F3700009F3800 +00A0390000A03A0000A13C0000A23E0000A5410000994600008C490003824A +000B764B0012664A001A534600243D4000382235004C0C2B065C002A176300 +312A5F0036465D00396559003C8854003CE250003CF14E003DF14E003EF14D +003EF14D003EF14D003EF14D003EF14D003EF14D003EF14D003EF14DA03900 +00A03A0000A13B0000A13C0000A23C0000A23F0000A3410000924500008648 +00007C4C0004745000096955000F5C5700174C560022365100321D48004405 +3A0254003F185600472B54004D49500052684E005588490054D5430054FC40 +0055FC400055FC3F0055FC3F0055FC3F0055FC3F0055FC3F0055FC3F0055FC +3F0055FC3FA13C0000A23D0000A23E0000A33E0000A33F0000A34200008E44 +000080460000774B00016F510003675700085E5D000D536200144364001D2E +62002A195A003A055306480058194A00602D4600654A45006A6742006D863D +006DC639036FFB350370FB350370FB340370FB340370FB340370FB340370FB +340370FB340370FB340370FB34A33F0000A4400000A5410000A5420000A543 +00008C4300007D440000724800006A4E0000635500025C5C0005556500094A +6C00103A71001828710023166D00320468053E006F1A3D00762D3A007A4737 +007F6434008385320084BB310384FA2C0384FB2B0385FB2B0385FB2B0385FB +2B0385FB2B0385FB2B0385FB2B0385FB2B0385FB2BA6430000A6440000A744 +0000A74500008C4400007B4300006F460000654B00005F510000595A000153 +6200024C6C00054275000B357C0012257F001D157F00290481053400861931 +008B2B2D0090442A00936329009A8029009FAD2805A0FE2205A0FE2205A1FE +2205A1FE2205A1FE2205A1FE2205A1FE2205A1FE2205A1FE2205A1FE22A846 +0000A8480000A94900008B4600007B4400006D450000624800005B4E000055 +560000505E00004A680000437400013B7F00043088000B248F00151696001F +079D052700A3142800AA282400B1412100B4612000BD7A2100CA992200D4E1 +1E00D4E01E00D5E01E00D5E01E00D5E01E00D5E01E00D5E01E00D5E01E00D5 +E01E00D5E01EAB4B0000AC4C00008B490000794600006C4500006147000059 +4C0000535200004D5B000048640000417100003A7D0000338900002C940003 +23A2000A1AB500120CC7001A00D40A1F00E9211C00F53C1A02FE581601FF71 +1900FF891B08FFD81208FFDB1208FFDC1208FFDC1208FFDC1208FFDC1208FF +DC1208FFDC1208FFDC1208FFDC12B04F00008B4C0000784900006A47000060 +470000584A0000515000004B580000456200003E6D00003779000031840000 +2B900000269D000020AF000418C8000C0AD9001402EF0D1800FF221700FF3E +1501FF571100FF701400FF88150AFFCC0B04FFE60F04FFE60F04FFE60F04FF +E60F04FFE60F04FFE60F04FFE60F04FFE60F04FFE60F8C4F0000774B000069 +4900005E49000056490000504C00004A530000445C00003D66000036710000 +2F7C000029860000249100001F9F00011AB3000511CA000C05DB031300EE13 +1400FF281300FF421000FF5A0E00FF720F07FF8E0B0AFFC50600FFF60D00FF +F60D00FFF60D00FFF60D00FFF60D00FFF60D00FFF60D00FFF60D00FFF60D76 +4B0000674900005C490000544900004E4A0000494E0000435600003C5F0000 +356A00002E750000287F0000238800001E9400001AA3000114B600060ACB00 +0D01DA061100F2191004FF2F0A00FF470B00FF5D0A00FF740C05FF8C090BFF +BF0200FFFB0A00FFFC0900FFFC0900FFFC0900FFFC0900FFFC0900FFFC0900 +FFFC0900FFFC09664900005A490000524900004C4A0000474B000042500000 +3C590000356400002D6E000027780000228100001D8B00001997000014A600 +020EB8000704C9000C00DE0D0D03F4200809FF370101FF4A0700FF600700FF +740702FF8C0709FFB90000FFFF0600FFFF0600FFFF0600FFFF0600FFFF0600 +FFFF0600FFFF0600FFFF0600FFFF0659490000514900004B4A0000454C0000 +414E00003B540000345E00002D68000027720000217B00001D840000188E00 +00149A00000FA8000208B9000700C9030A00E4130904F8240405FF390100FF +4D0300FF620300FF760402FF8B0305FFB10001FFEE0300FFFF0300FFFF0300 +FFFF0300FFFF0300FFFF0300FFFF0300FFFF0300FFFF034F490000494B0000 +434D00003E4F00003A510000345800002D620000276B0000217500001C7D00 +0017860000139100000F9C000009A9000302B8010700CF0A0600E7180401F9 +270202FF3C0000FF510100FF640100FF780102FF8B0003FFA90001FFE10100 +FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF01 +474B0000414E00003C50000037530000325500002D5C000027660000216F00 +001C77000017800000128900000E930000099D000104AA010300BC050400D6 +0F0200EE1C0201FE2A0001FF420000FF540000FF670000FF7A0000FF8A0001 +FFA20000FFDB0000FFFE0000FFFE0000FFFE0000FFFE0000FFFE0000FFFE00 +00FFFE0000FFFE003F4E00003A51000034540000305700002B5A0000266000 +00216900001B720000167A0000128200000D8B000009940000039D000200AB +040100C30A0100DB150000F11F0000FF2C0000FF440000FF550000FF660000 +FF790000FF870000FF990000FFC60000FFEF0000FFEF0000FFEF0000FFEF00 +00FFEF0000FFEF0000FFEF0000FFEF00> +<861C0000871D0000871D0000871D0000881E0000881E0000891E00008B1D00 +008B1A00058914000E840C00187E0203247F00122481001F2483002C238500 +3F23860054228500682085007C1E8700951C8800BB1A8700F7168400FF1384 +00FF148400FF148400FF148400FF148400FF148400FF148400FF148400FF14 +8400FF148400FF14861D0000871D0000871D0000871E0000881E0000881F00 +008A1E00008B1D00008B1A00058A15000E850D00187F020224800111248100 +1E2483002B2485003E24860054238500672185007B1F8700941D8800BA1A87 +00F5178400FF148400FF148400FF148400FF148400FF148400FF148400FF14 +8400FF148400FF148400FF148400FF14871D0000871D0000871E0000881E00 +00881F0000891F00008A1F00008C1E00008C1B00048B16000D870E00177F02 +01258001102582001D2583002A2585003D25860053238600662186007A2087 +00931E8800B91B8700F4188400FF158400FF158400FF158400FF158400FF15 +8400FF158400FF158400FF158400FF158400FF158400FF15871D0000871E00 +00881E0000881F0000891F0000891F00008B1F00008C1F00008D1C00048C17 +000D880F00178104012481010F2682001C268300292686003B268700522486 +006522860079218700911F8800B71C8700F2188400FF158400FF158400FF15 +8400FF158400FF158400FF158400FF158400FF158400FF158400FF158400FF +15881E0000881E0000891F0000891F0000892000008A2000008B2000008D1F +00008E1D00048D18000C8A1100168205012382020D2782001A288300282686 +003A27870050268700642486007822870090208900B51D8700F1198300FF16 +8300FF168300FF168300FF168300FF168300FF168300FF168300FF168300FF +168300FF168300FF16881E0000891F0000891F00008A2000008A2000008B21 +00008C2100008E2000008F1E00038F1A000B8B1200158407012283020C2783 +001929830026288600382887004F27870063258700772388008F218900B31E +8800EE1A8300FF178300FF178300FF178300FF178300FF178300FF178300FF +178300FF178300FF178300FF178300FF17891F0000892000008A2000008A20 +00008B2100008B2100008D2100008F210000901F0003901B000A8D14001586 +09002184030A298300172A830025298700362988004C288800612687007524 +88008D228900B1208800EB1C8300FF188300FF188300FF188300FF188300FF +188300FF188300FF188300FF188300FF188300FF188300FF188A2000008A20 +00008B2100008B2100008C2200008C2200008E220000902200009121000292 +1D000A8F160014890B00208503082A8300162C8400232A8700342B88004A2A +880060288800742688008B248900AF218800E81D8300FF198300FF198300FF +198300FF198300FF198300FF198300FF198300FF198300FF198300FF198300 +FF198B2100008B2100008C2200008C2200008D2300008D2300008F23000091 +23000093220002931E0009911700138B0E001F8604052B8400142E8400212C +8700322C8900482B89005E2A8800722888008A268900AD238900E61F8300FF +1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300FF1A8300 +FF1A8300FF1A8300FF1A8B2100008C2200008D2300008D2300008E2400008E +24000090240000922500009424000195200009931A00128E10001E8805032C +8500113085001F2E87002F2E8900452E8A005C2C8900702A890088288A00AA +258900E3218400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400FF1C8400 +FF1C8400FF1C8400FF1C8400FF1C8400FF1C8D2200008D2300008E2400008E +2400008F2500009025000091260000942600009625000197220008961C0011 +9214001C8B07002D88030F3186001D3187002C308A0041308A00592F8A006E +2D8900852A8A00A7278A00E1238400FF1E8400FF1E8400FF1E8400FF1E8300 +FF1F8300FF1F8300FF1F8300FF1F8300FF1F8300FF1F8300FF1F8E2400008E +2400008F250000902500009026000091270000932700009528000097280001 +992500069A1F00109617001A8F0B002A8B050C3288001A35870029338A003E +338B0057328B006C308700822E80009E2D7B00CF2B7600FF277400FF287100 +FF297000FF296F00FF2A6F00FF2A6F00FF2A6F00FF2A6F00FF2A6F00FF2A6F +00FF2A8F250000902600009126000091270000922800009228000094290000 +972A0000992A00019C2800059D23000E9A1B0019940F00288F0709328A0016 +38880025358900393780004E3A7700623B6F00763B68008D3B6300B9395D00 +FF345B00FF355900FF365800FF365700FF375700FF375700FF375700FF3757 +00FF375700FF375700FF379126000092270000922800009329000094290000 +942A0000962B0000982C00009B2D00009E2B0004A126000D9E1E0017991400 +25940A06338A00123D78001E406C002C4462003E495B00534B53006A4A5000 +864C4A00B0484600FE424400FE434200FE434100FD444000FD444000FD4440 +00FD444000FD444000FD444000FD444000FD449328000093290000942A0000 +952B0000962C0000962C0000982E00009A2F00009E300000A12F0003A42A00 +0CA42200169F1900228C1101346C04014B5B02135149001E5342002E573B00 +435A34005B5A310076592C00A1552A00EF4F2800F84F2600F8502500F75024 +00F7502400F7502400F7502400F7502400F7502400F7502400F750952B0000 +962B0000962C0000972D0000982E0000992F00009A3000009D320000A03300 +00A4320003A72F000AA32900148E24001F771C002F59130045400B07542600 +0B611F001F6518002E6815004569110064680E0088630F00D85C0F02ED5B0E +02EC5B0D03EB5B0D03EA5B0D03EA5B0D03EA5B0D03EA5B0D03EA5B0D03EA5B +0D03EA5B972D0000982E0000992F00009A3000009A3100009B3100009C3300 +009E340000A1360000A53600029D3600098E3400137C2E001D6426002A4A1E +003D2E150054120800660405116E020A256E030D3D6C020E5B6A010E7D6400 +0EBF5E0010DC5C0011DD5B0011DD5B0012DD5B0012DD5B0012DD5B0012DD5B +0012DD5B0012DD5B0012DD5B9A3000009B3100009B3200009C3200009C3300 +009C3400009D350000A0370000A3390000963D0001893D00097C3B00126B37 +001A553200243F2A00372521004D0915006200161467001B2765001E3E6300 +215C6100217C580023BC550025E8540026E8530026E8530027E8520027E852 +0027E8520027E8520027E8520027E8520027E8529C3300009C3300009D3400 +009D3500009D3600009E3600009F3800009F3B00008F3E0000844100027A43 +00096E4300105E4200174D3F0021383900321F300046092606570027175B00 +2D28580032405600365E5200397D4E003AB84A0039ED47003AED46003BEE46 +003BEE45003BEE45003BEE45003BEE45003BEE45003BEE45003BEE459D3500 +009E3600009E3700009F3800009F390000A03900009B3C00008A3E00007E41 +0000754500036C480008614C000E544D0015454D001E3149002D1A41003E03 +35034E003C194E0042294C00494349004D624700527E430051AE3E0150F33A +0151F3390151F3390152F3380152F3380152F3380152F3380152F3380152F3 +380152F3389F380000A0390000A03A0000A13B0000A13C0000993C0000863D +0000794000006F44000068490003604E00065754000B4C5900123E5C001B2A +59002716510035034A06420051184200592B40005F463F0065623B00677E37 +0067A934056AFC2E056AFC2D056BFC2D046BFB2D046BFB2D046BFB2D046BFB +2D046BFB2D046BFB2D046BFB2DA13C0000A23D0000A23D0000A33E0000983F +0000843D0000763F00006B420000634700005C4E0002565500044E5C000844 +63000E35670017246700211363002E025F063800671937006F2C3500744432 +0079602E007C7E2C007DA72B047EF725047EF725057FF824057FF824057FF8 +24057FF824057FF824057FF824057FF824057FF824A33F0000A4400000A541 +000098410000833F0000743E0000684100005F450000594B0000535300004D +5B0002466300053C6C000A2F7300122076001C1175002701750630007D1A2C +00822B2900874125008B5F24008F7B240092A0231298FF151298FF141399FF +141399FF141399FF141399FF141399FF141399FF141399FF141399FF14A643 +0000A6440000984400008142000072400000674000005D4400005649000050 +5000004B580000456100003D6C000134760005297D000D1E84001611890020 +038E072500941723009B282000A13F1D00A55C1C00AA761C00B1941D00B5E2 +1A00B6F61900B7F61A00B7F61900B7F61900B7F61900B7F61900B7F61900B7 +F61900B7F619A9480000994800008045000070430000644200005C42000054 +4700004E4E000048560000435F00003C6A0000347500002D7F000226890006 +1D94000D13A1001608AD041B00B80F1C00C5221900D13A1700DA561500E06F +1500E5881702F1BE1502EAE81202EAE91202EAE91202EAE91202EAE91202EA +E91202EAE91202EAE91202EAE9129B4B0000804800006F4500006245000059 +450000534600004C4C000047540000415D00003A690000327500002C7F0000 +268A0000229600001DA7000216BD00080AD2001001E2081400FA1E1300FF35 +1100FF500E00FF680E02FF850E0DFFB90400FFF70D00FFF70D00FFF70D00FF +F70D00FFF70D00FFF70D00FFF70D00FFF70D00FFF70D804B00006D48000060 +48000057480000514900004C4A0000465100003F5A000039640000316F0000 +2A79000025820000208D00001C9A000017AB00030FBF000905D1020E00E70E +1003FB240C04FF3D0800FF530A00FF6B0A00FF840C0DFFB60000FFFC0900FF +FD0900FFFD0900FFFD0900FFFD0900FFFD0900FFFD0900FFFD0900FFFD096C +4A00005F490000554900004F4A0000494B0000454C00003E540000385E0000 +306800002A730000247C00001F8500001B900000179D000011AD000409C000 +0900CF030D00ED150B08FB2C0204FF410400FF560600FF6D0600FF840709FF +B00000FFFC0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500 +FFFF0500FFFF055D490000544900004D4A0000474B0000424D00003E4F0000 +3758000030620000296C0000247600001E7F00001A8800001593000011A000 +000BAF000403BE010900D60A0800F01A0704FC2E0101FF430200FF590300FF +6E0302FF850205FFAA0002FFE80200FFFF0200FFFF0200FFFF0200FFFF0200 +FFFF0200FFFF0200FFFF0200FFFF02524900004B4A0000454C0000404E0000 +3B50000036530000305C000029660000237000001E79000019810000158B00 +00109500000BA1000105AF010500C1050600DC110400F41F0301FE310001FF +480000FF5C0100FF710102FF860002FFA20001FFDE0000FFFF0100FFFF0100 +FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF01494B0000434D0000 +3D4F000038520000335500002F57000029600000236A00001E730000197B00 +00148400000F8D00000B97000005A2000200B0020400C80A0200E2160200F8 +220100FF360000FF4D0000FF5F0000FF730000FF850000FF9C0000FFD70000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +414E00003B50000036540000315600002C590000285C0000236400001D6D00 +0018750000137D00000F8600000A8E00000597000101A3020100B5080000CD +0F0000E6190000F9240000FF370000FF4D0000FF5D0000FF710000FF820000 +FF930000FFBF0000FFF40000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF0039510000335500002E580000295B0000265D0000235F00 +001D67000018700000137700000E7F000009870000068E00000297000200A2 +030100B4070000CC0E0000E5180000F8230000FF350000FF4B0000FF5C0000 +FF6E0000FF800000FF8E0000FFAD0000FFE50000FFFB0000FFFB0000FFFB00 +00FFFB0000FFFB0000FFFB0000FFFB00> +<83180000841800008419000084190000841A0000851A0000851A0000851800 +00851500038210000B7F0902147900061D7B00141D7E00201D81002C1D8200 +3E1C8200511B820064198200761884008C168600AB148600DE118400FF0E84 +00FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E +8400FF0E8400FF0E841800008419000084190000841A0000851A0000851A00 +00861A000086190000851600038311000B800A02147900041E7B00131E7E00 +1F1D81002C1E82003D1D8300511C8300631A8300761884008B168600AB1487 +00DE128400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E +8400FF0E8400FF0E8400FF0E8400FF0E8419000084190000841A0000851A00 +00851A0000851B0000861B000086190000861700038412000B810B01147900 +031F7B00121E7E001E1E81002A1E82003C1E8300501D8300631B8300751984 +008B178600AA158700DD128400FF0F8400FF0F8400FF0F8400FF0F8400FF0F +8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F84190000851A00 +00851A0000851B0000851B0000861B0000861B0000871A0000871800038513 +000A820C01137A01021F7B00101F7E001D1F8100291F83003B1F83004F1E83 +00621C8300741A85008A188700A9168700DC138400FF108400FF108400FF10 +8400FF108400FF108400FF108400FF108400FF108400FF108400FF108400FF +10851A0000851A0000851B0000851B0000861C0000861C0000871C0000871B +0000881800028614000A830D00137B02011F7C000F207E001C208100282083 +00392084004D1F8400611D8400731B850088198700A8178700DB148400FF10 +8400FF108400FF108400FF118400FF118400FF118400FF118400FF118400FF +118400FF118400FF11851A0000851B0000861B0000861C0000861C0000861C +0000871C0000881B00008919000288150009840E00137D04011E7D010D217F +001A21810027218300372184004C2084005F1E8400721C8500871B8700A618 +8700D9168400FF118400FF118400FF118400FF118400FF118400FF118400FF +118400FF118400FF118400FF118400FF11851B0000861C0000861C0000861C +0000871D0000871D0000881D0000891C00008A1B000289170008861000127F +06011D7E010B227F001822810025228400352285004A2185005E1F8500701E +8500861C8700A41A8800D7178400FF128400FF128400FF128400FF128400FF +128400FF128400FF128400FF128400FF128400FF128400FF12861C0000861C +0000871D0000871D0000871E0000881E0000881E00008A1D00008B1C00018B +180008881200118108011C7F02092380001724810023238400332385004723 +86005C2185006F1F8600841E8700A21B8800D4188400FF138400FF138400FF +148400FF148400FF148400FF148400FF148400FF148400FF148400FF148400 +FF14871D0000871D0000871E0000881E0000881E0000891F0000891F00008B +1F00008C1E00018C1A00078A140010840B011B800206248000152682002125 +840030258600452486005A2386006D218600831F8800A01D8800D21A8400FF +158400FF158400FF158400FF158400FF158400FF158400FF158400FF158400 +FF158400FF158400FF15871E0000881E0000881E0000891F0000891F00008A +2000008B2000008C2000008E1F00018E1C00068C16000F870D001A82030426 +8100122882001F2784002E27860042268700582586006B238600812188009E +1F8900CE1C8400FF168300FF168300FF168300FF168300FF168300FF168300 +FF168300FF168300FF168300FF168300FF16881E0000891F0000891F00008A +2000008A2000008B2100008C2100008D2100008F200001901E00058F18000E +8A1000198304002882010F2983001D2985002B2887003F288800552787006A +2587007F2388009C218900CB1E8500FF188000FF187E00FF197D00FF1A7C00 +FF1B7B00FF1B7B00FF1B7B00FF1B7B00FF1B7B00FF1B7B00FF1B892000008A +2000008B2100008B2100008C2200008C2200008D2200008F22000091220000 +92200004921B000D8E1300178707002684020C2B84001A2C8500282B87003B +2B8900532A8700672880007A287A0092277500B7267200F8236D00FF236B00 +FF236A00FF246800FF246800FF246800FF246800FF246800FF246800FF2468 +00FF248B2100008B2100008C2200008D2200008D2300008E2300008F240000 +902400009224000094220003951E000C911600168B0B00248703092D850017 +2F8500252D81003530780048336F005C3368007034630085345E00A6335A00 +E72F5700FF2E5600FF2F5400FF305300FF305300FF315300FF315300FF3153 +00FF315300FF315300FF318C2200008D2300008E2300008E2400008F240000 +8F250000902500009226000095260000972500029721000A951A0014901000 +218B06052E7F00113770001D3A65002A3D5B00394054004D424D0064434B00 +7C4447009D414300DB3D4100FB3C3F00FA3D3D00FA3D3C00F93D3C00F93E3C +00F93E3C00F93E3C00F93E3C00F93E3C00F93E8E2400008F2400008F250000 +902600009126000091270000922800009428000097290000992800029A2400 +099A1E00139316001E7F0F012E630403435502134944001D4B3D002A4E3700 +3E51300054522C006C512A00904F2800CB492600F1472400F0482300EF4822 +00EF492100EF492100EF492100EF492100EF492100EF492100EF4990260000 +9126000091270000922800009328000093290000942A0000962B0000992C00 +009C2C00019E290007942500118320001C6D19002A5211003E3A0A064C2300 +0A5A1D001E5E16002C6112003F620F005B620D007C5F0D01B0570E02E5540D +02E4540C03E3540C03E2540C03E2540C03E2540C03E2540C03E2540C03E254 +0C03E2549228000093290000942A0000952A0000952B0000962C0000972D00 +00992E00009B2F00009E30000190300006832D00117127001A5B210026441B +00382A12004C1007005F0304116702092467030C3965020D5563000E735F00 +0E9F59000FD8540010D8540011D9530011D9530012D9530012D9530012D953 +0012D9530012D9530012D953952B0000962C0000972C0000972D0000982E00 +00992F00009A3000009C320000993300008B35000080360007723300106230 +00184F2C00213A260032221E00450914015B00161460001A265D001D3B5B00 +1F5659002073520021A04E0023E34B0024E34A0024E34A0025E3490025E349 +0025E3490025E3490025E3490025E3490025E349982E0000992F00009A3000 +009B3100009B3100009B3200009C33000094350000863700007B390001713B +0008643B000E563B00154638001E3234002D1D2B0040082406500025185400 +2B285000303D4E0033584B0036754600389F430036E7400037E73F0037E73F +0038E73E0038E73E0038E73E0038E73E0038E73E0038E73E0038E73E9B3100 +009B3200009C3300009C3400009D3400009D3500009035000081370000763A +00006D3D0002644100075943000C4D4500133F45001C2C420028183A003902 +31044700371947003E284400443F4100485B3F004D763D004E9A39004BE934 +004CE933014DE933014DE933014DE932014DE932014DE932014DE932014DE9 +32014DE9329D3400009D3500009E3600009E3700009F3800008E3700007E37 +0000723A0000683E000060420002584600054F4B000A455000103854001826 +510023134900300244063C004B183B00542A39005A4338005F5D3500637731 +0062992E0163EF2A0164EF290164EF290164EE290164EE290164EE290164EE +290164EE290164EE290164EE299F3800009F390000A03A0000A03B00008D3A +00007C3900006F390000653D00005C410000564600014F4D0003485400073E +5B000D305F0015205D001E105900290157063100601A3000682C2F006E422C +00725B2900767726007699260076E3230077F4220077F4220078F4220078F4 +220078F4220078F4220078F4220078F4220078F422A13C0000A23D0000A23D +00008C3D00007A3B00006D3B0000623C000059400000534500004D4C000047 +540001405C0004366400092A6A00111C6C001B0D6A0024016D082A00751B27 +007B2B250080402100845A1F0087751F0089951F0E8CD913128EFB0F128EFC +0F128EFC0E128EFC0E128EFC0E128EFC0E128EFC0E128EFC0E128EFC0EA440 +0000A44100008B400000783E00006A3D0000603D0000573F0000514400004B +4A0000455200003F5B0000386500012E6E00062475000E197A00160C7D001F +0182092200881A1F008F291C00953E1A00995918009C711800A08C1900A3C3 +1701A6FB1601A7FB1601A7FB1601A7FB1601A7FB1601A7FB1601A7FB1601A7 +FB1601A7FB16A74400008B43000076400000684000005D400000554100004F +43000049490000445100003E5A0000376400002F6E00002878000320800009 +178800100C9000180399061B00A2141800AC241500B6391300BD531100C26B +1100C6851300CEAB1300CCEF1000CCEF0F00CDEF0F00CDEF0F00CDEF0F00CD +EF0F00CDEF0F00CDEF0F00CDEF0F8B47000075430000664200005B43000053 +4300004D45000048480000424F00003C590000356300002E6E000028780000 +228200001D8D0002179A000610AA000B06BB001100CD0A1100E61C0F00F92F +0D00FF4A0B00FF630A00FF7C0B0AFFA90300FEFD0900FEFD0900FFFD0800FF +FE0800FFFE0800FFFE0800FFFE0800FFFE0800FFFE08744600006445000059 +460000514700004B480000464A0000414F00003B580000346200002D6D0000 +27770000218000001D8900001895000014A400010DB5000604C6000B00DC0D +0C03F4200707FF380100FF4D0600FF640600FF7C0707FFA40100FFFA0500FF +FF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0500FFFF0563 +4900005849000050490000494B0000444C00003F4E00003A530000335C0000 +2C66000026700000217A00001C830000178D0000139800000EA5000207B600 +0600C7040900E3130703F8250303FF390100FF500200FF660201FF7E0204FF +A00002FFE60100FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200 +FFFF0200FFFF02564900004E4A0000474B0000424D00003D50000038520000 +335700002C610000266A0000207400001B7C000016850000128F00000E9A00 +0008A6000301B5010600CE0B0400E7180301FB270201FF3E0000FF540100FF +690101FF800002FF990001FFDE0000FFFF0100FFFF0100FFFF0100FFFF0100 +FFFF0100FFFF0100FFFF0100FFFF014C4A0000454C00003F4E00003A510000 +35540000305700002C5B000025650000206E00001B760000167F0000118800 +000D910000079B000103A7020200BA060300D4110100ED1D0100FF2A0000FF +440000FF570000FF6B0000FF800000FF930000FFD30000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00444C00003D4F0000 +37530000325600002D580000295B0000255F0000206800001A710000157900 +00108100000C89000007920000029B010200A8040000BF0A0000D7130000EE +1E0000FF2A0000FF430000FF550000FF680000FF7D0000FF8E0000FFBB0000 +FFF30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +3B500000355400002F5700002A5A0000265D0000235F0000206300001A6B00 +0015730000107B00000B820000088A000004920001019B010200A8040000BE +0A0000D5130000ED1D0000FF290000FF410000FF540000FF660000FF7B0000 +FF8A0000FFAB0000FFE40000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF00335500002D590000285C0000245F0000206100001D6200 +001A650000156D0000117400000E7B00000B8200000889000005910001019A +010200A7040000BD090000D4120000EC1C0000FF270000FF3F0000FF520000 +FF630000FF770000FF870000FF9E0000FFD50000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<7F140000801400008014000081150000811500008116000082160000811400 +00801100027C0C00097805021175000917780015177B0020177E002C177F00 +3D167F004F157F006013800071118000840F82009C0D8300C40B8400FD0884 +00FF088400FF088400FF088400FF088400FF088400FF088400FF088400FF08 +8400FF088400FF088014000080140000811500008115000082160000821600 +008217000082150000801200027D0D00087906021175000818780014177B00 +1F177E002B187F003C177F004E1680006014800071128100841082009C0E83 +00C30C8400FC098400FF098400FF098400FF098400FF098400FF098400FF09 +8400FF098400FF098400FF098400FF09801500008115000081160000821600 +0082160000821700008317000082150000811300027E0E00087A0701117600 +0618780013187B001E187E002A1880003A1880004D1780005F158000701381 +00831182009C0F8400C30D8500FC0A8400FF098400FF098400FF098400FF0A +8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A81150000811600 +0082160000821700008217000083170000831800008316000082140001800F +00077C08011176000519780012197B001D197E0029198000391980004C1880 +005E1681006F148100821283009B108400C20E8500FB0B8400FF0A8400FF0A +8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF +0A821600008216000082170000831700008317000083180000831800008317 +000083150001811000077D090010770104197800101A7B001C1A7F00281A80 +00371A81004A1981005D1781006E158200811383009A118400C10F8500FC0C +8400FF0B8400FF0B8400FF0B8400FF0B8400FF0B8400FF0B8400FF0B8400FF +0B8400FF0B8400FF0B82170000821700008317000083180000831800008418 +0000841900008418000084160001821200067E0B00107903041979000E1B7C +001B1B7F00261B8100361B8100491A81005C1882006D168200801584009913 +8500C0108500FD0D8400FF0C8400FF0C8400FF0C8400FF0C8400FF0C8400FF +0C8400FF0C8400FF0C8400FF0C8400FF0C8317000083180000831800008418 +00008419000084190000841A0000851900008517000184130006800C000F7B +04031879000C1C7C00191C7F00251C8100341C8200471B82005A1982006C18 +83007F16840098148500BF128600FD0E8400FF0D8400FF0D8400FF0D8400FF +0D8400FF0D8400FF0D8400FF0D8400FF0D8400FF0D8400FF0D831800008418 +00008419000084190000841A0000851A0000851A0000851A00008618000085 +140005820E000F7C0602187A000A1E7C00171D7F00231D8200321D8200451C +8200581B83006A1983007E17850097158600BE138600FE108400FF0E8400FF +0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400FF0E8400 +FF0E8419000084190000841A0000851A0000851B0000851B0000861B000086 +1B000087190000861600058410000E7E0801187A00071F7C00151F7F00221E +8200301F8300431E8300561C8300691B84007D19850095178700BC158600FE +118400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400FF0F8400 +FF0F8400FF0F8400FF0F841A0000851A0000851B0000851B0000861B000086 +1C0000861C0000871C0000881B0000881700058612000D810901177B000421 +7D0013207F001F2082002D20830040208400541E8400671D84007B1B860094 +198700BA168700F9138400FF118400FF118400FF118400FF118400FF118400 +FF118400FF118400FF118400FF118400FF11851B0000861B0000861C000086 +1C0000861C0000871D0000871D0000881D0000891C0000891900048814000C +840D00167C0101227E01102280001D2282002A2284003D2285005220850065 +1F8500791D8600911B8600B7198100F2167B00FF157900FF167800FF177600 +FF177500FF177500FF177500FF177500FF177500FF177500FF17861C000086 +1C0000871D0000871D0000871E0000881E0000881E0000891E00008B1E0000 +8B1B00038B17000B871000148005012180020D2381001A2582002724850039 +2486004F238000612279007322740088226F00A5206C00DC1F6800FF1F6600 +FF1F6400FF206300FF206200FF216200FF216200FF216200FF216200FF2162 +00FF21871D0000871E0000881E0000881E0000891F0000891F00008A200000 +8B2000008C1F00008E1E00028E1A00098A1300138409011F82030A25820017 +27820025267A00322A7100432D6800562D6200692D5D007D2D5900982C5600 +C92A5400FD295200FC2A5100FB2A5000FA2B4F00FA2B4F00FA2B4F00FA2B4F +00FA2B4F00FA2B4F00FA2B881E0000891F0000891F00008A2000008A200000 +8B2100008B2100008D2100008E21000090200001901C00088E160012880D00 +1D840406287500103068001D335F002936550037394E00493A49005D3B4500 +713B43008E3B4000BD373E00F5353B00F4363A00F3363800F3363700F23737 +00F2373700F2373700F2373700F2373700F2378A2000008A2000008B210000 +8B2100008C2200008D2200008D2300008F2300009023000092230001931F00 +07921A00108613001B740D01295B03033C4E01134240001D43380028453200 +3A482C004D4B2900634B270081482500AD432300E93F2200E8402000E7401F +00E6411E00E5411E00E5411E00E5411E00E5411E00E5411E00E5418C220000 +8C2200008D2300008D2300008E2400008F2400008F25000091250000932600 +0095250001962300058820000F781C0019631600254A0F0037340806442000 +0B521B001D571300295A1000395C0D00525C0B00715A0B0197520D02DB4C0B +03D94C0B03D84C0A04D84C0A04D74C0A04D74C0A04D74C0A04D74C0A04D74C +0A04D74C8E2300008E2400008F250000902500009026000091270000912700 +00932800009529000091290000862A00057927000E68230017541E00223E19 +0032261100440E0600580205106001092260010C355E010D4E5C000E6A5900 +0F8D52000FD14C0010D24C0011D24B0011D24B0012D34A0012D34A0012D34A +0012D34A0012D34A0012D34A90260000912600009227000092280000932900 +0094290000942A0000962B00008D2D0000822F0000772F0006692D000E5A2B +00164827001E3422002C1F1B003F071201540015145900192556001B375300 +1D5051001F6B4C00208D460021DE430022DE420022DE420023DE410023DE41 +0023DE410023DE410023DE410023DE410023DE419329000094290000952A00 +00952B0000962C0000972D0000982E00008A2E00007D310000733300016834 +00065C34000D4F3400133F32001C2D2E00281927003A0621064A0023184C00 +282748002C39460030524300346D3F00368E3D0034D7390034E2380035E137 +0035E1370036E1370036E1370036E1370036E1370036E1370036E137962C00 +00972D0000982E0000992F00009A3000009B310000862F0000793100006F34 +0000653700015C3A0005513C000B463E0011393E0019283C00241535003301 +2D04410034183F003A273D00403B3A0044553800496F36004B8D330048CC2E +0048E22D0049E22D004AE22D004AE22C004AE22C004AE22C004AE22C004AE2 +2C004AE22C9A3000009B3100009B3200009C3300009B330000843200007632 +00006B35000062380000593C000151400004494400083F49000E334C001523 +4900201041002C003E063700451733004E2933005540310059572F005D702B +005D8D28005CBE26005EE525005EE525005FE525005FE524005FE524005FE5 +24005FE524005FE524005FE5249C3400009D3500009D3500009A3600008235 +000073350000683500005F380000563C0000504100014A460002424D000538 +53000B2B5700131D54001C0C5000260050072C0059182900632B2A00683F27 +006C56240070702200708D21006FBD200071EB1E0071EB1E0072EB1E0072EB +1E0072EB1E0072EB1E0072EB1E0072EB1E0072EB1E9F3800009F3900009A3A +00008138000071370000653800005C390000543B00004E4000004846000042 +4D00003A550003315D000825620010186200190A60002100630925006D1B22 +00742B2100793D1E007D551C00806F1A00818B1A0082B91A0384F9170384F9 +170384F9170384F9170384F9170384F9170384F9170384F9170384F917A13C +00009B3D0000803B00006F3A0000633B0000593B0000523C00004C3F000046 +450000404D00003A550000335E000129660006206C000E157000160872001D +00780B1E00801B1B00862919008B3C16008F551400926C14009485140096AD +14019AFA13019AF913019AF913019AF913019AF913019AF913019AF913019A +F913019AF9139D4100007F3E00006D3D0000603D0000573E00004F3F00004A +400000454400003F4C000039550000325F00002B680000237000041B77000A +127E001107840018018C0A1800951715009C241200A4380F00A9500E00AE67 +0D00B17F0E00B2A00D00B6EE0C00B6EE0C00B6EE0C00B6EE0C00B6EE0C00B6 +EE0C00B6EE0C00B6EE0C00B6EE0C7F4100006B4000005E400000544100004D +42000048430000434500003E4B000038540000315F00002A69000024720000 +1E7B000118840005118E00090898001001A3041200B3100D00C51E0B00D330 +0900DC490700E3600700E8780702EF990600E8EC0600E7FE0600E7FE0600E7 +FE0600E7FE0600E7FE0600E7FE0600E7FE0600E7FE066A4300005C43000053 +4400004C45000046480000414A00003C4D000037540000305F000029690000 +237300001E7D00001987000015910000109E00000AAC000402BC010800D50A +0700EF1B0603FC2E0101FF450100FF5D0200FF750103FF940002FFDF0100FF +FF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF0200FFFF025B +460000514800004A4A0000444C00003F4F00003A510000355400002F5B0000 +28650000236E00001D78000018800000148900000F9400000A9F000104AC01 +0400BF060500DB110300F41F0301FF320000FF4B0000FF600100FF780101FF +8F0001FFD80000FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100FFFF0100 +FFFF0100FFFF0150490000484B0000424D00003C5000003753000032560000 +2D580000285F0000226900001D720000187A0000138300000E8C00000A9500 +00049F000200AD030200C70B0100E2160100F8230000FF370000FF4F0000FF +620000FF790000FF8C0000FFC70000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF00464C0000404E00003951000034550000 +2F5800002A5A0000275D0000226300001C6C000017740000127C00000E8400 +00098C00000395000101A0020100B1070000C90D0000E2170000F7220000FF +350000FF4D0000FF5F0000FF760000FF890000FFB30000FFF60000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF003E4F000037530000 +315600002C590000275C0000245F0000216100001C660000176E0000127600 +000D7E00000A850000078D00000395000101A0020100B0060000C80D0000E1 +170000F6220000FF330000FF4B0000FF5D0000FF730000FF860000FFA40000 +FFE60000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +355400002E580000295B0000255E0000216000001E6200001B640000176900 +0013700000107700000D7E00000A850000078C000003950001019F020100AF +060000C70C0000DF160000F4210000FF320000FF4A0000FF5B0000FF6F0000 +FF830000FF990000FFD80000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF002C590000275D0000226000001E6200001B640000186500 +00176500001669000013700000107700000D7D00000A850000078C00000394 +0001019F020100AE060000C60C0000DE160000F3200000FF300000FF480000 +FF590000FF6C0000FF800000FF900000FFBC0000FFF20000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<7B0F00007B0F00007C1000007C1000007D1000007D1100007D1100007D1100 +007B0E0000770900067404040D72000B1174001611770021117B002C117C00 +3B107C004C0F7D005C0D7D006C0B7D007D097D0090077F00AE068300EA0583 +00FF048300FF048300FF048300FF048300FF048300FF048300FF048300FF04 +8300FF048300FF047B0F00007C1000007C1000007D1100007D1100007D1100 +007E1200007E1100007C0F0000780A00067505030D72000A12740016127700 +20127B002B127C003A117C004B107D005B0E7D006C0C7D007C0A7E0090087F +00AD068300E9058300FF048300FF048300FF048300FF048300FF048300FF04 +8300FF048300FF048300FF048300FF047C1000007C1000007D1100007D1100 +007E1200007E1200007E1200007E1200007C0F0000790B00057605020D7200 +09137400141277001F127B002A137D0039127D004A107D005B0F7E006B0D7D +007C0B7E0090098000AD078300E7068300FF048300FF048300FF048300FF04 +8300FF048300FF048300FF048300FF048300FF048300FF047D1000007D1100 +007D1100007E1200007E1200007F1300007F1300007F1300007D1000007A0C +00057606020D730007137500131378001E137B0029137D0038137D0049117D +005A107E006A0E7E007C0C7F008F0A8000AC088400E5068400FF058400FF05 +8400FF058400FF058400FF058400FF058400FF058400FF058400FF058400FF +057D1100007E1200007E1200007F1300007F1300007F130000801400008014 +00007E1100007B0D00047706010D730106147500121478001D147B0028147E +0036147E0048137E0059117F006A0F7F007B0D7F008F0B8100AC098400E407 +8400FF058400FF058400FF058400FF058400FF058400FF058400FF058400FF +058400FF058400FF057E1200007E1200007F1300007F130000801400008014 +000080150000801400007F1200007D0E00037907000D750105147500101578 +001C157C0027157E0035157E0046147E0058127F0068107F007A0E80008E0C +8100AB0A8400E2088400FF068400FF068400FF078400FF078400FF078400FF +078400FF078400FF078400FF078400FF077F1300007F130000801400008014 +000080150000811500008115000081150000801300007E1000037A09000C76 +03041476000E1679001A167C0025167F0033167F0045157F00561480006712 +8000791080008D0E8200AA0C8400E0098400FF088400FF088400FF088400FF +088400FF088400FF088400FF088400FF088400FF088400FF08801400008014 +00008115000081150000811600008216000082160000821600008214000080 +1100037C0B000C7804041376000C18790018177C0023187F0031187F004317 +80005415800066138000771281008C0F8300AA0D8400DE0B8400FF098400FF +098400FF098400FF098400FF098400FF098400FF098400FF098400FF098400 +FF098115000081150000811600008216000082170000821700008317000083 +17000082150000811200027E0D000B7A06031377000919790016197C002219 +7F002F198000401880005217810064158100761382008B118300A90F8500DD +0D8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400FF0A8400 +FF0A8400FF0A8400FF0A821600008216000082170000831700008318000083 +18000083180000841800008317000083140002800F000A7C0802137700061B +7900141A7C001F1A80002C1B81003D1A81005019810063178100751582008A +138400A8118500DC0E8400FF0C8400FF0C8400FF0C8400FF0C8400FF0C8400 +FF0C8400FF0C8400FF0C8400FF0C8400FF0C82170000831700008318000083 +180000841900008419000084190000851A0000851800008416000182110009 +7F0A01127800031D7A00111C7D001D1C80002A1C81003A1C82004E1B820061 +1982007317820088167E00A4157B00D2137600FF127400FF127200FF137100 +FF137000FF146F00FF146F00FF146F00FF146F00FF146F00FF148318000084 +1900008419000084190000851A0000851A0000851B0000851B0000861A0000 +8618000185130008820C00127B03021C7B000E1E7D001B1E8000271E820037 +1E81004A1E79005C1D72006C1E6D007F1D6900981B6600C01B6300FE1B6100 +FE1C5F00FE1C5E00FE1D5D00FD1D5D00FD1D5D00FD1D5D00FD1D5D00FD1D5D +00FD1D84190000851A0000851A0000851B0000851B0000861C0000861C0000 +861C0000871B0000881A000087160007840F00117E05011C7B000A217E0018 +207A00232273002F2569003F27620051265C0063285800762754008C265200 +B2255000F6244F00F4244D00F3254C00F3254B00F2264B00F2264B00F2264B +00F2264B00F2264B00F226851B0000861B0000861C0000861C0000861D0000 +871D0000871D0000871E0000891D00008A1C00008A1800068812000F820A01 +1A7A0205236C00102A61001C2D590027304F00343049004432440057344000 +6B353E0083343C00A7313A00EC2E3700EB2F3600EA2F3400EA303300E93033 +00E9303300E9303300E9303300E9303300E930861C0000871D0000871D0000 +871E0000881E0000881E0000891F0000891F00008B1F00008C1E00008D1B00 +058B16000D7C1100186A0B0025540404334901113A3B001B3C3300263D2E00 +35402800474225005C442300764222009A3E2100DC391F00E0391E00DF3A1D +00DE3A1C00DD3B1B00DD3B1B00DD3B1B00DD3B1B00DD3B1B00DD3B871E0000 +881E0000891F0000891F00008A2000008A2000008B2100008B2100008D2100 +008E2100008B1F00047E1D000D6F1900165B140022430D00313007063D1E00 +0B4A19001C4F120027530D0035550B004C56090067540A01884C0B02C4450A +03D1440A03D0440904CF440904CE440804CE440804CE440804CE440804CE44 +0804CE44892000008A2000008B2100008B2100008C2200008C2200008D2300 +008D2300008F230000872400007C2400047022000D601F00154E1B001F3816 +002C230F003E0C0500510204105901092158010C3257010D4954000E635100 +0F814C000FB445000FCB430010CB430011CC420011CC420011CC420011CC42 +0011CC420011CC420011CC428C2200008C2200008D2300008E2300008E2400 +008F2500008F2500009026000084270000792900006E2900056127000D5326 +00144223001C2F1F00281D1900380712024D001414520018244F001A354A00 +1C4B47001E6544002081400020B73C0020D63A0021D6390021D6390022D639 +0022D6390022D6390022D6390022D6390022D6398E2400008F250000902500 +009026000091270000922700008E28000081280000752B00006B2D0000602E +0005552E000B482E0011392D001A292A002417240034051F06430022184400 +272641002A373E002D4D3B00316739003383360033B3330032DA310032DA30 +0033DA300033DA300034DA300034DA300034DA300034DA300034DA30912700 +009228000093290000942A0000942A00008E2B00007E2B0000722C0000672F +00005E320000553400044B3600094037000F3338001724360021122F002E01 +2A053A0031173800372636003C393300404F310044682F0047842D0045AD29 +0044DA280045DA270045DA270046D9270046D9270046D9270046D9270046D9 +270046D927952B0000962C0000972D0000982E00008D2D00007B2D00006F2F +0000653000005B330000533700004B3A0003433D00073942000C2E4500131F +42001D0D3B0027003A072F0041162D0049282C00503E2B0054522800586926 +005985230057A8210058DB200059DB200059DB20005ADB20005ADB20005ADB +20005ADB20005ADB20005ADB20992F00009A3000009B3100008C3000007930 +00006C3100006132000059330000513700004A3B0000444000013C46000433 +4C0009274F0011194C00190A480022004A082600531824005C2B2500623E23 +00665220006A691E006A841C0069A71B006BE01B006BE01A006BE01A006BE1 +1A006CE11A006CE11A006CE11A006CE11A006CE11A9C3300009D3400008C34 +000077340000693400005E350000553600004F370000483B0000424100003C +470000354F00022C560007215A000F155900170859021E005D0A2000671B1E +006E2B1D00733D1A00765118007A6817007B8116007BA516007CEC15007CEC +15007DEC15007DEC15007DEC15007DEC15007DEC15007DEC15007DEC159F38 +00008C38000076370000673700005B380000533900004C390000473B000041 +4000003B470000355000002D580001255F00061C64000E116700150468001A +00700D1A00791D18007F291600833A1300865010008A6610008C7D10008C9E +10008EE610008FEE0F008FED0F008FED0F008FED0F008FED0F008FED0F008F +ED0F008FED0F8C3B0000743A0000653A0000593B0000503C00004A3D000044 +3E0000404000003A470000345000002D590000276200001F6900041770000A +0D7400100479021500820D14008A1A110091260E0097370C009B4D0A009F62 +0900A1780900A1950900A4CF0800A5E20800A5E20800A5E20800A5E10800A5 +E10800A5E10800A5E10800A5E108733D0000633D0000573E00004E3F000048 +400000424200003D45000039470000335000002C5A000026630000206C0000 +1A740003137C00070B83000C038B02100095090E00A2150900AE210600B632 +0500BD480300C35D0200C8730200CB8E0300C9C20300CAEF0300CBEF0200CB +F00200CBF00200CBF00200CBF00200CBF00200CBF00261400000554100004C +42000046440000404700003B4A0000364D0000325000002C5A000025640000 +206E00001B77000016800000118900010B930003049E000700AE040600C70D +0400E21A0300FA280101FF410000FF570000FF6F0101FF890001FFC80000FF +FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0053 +4400004B460000444900003E4C000039500000345400002F5700002B5A0000 +256400001F6D00001A750000157E0000108600000C8F00000699000103A502 +0100B9070200D3110100ED1D0000FF2B0000FF450000FF590000FF6F0000FF +860000FFB60000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF004A4B0000424D00003C50000036530000315700002C590000 +285C0000245E00001F6700001970000014780000108000000B880000069000 +000199000200A6040000BB090000D3120000EC1C0000FF290000FF430000FF +570000FF6D0000FF830000FFA70000FFF70000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF00404E00003A510000335500002D580000 +295B0000255E0000216000001F620000196A0000147200000F7900000C8100 +0009880000059000000198000200A5030000BA090000D2110000EB1C0000FF +280000FF410000FF550000FF6A0000FF800000FF9B0000FFE70000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF003753000031560000 +2B5A0000265D0000226000001F6200001C63000019650000156C0000127200 +000F7900000C80000009880000058F00000198000200A5030000B8090000D1 +110000EA1B0000FF260000FF3F0000FF530000FF670000FF7E0000FF910000 +FFDA0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +2E580000285C0000235F00001F6100001C6300001965000017650000176500 +00156B0000127200000F7900000C80000009880000068F00000198000200A4 +030000B7080000D0100000E81A0000FD260000FF3C0000FF510000FF640000 +FF7B0000FF8C0000FFBC0000FFF80000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF00265D0000216000001D6300001965000017650000176500 +001765000017650000156B0000127200000F7900000C80000009870000068F +00000297000200A3030100B6080000CE100000E71A0000FC250000FF3A0000 +FF500000FF620000FF770000FF880000FFA80000FFE50000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<740A0000750A0000750B0000760B0000770B0000770C0000780C0000780C00 +00770B0000720600046F0204096E000D0B7000170B7300210B76002C0B7800 +3A0A790049087A0058077A006705790077037A0087017B009E017E00CC0181 +00FF018100FF018100FF018100FF018100FF018100FF018100FF018100FF01 +8100FF018100FF01750A0000760B0000760B0000770C0000780C0000780C00 +00790D0000790D0000770B0000730700046F02030A6F000C0C7000160C7300 +200C77002B0C7800390B790048097A0057087A0066067A0076047A0087027B +009E027E00CB018100FF018100FF018100FF018100FF018100FF018100FF01 +8100FF018100FF018100FF018100FF01760B0000770B0000770C0000780C00 +00780D0000790D00007A0D00007A0E0000780C0000740800047002030A6F00 +0B0D7000150D73001F0D77002A0D7900380C7A00470A7A0057097B0066077A +0076057B0087037C009D027E00CA028100FF018100FF018100FF018100FF01 +8100FF018100FF018100FF018100FF018100FF018100FF01770C0000780C00 +00780D0000790D00007A0D00007A0E00007A0E00007B0E0000790D00007609 +00037103020A6F00090E7100140E73001E0E7700280E7900360D7A00460B7B +00560A7B0065087B0075067B0087047C009D037F00C9038100FF028200FF02 +8200FF028200FF028200FF028200FF028200FF028200FF028200FF028200FF +02780C0000790D0000790D00007A0E00007B0E00007B0F00007B0F00007C0F +00007A0E0000770A00027204010A7000080E7100130F74001D0F7700270F7A +00350E7B00450D7B00550B7C0065097B0075077C0086057D009D047F00C703 +8200FF028200FF028200FF028200FF028200FF028200FF028200FF028200FF +028200FF028200FF02790D00007A0E00007B0E00007B0F00007B0F00007C0F +00007C1000007C1000007B0F0000790B00027405000A7101070F7200111074 +001C10780026107B0033107B00440E7B00540C7C00640B7C0074097C008506 +7D009C058000C6048200FF038200FF038200FF038200FF038200FF038200FF +038200FF038200FF038200FF038200FF037B0E00007B0F00007B0F00007C10 +00007C1000007D1000007D1100007D1100007D1000007A0D00017506000A73 +02060F72000F1175001A11780025117B0031117C00420F7C00530E7D00630C +7D00730A7D0085087E009C068000C5058300FF048300FF048300FF048300FF +048300FF048300FF048300FF048300FF048300FF048300FF047B0F00007C10 +00007C1000007D1100007D1100007D1100007E1200007E1200007E1100007B +0E0001770800097403050F73000D1275001912790023127C0030127C004011 +7D00510F7D00610E7D00720C7E0084097F009B088100C3068300FF048300FF +048300FF048300FF048300FF048300FF048300FF048300FF048300FF048300 +FF047C1000007D1100007D1100007E1200007E1200007E1300007F1300007F +1300007F1200007D0F0001790A00087604040F73000B147600171379002113 +7D002E147D003E137D004F117E00600F7E00710D7E00830B7F009A098200C2 +078400FE058400FF058400FF058400FF058400FF058400FF058400FF058400 +FF058400FF058400FF057D1100007E1200007E1200007F1300007F13000080 +1400008014000080140000801300007E1100017B0C00077705020F74000915 +76001515790020157D002C157E003C147E004D137F005F117F006F0F7F0082 +0D8000990B8200C0098400FD068300FF068100FF078000FF087F00FF087E00 +FF097E00FF097E00FF097E00FF097E00FF097F1300007F1300008014000080 +1400008015000081150000811500008116000081150000801200017D0E0006 +7907010F75000616770012177A001D177D0029177F0039167F004B157F005D +1380006E127B007F11770094107400B60F7200F30E6F00FE0F6D00FE106C00 +FE106B00FE116A00FE116A00FE116A00FE116A00FE116A00FE118014000080 +15000081150000811600008216000082160000821700008317000083160000 +82140001801000057C09000F7803051677000F197A001B187D002619800036 +187A004619720056196C0066196700771964008C186000AB175E00E8175C00 +F8185A00F6185900F6195800F5195800F5195800F5195800F5195800F51958 +00F51981160000821600008217000082170000831700008318000083180000 +841800008418000084160000821300047F0C000D7B06041578000B1B7B0018 +1A7300221E6B002D2162003C225B004C2157005D2353006F23500083224D00 +A0204C00D71F4B00EB204900EA204800E9214700E9214600E8214600E82146 +00E8214600E8214600E8218317000083170000831800008318000084190000 +84190000841A0000851A0000851A00008518000085150003820F000C7E0802 +157001051F64000F245A001B275200252A4A00312A4400402A3F00512D3C00 +642E3900792D3700962B3600C9293400E2293200E1293000E0292F00E02A2E +00E02A2E00E02A2E00E02A2E00E02A2E00E02A841800008419000084190000 +851A0000851A0000851B0000851B0000861B0000861B0000871A0000871800 +038213000B730F0015610900214D02042D4200113337001B342F0025362A00 +32392500433B2200553D21006C3C20008A381E00B9341D00D8321B00D7331A +00D6341A00D5341900D4341900D4351900D4351900D4351900D435851A0000 +851B0000851B0000861C0000861C0000861C0000871D0000871D0000881D00 +00891C0000811B00037519000A661600135411001E3E0B002B2B0606361C00 +0C4117001B471000254B0B00324E0900455007005F4E08027C470903A44009 +03C83D0804C73D0804C63D0704C63D0705C53D0705C53D0705C53D0705C53D +0705C53D861C0000861C0000871D0000871D0000881E0000881E0000881F00 +00891F00008A1F00007F20000074200002681E000A591C00124819001B3414 +0027200E01370B04004A01040F5100092051010C2F4F000D444C000E5C4900 +0F7745000F9C3F000FC43B0010C43B0011C43A0011C53A0012C53A0012C53A +0012C53A0012C53A0012C53A871E0000881E0000891F0000891F00008A2000 +008A2000008B210000872100007D23000072240000672500025A23000A4C22 +00113C2000192B1C00241A170033051002450014154A001723460019324100 +1B473E001D5F3D001F7839001F9C36001FCF33001FCF320020CF320020CF32 +0021CF310021CF310021CF310021CF310021CF318A2000008B2100008B2100 +008C2200008D2200008D23000085240000792500006F270000642800005A29 +00034E2900094229000F33280018252500211420002F041D073D0020173D00 +24253900273436002A4933002F623200317A3000329C2D0030D32A0030D32A +0031D22A0031D2290032D2290032D2290032D2290032D2290032D2298D2300 +008D2300008E2400008F2500009025000084260000762700006B290000612A +0000582D00004F2F0002443000073931000E2D3200142130001D102B002901 +280634002E17310034252F0038362C003C4B2A0041622800437B2700429B24 +0041D2230041D1220042D1220042D1220043D1210043D1210043D1210043D1 +210043D1219026000091260000922700009228000083280000732A0000682B +00005E2C0000552E00004D310000453400013D380005343B000A283D00111B +3B001A0B35002400360829003D162700442626004A3B25004F4D2300546321 +00557D1F00529A1D0052D31C0053D31C0053D31C0054D31C0054D31B0054D3 +1B0054D31B0054D31B0054D31B942A0000952B0000962C0000812B0000712D +0000652E00005B2F0000523000004B320000443600003E3B0000374000032D +4500072347000E164500170641012000450921004E171F00572A21005C3C1E +00604E1B0065631900657C18006499170064D0170064D7160065D7160065D7 +160065D7160065D7160065D7160065D7160065D716992F00009A3000007F2E +00006F30000062310000573200004F33000049340000433600003D3B000037 +42000030490001274F00051D52000D115100150450021B00570C1B00611B1A +00672A1A006C3A1700704D140073621200757912007595120075CA110075DE +110075DE110075DE110076DD100076DD100076DD100076DD100076DD109C34 +00007F3200006D3300005F340000543500004C36000046370000413900003C +3C000036430000304A00002952000021580005185D000D0D5E0013025F0218 +00690F1600721D1400782912007C380F007F4C0C0082610B0084760B008490 +0B0085BF0B0086DE0B0086DE0B0086DD0B0086DD0A0086DD0A0086DD0A0086 +DD0A0086DD0A7F3600006B3600005D370000523800004A390000443B00003F +3D00003A3F0000354300002F4B000029540000235C00001C6300051368000A +096B001001700512007A111000821C0D0088270A008C370700904A0500945D +040096710400968B040096B4040098D7040098D7040098D7040099D7040099 +D7040099D7040099D7040099D704693900005A3A0000503B0000483D000042 +3F00003C41000038440000334700002E4C000028550000225E00001D660000 +166D00040F7400080679000C0080050D008B0F0900961905009E240300A533 +0200AB470100B05B0100B66F0100B6880100B4AE0100B7E10100B7E20100B7 +E20100B7E20000B7E20000B7E20000B7E20000B7E200593E00004E3F000046 +410000404300003A460000354A0000314D00002C50000028560000225F0000 +1C68000017700000117800020B8000040588000700910306009F0A0200B212 +0100C51D0000D42B0000DF3F0000EA540000F4690000F7820000FBA60000E9 +FF0000E9FF0000E9FF0000EAFF0000EAFF0000EAFF0000EAFF0000EAFF004D +430000454500003E490000384D0000335000002D54000029580000265B0000 +226000001C6A000017730000127B00000D830000088B000004930001019E02 +0100AD060000C60C0000E0160000F6220000FF360000FF4E0000FF630000FF +7D0000FF990000FFF40000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF00444A00003D4F000036530000305700002A5A0000265D0000 +235F00001F6100001C650000166D0000117500000E7C00000B830000078B00 +0004930001019D010100AC050000C50B0000DE160000F5210000FF340000FF +4D0000FF610000FF7A0000FF900000FFE40000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF003A510000335500002D590000285C0000 +235F0000206100001C6300001964000016670000136E0000117500000E7C00 +000B830000088B000004930001019D010100AC050000C40B0000DD150000F3 +200000FF320000FF4B0000FF5E0000FF760000FF8C0000FFD10000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00315600002A5A0000 +255E0000216100001D63000019640000176500001765000017670000146E00 +00117500000E7C00000B830000088A000004930001019C010100AB050000C3 +0B0000DB150000F2200000FF300000FF490000FF5C0000FF730000FF880000 +FFB60000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +285C0000235F00001E6200001A640000176500001765000017650000176500 +0017670000146E0000117500000E7C00000B830000088A000004920001019C +010100AA050000C10A0000D9140000F01F0000FF2E0000FF480000FF5A0000 +FF6F0000FF840000FFA40000FFED0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF00206100001C630000186500001765000017650000176500 +00176500001765000017670000146E0000117500000E7B00000B830000088A +000004920001019B010200A9040000C00A0000D8140000EF1E0000FF2C0000 +FF450000FF580000FF6C0000FF810000FF970000FFDC0000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<6D0500006E0500006E0500006F060000700600007007000071070000710700 +00710800006C0400026901050569000E076A0017076D00210670002B067300 +38047400460476005303760062027600720176008200770095007800B6007C +00F9007D00FC007D00FC007D00FC007D00FC007D00FC007D00FC007D00FC00 +7D00FC007D00FC006E0500006F0600006F0600007007000070070000710700 +007108000072080000720800006D0500026A0104066A000D086B0017086D00 +200771002A0773003705750045047600530477006203760071027600810077 +0094007900B4007D00F8007D00FC007D00FC007D00FC007D00FC007D00FC00 +7D00FC007D00FC007D00FC007D00FC006F0600007006000070070000710700 +0071080000720800007208000073090000730900006F0500026B0103066A00 +0C086B0016086E001F08710029087400360675004405770052047700610377 +00700277008100780093007900B3007D00F6007E00FD007E00FD007E00FD00 +7E00FD007E00FD007E00FD007E00FD007E00FD007E00FD0070070000710700 +007108000072080000730900007309000074090000740A0000740A00007006 +00016C0202076B000A096C0015096E001E0972002809750035077600430677 +005105780060047700700277008000780092007A00B1007E00F4007F00FD00 +7F00FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE +007108000072080000730900007309000074090000740A0000750A0000750A +0000760B0000720700016D0201076C00090A6D00130A6F001D0A7300270975 +00330977004207780051067900600578006F0278007F01790091007B00B000 +7F00F2007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE +007F00FE007F00FE00730800007309000074090000740A0000750A0000760B +0000760B0000770B0000770C0000740900006E0300076D00080A6E00120B70 +001C0A7300260A7600320A780041087900500779005F0579006E0379007E01 +790090007B00AE008000F0008000FF008000FF008000FF008000FF008000FF +008000FF008000FF008000FF008000FF0074090000750A0000750A0000760B +0000760B0000770C0000780C0000780C0000780D0000760A0000700400076E +01070B6F00110C71001B0B7400250B7700300B78003F0979004F087A005E06 +7A006D0479007D027A008F017C00AD018000EE018100FF018100FF018100FF +018100FF018100FF018100FF018100FF018100FF018100FF01750B0000760B +0000770C0000770C0000780C0000790D0000790D00007A0D00007A0E000077 +0B0000720500067002060B6F000F0D7100190D7400230D78002F0D79003E0B +7A004D0A7B005C087A006C067A007C047B008F037D00AC028100EE028100FF +018100FF018100FF018100FF018100FF018100FF018100FF018100FF018100 +FF01770C0000780C0000780D0000790D00007A0E00007A0E00007B0E00007B +0F00007B0F0000790C0000740700057103040B70000C0E7200170E7500210E +79002D0F7A003B0D7B004B0C7B005B0A7B006B087B007C067C008E047D00AB +038100EB038200FF028200FF028200FF028200FF028200FF028200FF028200 +FF028200FF028200FF02790D00007A0D00007A0E00007B0E00007B0F00007B +0F00007C1000007C1000007C1000007A0E0000770900057304030B71000A10 +7200151075001F1079002A107B00390F7B00490D7C005A0C7C006A0A7C007B +087D008E067E00AA057F00E3047D00FD047B00FC057900FB057800FB067700 +FB067700FB067700FB067700FB067700FB067B0E00007B0F00007B0F00007C +1000007C1000007D1100007D1100007D1100007E1200007C0F0000790B0004 +7505010C720007117300131176001D117A0028127C0036117C0047107C0058 +0E7900670E7400770D7000890C6D00A30C6B00D20B6900F80B6700F70C6600 +F60D6400F50D6400F40D6300F40E6300F40E6300F40E6300F40E7C1000007C +1000007D1100007D1100007E1200007E1200007E1200007F1300007F130000 +7E1100007C0E00027707000C740206127400101377001B137A0026137B0033 +14730041166B00501566006016610070165E0083145B009C135900C6135700 +EE145500ED155400EC155300EC155300EB165200EB165200EB165200EB1652 +00EB167D1100007E1200007E1200007F1300007F1300007F14000080140000 +8014000080150000801300007E0F00027A09000A7603041275000D15740018 +166B00211A64002B1C5B00391C5500471D5100571E4E00691F4B007B1E4800 +931C4700BA1B4700E21B4500E11C4400E01C4300DF1D4200DF1D4100DE1D41 +00DE1D4100DE1D4100DE1D7F1300007F130000801400008014000081150000 +8115000081160000821600008216000081150000801200027D0C0009790602 +126801051B5D000F1F530019224C00232444002E243F003B253B004C273800 +5E2934007128320089263100AF243000D7232E00D6232C00D5242B00D5242A +00D5242A00D4242A00D4242A00D4242A00D424801500008115000081160000 +82160000821700008317000083170000831800008318000083170000821400 +017A1100086B0D00115907001D480305263B000E2B3200182E2C0022302700 +2F3222003E351F004F371D0064361D007E331C00A22F1B00CF2C1900CE2D18 +00CD2E1700CC2E1600CB2E1600CB2F1600CB2F1600CB2F1600CB2F82160000 +82170000831700008318000083180000841900008419000084190000851A00 +00851900007A1900016E1700075F1300104E10001B390A00262705052F1900 +0B3A16001A400F0024440A002F460700404805005748070272410803923A08 +03C0360704BF360704BE360605BD360605BD360605BD360605BD360605BD36 +0605BD36831800008419000084190000841A0000851A0000851B0000851B00 +00861B0000821C0000781D00006D1D0001611B00065219000F431700192F12 +00231D0C01310904004201040F4900081F49010B2D46000D4143000E574000 +0F6F3D000F8C39000FBC340010BC330011BC330011BD330011BD320012BD32 +0012BD320012BD320012BD32851A0000851B0000861B0000861C0000861C00 +00871D0000871D0000801E0000762000006C2000006121000154200007471F +000E371D0017271A00201815002D0510033E001315420017223E0019303900 +1A4336001C5934001E7032001F8C30001EC52C001FC52B001FC52B0020C52B +0020C52B0020C52A0020C52A0020C52A0020C52A861C0000871D0000871D00 +00881E0000881F0000891F00007E20000073220000692300005E2400005425 +0001492500063C25000D2E2400152222001E121E002A031B0736001F173600 +2323310025312E0028452C002C5C2B002F7329002F8D27002EC325002EC924 +002FC924002FC8240030C8230030C8230030C8230030C8230030C823891F00 +00891F00008A2000008A2100008B2100007C2300006F240000652500005B26 +000052280000492A00013F2B0006342C000C292D00121D2B001A0E27002400 +25072D002B162B003023280034332600384724003D5D22003F7321003F8E20 +003DBB1E003DC91D003DC91D003EC91D003EC91D003EC91C003EC91C003EC9 +1C003EC91C8C2200008C2200008D2300008A240000792500006C2700006128 +0000572900004F290000472C0000402F0001373200042E3500082437000F18 +35001709310020003208240039162100402421004537200049491D004F5E1B +0050741A004E8E19004DB518004ECA17004ECA17004ECA17004ECA17004FCA +17004FCA17004FCA17004FCA178F250000902600008A26000077280000692A +00005D2B0000542C00004C2D0000452E00003F31000039360000313B000129 +3F00061F40000C133E0015043B011E00410B1D0049171A0051291C0056391A +005A4A1800605D1500617414005F8C13005DB212005ECE12005ECE12005FCE +12005FCE11005FCE11005FCE11005FCE11005FCE11932900008C2A0000762B +0000672D00005A2E0000502F000049300000433100003E3300003837000031 +3D00002B430001234800031A4B000B0D490013044A041800520D17005B1B15 +006129150065391300694910006D5C0E006F710D006F890D006FAE0D006ED1 +0C006ED10C006FD10C006FD10C006FD10C006FD10C006FD10C006FD10C8C2D +0000742E000064300000573100004D32000046330000403500003B37000037 +390000313E00002B450000254C00001E5200041455000C0956001100580415 +00631112006B1E100071290E0075370B00784808007B5B06007E6E06007E85 +06007EA707007ED006007ED006007ED006007ED006007ED006007ED006007E +D006007ED0067332000062330000553400004B360000443700003E39000039 +3B0000343E0000304000002B470000254F00001F560000185C00040F60000A +0562000E0169080F0073150C007B1F08008029050084370400884802008C5A +02008F6D01008E8401008DA501008FD001008FD001008FD001008FD001008F +D001008FD001008FD001008FD001603700005338000049390000423B00003C +3D000036400000324300002D4600002A490000245000001F59000019600000 +126600040A6B00080471030900790A0900831405008C1D0200932700009834 +00009C450000A0570000A5690000A5800000A2A00000A5D60000A5D80000A5 +D80000A5D80000A5D80000A5D80000A5D80000A5D800513B0000483D000040 +3F00003A420000344600002F4A00002B4D000027510000235400001F5A0000 +19630000136A00010D71000306770005017E01070086070400910D01009E14 +0000AA1D0000B4290000BB3B0000C34F0000CC630000D07A0000D1970000CB +D40000CCEC0000CCED0000CCED0000CDED0000CDED0000CDED0000CDED0046 +4100003F44000038480000324D00002C5100002855000024580000205B0000 +1D5E000019640000136D00000F7400000C7B000109830001058B0002019400 +0300A1030100B5090000CF110000EA1B0000FF280000FF430000FF580000FF +710000FF8A0000FFDC0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF003D4A0000364F00002F5400002A590000255D000021600000 +1E6200001A64000018650000156A0000127100000F7800000D7F00000A8600 +00068E00000296000200A2030100B5080000CF100000E81A0000FF260000FF +400000FF560000FF6D0000FF860000FFC00000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF00345500002D590000275D000022600000 +1E6200001B640000176500001765000017650000156A0000127100000F7800 +000D7F00000A860000068E00000296000200A2030100B4070000CD0F0000E7 +1A0000FD250000FF3E0000FF540000FF6A0000FF820000FFAB0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF002A5A0000245E0000 +206100001B6300001865000017650000176500001765000017650000156A00 +0012700000107700000D7E00000A860000068D00000296000100A1020100B3 +070000CC0F0000E6190000FB250000FF3B0000FF520000FF670000FF7F0000 +FF9C0000FFF10000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +226000001D6200001965000017650000176500001765000017650000176500 +00176500001669000013700000107700000D7E00000A860000078D00000395 +000101A1020100B2070000CB0E0000E5180000F9240000FF390000FF500000 +FF640000FF7C0000FF910000FFDE0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001B64000017650000176500001765000017650000176500 +001765000017650000176500001669000013700000107700000D7E00000A85 +0000078D00000395000101A0020100B1070000C90D0000E3180000F8230000 +FF360000FF4E0000FF610000FF780000FF8B0000FFC10000FFFF0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<62020000630200006402000065030000650300006603000067030000680300 +0068040000660200016300050363000E0364001703660020036A002A026D00 +36006F00420071004F0072005E0072006D0072007D0072008E007300A60076 +00DB007800F6007800F6007800F6007800F6007800F6007800F6007800F600 +7800F6007800F6006302000064020000650300006603000067030000680300 +0068040000690400006A040000680300016400040364000D03650016046700 +20036B0029026D0035007000420072004F0073005D0073006C0072007C0073 +008D007400A5007700DA007900F8007900F8007900F8007900F8007900F800 +7900F8007900F8007900F8007900F800650300006603000067030000680300 +0068040000690400006A0400006B0400006B04000069030001650004036500 +0C046600160468001F036B0028026E0034017000410072004E0073005C0073 +006B0073007B0074008C007400A4007700D8007900F9007900F9007A00F900 +7A00F9007A00F9007A00F9007A00F9007A00F9007A00F90067030000680300 +0069040000690400006A0400006B0400006C0500006C0500006D0500006B04 +00016600030466000B046700150569001E046C0027036F0033027100400173 +004D0174005C0174006B0174007B0074008C007500A3007800D6007A00F900 +7A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9 +0068040000690400006A0400006B0400006C0500006D0500006E0500006E05 +00006F0600006D0500016700010467000A05680013066A001D056D00260470 +00310372003F0274004C0275005B0175006A0174007A0075008B007600A200 +7900D5007B00FA007B00FA007B00FA007B00FA007B00FA007B00FA007B00FA +007B00FA007B00FA006A0400006B0500006C0500006D0500006E0500006F06 +00006F06000070060000700700006F0600006901000568000906680012076A +001C066D0025057100300573003E0374004C0376005A027500690175007900 +76008A007700A1007A00D2007C00FB007C00FB007C00FB007C00FB007C00FB +007C00FB007C00FB007C00FB007C00FB006D0500006E0500006F0600006F06 +00007006000070070000710700007108000072080000710700006B0200046A +010806690011086B001A076E00240772002F0674003D0575004B0476005903 +7600680276007801760089007800A0007A00D0007D00FC007D00FC007D00FC +007D00FC007D00FC007D00FC007D00FC007D00FC007D00FC006F0600006F06 +00007007000071070000710800007208000072080000730900007309000073 +0800006D0400046B0106076B000F096C0019086F00220873002D0875003B06 +760049057700580477006703770077017700880078009E007B00CE007E00FD +007E00FD007E00FD007E00FD007E00FD007E00FD007E00FD007E00FD007E00 +FD00700700007107000072080000720800007309000074090000740A000075 +0A0000750A0000740A00006F0500036C0205076C000D0A6D00170970002109 +74002C0976003907770048067800570578006603780075027800860079009D +007C00CB007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00 +FE007F00FE007F00FE00720800007309000074090000740A0000750A000075 +0B0000760B0000760B0000770C0000760B0000720700026E0203086D000B0B +6E00150B71001F0A75002A0B77003709780046087900550679006404790074 +0279008500770099017500BF017600F6027400F4027200F3027000F2036F00 +F1036F00F1036E00F0036E00F0036E00F003740A0000750A0000760B000076 +0B0000770C0000770C0000780C0000790D0000790D0000780C000075090002 +700301096E00090C6F00130C72001D0C7600280C7800350B7900440A780053 +097200610A6E006F096A008009670095086400B7086300EC076000EB085F00 +EA095E00E9095D00E90A5C00E90A5C00E90A5C00E90A5C00E90A760B000077 +0C0000780C0000780D0000790D00007A0D00007A0E00007B0E00007B0F0000 +7B0E0000780B0001720500087002070C7000110E73001B0E7600250E730030 +116B003E1264004B125F005A125C006A1359007B12560090105300B0105200 +E4105000E3114F00E3114E00E2124D00E2124D00E1124D00E1124D00E1124D +00E112790D0000790D00007A0E00007B0E00007B0F00007B0F00007C100000 +7C1000007C1000007C1000007A0D0000750700077303050D71000E106B0017 +13630020165B002919540035194E0042194C00521B4A00631C4600741B4300 +88194200A7184200D9174000D7183E00D6183D00D6183C00D5193B00D5193B +00D4193B00D4193B00D4197B0E00007B0F00007C0F00007C1000007D100000 +7D1100007D1100007E1200007E1200007E1200007C0F0000780A0006710503 +0D6000051756000E1B4C00181D460021203F002B203A003721360047223300 +582430006A242D0080222D009C202C00CE1E2A00CD1F2900CD1F2800CC1F27 +00CC202700CC202600CC202600CC202600CC207C1000007D1100007D110000 +7E1200007E1200007F1300007F1300007F14000080140000801400007E1100 +00720F0005630B000E530600194302052136000E252E001828280021292500 +2D2C20003B2E1D004B301A005D311A00742E1A00912B1900C3271700C52816 +00C4281500C3291500C3291400C2291400C2291400C2291400C2297E120000 +7F1300007F1300008014000080140000811500008115000081160000821600 +007E16000073150000671400035811000D490E0017340900222404052A1800 +0B33130018390E00223D09002D3F06003C41040051410502693C0603843607 +03B0300604B7300604B7300505B6300505B6300405B6300405B5300405B530 +0405B530801400008115000081160000821600008217000082170000831700 +00831800007B180000731A0000671900005B1900034D17000C3E1500162B11 +00201B0B012C0803003B01040F4100091E41000B2B3E000D3D3B000D523800 +0F673600108133000FA92E0010B62D0011B72C0011B72C0012B72B0012B72B +0012B72B0012B72B0012B72B82170000831700008318000083180000841900 +008419000084190000791B00006F1C0000661D00005A1D00004F1D0004411C +000C331B00152418001E16130028040E03380013153B0016213600182E3100 +193F2E001B532D001D692C001E812A001EA727001EBC26001EBC25001FBC25 +001FBC250020BC240020BC240020BC240020BC248419000084190000851A00 +00851A0000851B0000821B0000771D00006C1E0000621F0000592000004E21 +0000432100043621000B2A2000131F1F001B101B002602190831001D162F00 +21222900232F270026412600295524002D6B24002D8222002DA520002CBF1F +002DBF1F002DBF1F002DBF1E002EBF1E002EBF1E002EBF1E002EBF1E851B00 +00861C0000861C0000871D0000821E000075200000692100005E2200005422 +00004D23000043250000392700042F28000A252900101B2700170D24002100 +23082700281524002D2122003130200034431E0039571D003C6C1C003B831B +003AA219003AC019003AC018003AC018003BC018003BC018003BC018003BC0 +18003BC018871E0000881E0000891F00008120000072220000652300005924 +00005025000049260000422700003A2A0000322E00022A3100062132000C15 +300015072C001D002F091F0036161D003B231C003F331A00434518004A5817 +004C6C16004A84140047A0130047C1130048C1120048C1120048C1120049C1 +120049C1120049C1120049C1128B2100008B210000802300006F2500006126 +0000562700004D280000452900003F2B00003A2C0000333100002C36000025 +3900041C3A000A103900130236011B003D0C1900451816004B2617004F3515 +00544613005A5811005C6C0F005A820E00589E0E0058C40D0058C40D0058C4 +0D0058C40D0059C40C0059C40C0059C40C0059C40C8F2400007F2500006D28 +00005E290000532A0000492B0000422D00003C2E000037300000333300002D +380000273E000020420002164400090A42001201440515004D0F1300551B11 +005A2811005F360F0062460C0067570900696A08006A8008006A9A0A0068C5 +080068C5070068C5070068C5070068C4070069C4070069C4070069C4077F29 +00006B2B00005C2C0000502E0000472F0000403100003A3300003535000031 +3700002D3A000027400000214700001A4C0002114E0009064E010F00530611 +005D130D00651E0B00692809006D350600704504007557030078690200787E +02007897020077C3020077C4010078C4010078C3010078C3010078C3010078 +C3010078C301692E0000593000004D320000443300003D3500003837000032 +3A00002E3C00002A3F000027420000214900001B500000145600040B580009 +0159010D00630B0B006D18080074200400792901007C360000804500008355 +000086670000867B00008495000084BF000084CA000085CA000085CA000085 +CA000085CA000085CA000085CA00573400004B350000433700003C39000036 +3C0000303F00002C4300002846000024480000214C00001B530000165A0000 +0E5F0004066300070168040800700D070079160400801D0100862500008A30 +00008E4000009251000095630000977700009592000095BC000095D2000096 +D2000096D2000096D2000096D2000096D2000096D2004A390000413B00003A +3E0000344200002E460000294A0000254D0000215000001E5300001B550000 +165D0000106300010C690003076D000502730107007B070600840E03008E15 +0000971D00009E280000A4370000A9490000AE5D0000B3710000B38B0000B0 +B50000B2DF0000B3DF0000B3DF0000B3DF0000B3DF0000B3DF0000B3DF0040 +40000038440000324800002C4D000027510000225500001F5800001B5B0000 +185D0000175E000014650000116C00000D7200010979000205800004018801 +0500910503009E0A0000B0110000C31B0000D3270000E03B0000EA520000F5 +670000F8820000FBAD0000EBFF0000EBFF0000EBFF0000ECFF0000ECFF0000 +ECFF0000ECFF00374A0000304F00002955000024590000205D00001C600000 +18620000176400001765000017660000146C0000117300000E7A00000B8100 +000889000005910001019B010200A8040000C00A0000D9140000F2200000FF +310000FF4C0000FF610000FF7C0000FF9D0000FFFF0000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF002D580000275D0000226000001D630000 +196500001765000017650000176500001765000017650000146C0000117300 +000E7A00000C8100000889000005910001019A000200A7040000BE0A0000D8 +140000F01F0000FF2F0000FF4A0000FF5E0000FF790000FF910000FFEF0000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00245E00001F620000 +1A640000176500001765000017650000176500001765000017650000176500 +00146C0000117300000F7A00000C8100000888000005900000019A000200A7 +040000BD090000D6130000EF1E0000FF2D0000FF480000FF5C0000FF740000 +FF8C0000FFDD0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +1D630000186500001765000017650000176500001765000017650000176500 +001765000017650000146C0000117300000F7A00000C810000098800000590 +00000199000200A6040000BB090000D4120000ED1D0000FF2B0000FF460000 +FF590000FF700000FF870000FFBE0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +0017650000176500001765000017650000156C0000127300000F7900000C81 +000009880000059000000199000200A5030000BA090000D3120000EB1C0000 +FF290000FF430000FF570000FF6C0000FF830000FFA60000FFF70000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<590002005A0002005A0002005B0001005B0001005C0001005C0001005D0001 +005E0001005E0101005D0005005D000E015D0016015F001F01620028006500 +320068003F006A004B006D0059006E0067006D0077006D0087006E009B006F +00BF007200E9007200E9007200E9007200E9007200E9007200E9007200E900 +7200E9007200E9005A0002005B0002005B0001005C0001005C0001005D0001 +005E0001005E0101005F010100600101005E0005015E000D015E0016016000 +1E01630027016600320068003E006B004B006E0058006E0067006E0076006E +0086006E009A007000BE007300EB007300EB007300EB007300EB007300EB00 +7300EB007300EB007300EB007300EB005B0001005C0001005D0001005D0001 +005E0101005F010100600101006001010061010000610200005F0004015F00 +0C015F00150261001E01640026016700310069003D006C004A006F0057006F +0066006F0076006F0086006F0099007100BE007400ED007400ED007400ED00 +7400ED007400ED007400ED007400ED007400ED007400ED005D0001005D0001 +005E0101005F01010060010100610101006102000062020000630200006302 +00006000030260000B026000140262001D0265002601680030016B003C006D +0049006F005700700065006F0075006F008500700099007200BD007500EF00 +7500EF007500EF007500EF007500F0007500F0007500F0007500F0007500F0 +005E0101005F01010060010100610100006202000063020000630200006402 +000065030000650300006100020261000A026200130363001C026600250269 +002F016C003C006E0048007000560071006500700074007000850071009800 +7300BC007600F2007600F2007600F2007600F2007600F2007600F2007600F2 +007600F2007600F20060010100610200006202000063020000640200006503 +00006503000066030000670300006703000063000002630009036300120364 +001B03670024026A002E016D003B006F004800710055007200640071007400 +71008400720097007400BA007700F5007700F5007700F5007700F5007700F5 +007700F5007700F5007700F5007700F5006302000063020000640200006503 +000066030000670300006803000068040000690400006A0400006501000264 +0008036400110466001A03680023026C002D016E003A007000470072005400 +730063007200730072008300730096007500B9007900F8007900F8007900F8 +007900F8007900F8007900F8007900F8007900F8007900F800650300006603 +0000670300006803000069040000690400006A0400006B0400006C0500006C +050000680200026600060466000F04670019046A0022036D002C0270003801 +7100450173005301740062017300720073008200740095007600B7007A00F9 +007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00F9007A00 +F90068030000690400006A0400006A0400006B0400006C0500006D0500006E +0500006E0500006F0600006A0300026700050467000E05680017056A002005 +6E002A04710037027200440274005202750061017400700174008100750094 +007700B5007B00FA007B00FA007A00F8007900F7007800F7007700F6007600 +F5007600F5007600F5006A0400006B0400006C0500006D0500006E0500006F +0600006F0600007006000070070000710700006D0500016901030568000C07 +690015076C001F066F0028067200350474004204750051037600600275006F +0172007E016F008F016D00AB016D00E9016B00EA016900E9016700E7016600 +E5016500E5016500E4016500E4016500E4016D0500006E0500006F06000070 +06000070070000710700007108000072080000720800007309000070060001 +6B0101066A0009086B0013086D001D0870002707730032067500410570004D +076C005B07670069076400780660008A065E00A4055C00D8045A00DF055800 +DE065700DD065600DD075600DD075500DD075500DD075500DD077007000071 +0700007108000072080000730800007309000074090000740A0000750A0000 +750A0000730800006D0300066C0107096C00110A6E001B097000240A6B002E +0E630039105C00460F5900540F560064105300740F5000860E4E009F0D4C00 +CF0C4B00DA0D4A00D90D4900D80E4800D80E4800D70E4700D70E4700D70E47 +00D70E720800007309000074090000740A0000750A0000750B0000760B0000 +770B0000770C0000780C0000760A0000710500056E0105096D000E0B620016 +0F5A001E12540026154D00311648003D1646004C1745005D1942006D183E00 +80163C0098143C00C2133B00CF143900CE143800CD143700CC153600CC1536 +00CC153600CB153600CB15750A0000750B0000760B0000770C0000770C0000 +780C0000790D0000790D00007A0E00007A0E0000780C000074070004680402 +0B5A0005144F000E174600161940001E1C3A00271D3500321D3100411E2F00 +53202C0064202A00771E29008F1C2800B51B2700C51A2600C51B2500C51B24 +00C41B2400C41C2300C41C2300C41C2300C41C770C0000780C0000790D0000 +7A0D00007A0E00007B0E00007B0F00007B0F00007C0F00007C100000780F00 +006B0D00025D0A000B4D0500163E02051D31000C212900152325001F252200 +2A281E0037291A00472B1800582B17006C2A170085271700A9241600BE2314 +00BD241300BC241300BB251200BB251200BA251200BA251200BA257A0E0000 +7B0E00007B0F00007C1000007C1000007D1000007D1100007D1100007E1200 +00771300006D130000601200015210000A430D00143008001E210405251600 +0A2D120017320D00213608002B380400383A03014B3B0402623605037A3106 +049B2B0604B22A0505B12A0405B02A0405B02A0405B02A0306AF2A0306AF2A +0306AF2A7C1000007D1100007D1100007E1200007E1200007F1300007F1300 +007F140000741500006B16000061160000551600024715000A391300132810 +001D190A01270703003500040F3A00081D39000B2936000D3A33000D4D3000 +0F612F0010772C001095290010B0270010B0260011B1260011B1260012B125 +0012B1250012B1250012B1257E1200007F1300007F14000080140000801500 +00811500007D16000072170000681800005F190000541A0000491A00023C19 +00092E1800122216001B14120024040E0431001215330015202F00172B2A00 +193B28001A4F26001C6326001D7824001E9422001DB420001EB420001EB41F +001EB41F001FB41F001FB41F001FB31F001FB31F8115000081160000821600 +0082170000831700007B1800006F1A0000651B00005A1C0000511C0000491D +00003E1E0002321E0009271E00111D1C00180E1900220218082A001C152800 +1F202300222C2200243D200027501F002A641E002B791D002B931B002AB61A +002AB61A002BB61A002BB619002BB619002CB619002CB619002CB619831800 +00831800008419000084190000791A00006D1C0000601D0000561E00004D1F +0000462000003E210000352300022B2400072225000D182400150B21001D00 +2108220025151F002A201D002E2E1B00313F1A003552180038651800387917 +003692150036B8140036B8140037B8140037B8130037B8130037B8130037B8 +130037B813851A0000851B0000861B0000781D00006A1F00005D2000005221 +000049210000422300003C240000352600002E290001262D00041E2E000A13 +2C00120629011A002C0A1B0032151900382218003B3016003F411300455312 +0047661100467A100044910E0043B90E0043B90D0043B90D0044B90D0044B8 +0D0044B80D0044B80D0044B80D871D0000871E000077200000682200005A22 +00004E230000462400003E26000039280000342900002F2D00002831000022 +350002193600080D3400100132021700390D15004118120046241200493210 +004D420E0053530C0057660B0056790900548F090052B6080052BA080052BA +070053BA070053B9070053B9070053B9070053B90787200000752200006524 +0000562500004B260000422800003B2A0000362C0000312E00002D30000029 +340000233900001C3D0001133E0007073C0010013F06120048100F00501C0D +0054260B00573209005A4106005F5304006365030064780300648D030062AF +020062B9020062B9020062B9010063B8010063B8010063B8010063B8017226 +00006227000053290000482A0000402C0000392E0000333000002F3300002B +35000027380000233C00001D410000174500010E4600070447020D004D090D +00581409005F1F06006328040065330100684100006C520000706300007176 +0000708A00006FAB01006EBD00006EBD00006FBD00006FBD00006FBD00006F +BD00006FBD005F2B0000512C0000462E00003E30000037330000313600002C +380000283B0000253E0000214000001D440000184A0000114E0002084F0008 +0153030A005C0C0800641706006A1E04006E26020071310100743E0000784E +00007C6000007D7200007B8800007BA900007AC400007AC400007BC400007B +C400007BC400007BC400007BC4004E310000443200003C350000353800002F +3B00002A3E000026410000224400001F4700001C490000184E000012530000 +0D570003075A0006015D010900650A08006D140600751C04007A2302007E2D +0000813A0000854A0000895C00008B6E00008986000088A7000089CC000089 +CC000089CC000089CC000089CC000089CC000089CC00423600003A39000033 +3D00002D41000028450000234900001F4C00001C4F00001951000016530000 +15560000125B00000E6000020965000403680007006F060800780E06008016 +0300881D01008E26000093330000974400009A5600009F6900009F8100009D +A400009FD600009FD600009FD600009FD600009FD600009FD600009FD60039 +3F0000324300002B480000264C0000215000001D5400001956000017590000 +17590000175A0000165D0000136300000F6900010B6F000306750005027C01 +0700840605008E0C02009A130000A71C0000B1270000B9380000C14D0000C9 +610000CE790000CE9A0000CAE80000CAEB0000CBEB0000CBEC0000CBEC0000 +CBEC0000CBEC00304A000029500000235400001F5800001A5C0000175F0000 +175F000017600000176100001762000016650000136C0000107300000D7B00 +000A830000078B00000394000101A0020100B1070000CA0E0000E6190000FC +250000FF3F0000FF560000FF6F0000FF8B0000FFE70000FFFF0000FFFF0000 +FFFF0000FFFF0000FFFF0000FFFF0027580000215D00001C61000018640000 +17650000176500001765000017650000176500001765000016680000136F00 +00107600000D7D00000A840000078C000003940001019F020100B0060000C9 +0D0000E4180000FA240000FF3C0000FF540000FF6C0000FF860000FFD20000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF001F6200001A640000 +17650000176500001765000017650000176500001765000017650000176500 +0016680000136E0000107500000D7C00000A840000078B000003940001019E +020100AE060000C80D0000E2170000F8230000FF390000FF520000FF680000 +FF820000FFB30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +00176500001765000016680000136E0000107500000E7C00000B840000078B +000004930001019E020100AD060000C60C0000E0170000F6220000FF360000 +FF4F0000FF640000FF7E0000FF9F0000FFFF0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +001765000017650000176500001765000016670000136E0000117500000E7C +00000B830000088B000004930001019D010100AC050000C50B0000DE160000 +F4210000FF330000FF4D0000FF610000FF7B0000FF910000FFE60000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<53000600530006005300060054000500540005005500050055000500560004 +0056000400560004005700050056000C005600140058001C005A0025005D00 +2F0060003A0063004700660054006800620069007100680080006800910069 +00AB006B00DA006B00DA006B00DA006B00DA006B00DA006B00DA006B00DA00 +6B00DA006B00DA005400050054000500540005005500050055000400560004 +00560004005700040057000400580003005800040057000C00570014005900 +1C005B0024005E002E0061003A006400460067005400690062006900700069 +008000690091006900AA006C00DD006C00DD006C00DD006C00DD006C00DD00 +6C00DD006C00DD006C00DD006C00DD00550005005500050056000400560004 +00570004005700040058000300580003005800030059000300590003005900 +0B00590013005A001C005C0024005F002E006200390065004600680053006A +0061006A0070006A007F006A0090006B00AA006D00DE006E00E0006E00E000 +6E00E0006E00E0006E00E0006E00E0006E00E0006E00E00056000400560004 +005700040057000300580003005800030059000300590002005A0002005A00 +02005A0003005A000A005A0013005B001B005D00240060002D006300390066 +004500690052006B0060006B006F006B007F006B0090006C00A9006E00DE00 +6F00E3006F00E3006F00E3006F00E3006F00E3006F00E3006F00E3006F00E3 +0057000300580003005800030059000300590002005A0002005A0002005B00 +02005B0001005B0001005C0002005C000A005B0012005C001A005F00230061 +002C0064003800670045006A0052006C0060006C006E006C007E006C008F00 +6D00A9006F00DD007000E5007000E5007000E6007000E6007000E6007000E6 +007000E6007000E60059000300590003005A0002005A0002005B0002005B00 +01005C0001005C0001005D0001005D0001005D0001005D0009005D0011015E +001A016000220163002B0066003700680044006B0051006D005F006D006E00 +6D007E006D008F006E00A7007000DC007100E8007100E8007100E8007100E8 +007200E8007200E8007200E8007200E8005A0002005A0002005B0001005C00 +01005C0001005D0001005E0001005E0101005F01010060010100600101005E +0007015E0010015F0018016100210164002A0167003600690043006C005000 +6E005E006E006D006E007D006E008E006F00A7007100DC007300EB007300EB +007300EB007300EB007300EB007300EB007300EB007300EB005C0001005C00 +01005D0001005E0001005F0101005F01010060010100610100006102000062 +020000620200006000060160000E0260001702620020016600290168003500 +6B0042006D004F006F005D006F006C006F007C0070008D007000A6007300DB +007400EE007400EE007400EF007400EF007500EF007500EF007500EF007500 +EF005E0101005F010100600101006001010061020000620200006302000064 +0200006402000065030000650300006100040261000D026200160364001F02 +670028016A0034006C0040006F004E0070005C0071006B0070007B0071008C +007100A5007400D9007200ED007000EC006F00EA006E00E9006D00E9006C00 +E8006C00E8006C00E800610200006102000062020000630200006402000065 +03000066030000670300006703000068030000680300006300030363000B03 +6400150366001E03690027026C0032016E003F0070004C0072005A006F0068 +006B0077006800870065009D006400C6006200DE006000DC005E00DA005D00 +D9005D00D9005C00D8005C00D8005C00D80064020000650300006603000066 +0300006703000068040000690400006A0400006A0400006B0400006B040000 +6500010365000A046600130467001D036A0026026E0031016D003D01680048 +0464005505600062055E0071045A008204570096035500B8025300D2025200 +D2035100D2035000D1034F00D1044F00D1044F00D1044F00D1046803000068 +030000690400006A0400006B0400006C0500006C0500006D0500006E050000 +6F0500006F06000068010003670008056700110569001B056600230760002B +0B5A00350D5400410D51004E0D50005E0D4E006E0D4B007E0C4800920A4700 +B4094600CF094400CE0A4300CE0A4300CD0A4200CD0A4100CC0B4100CC0B41 +00CC0B6B0400006B0500006D0500006E0500006E0500006F06000070060000 +700700007107000071070000710800006B0300026901060664000D095A0015 +0D52001C0F4C00231247002D1342003814400046153F0058163D0067163900 +781437008D123700AB103600C6103400C5103300C5103200C4113100C41131 +00C3113000C3113000C3116F0600006F060000700600007007000071070000 +7208000072080000730900007309000074090000740A00006E060002610402 +075300051149000D14410014163A001C183500251A31002E1A2C003C1B2A00 +4C1C28005D1C26006F1B250084192500A2182500BF172300BE172200BE1822 +00BE182100BE182100BE182000BD182000BD18720800007208000072080000 +7309000074090000740A0000750A0000760B0000760B0000770B0000710D00 +00640B000056090007470400133902051A2D000C1D2600151F22001D201F00 +28231C00342518004326160054261500652614007A24150098211400B71F13 +00B6201200B6201100B5201100B5211000B4211000B4211000B421740A0000 +750A0000750B0000760B0000770C0000770C0000780C0000790D0000780D00 +006F0F0000661000005A1000004D0E00073E0C00122C07001C1E0305221400 +0A281000152C0B00203007012932030035340101463502025B310304712C05 +058D270504AD250405AC250405AC250305AB250306AB250206AB250206AB25 +0206AB25780C0000780C0000790D0000790D00007A0E00007B0E00007B0F00 +00761000006C110000621300005A1400004F1400004213000734120011250E +001A160901230602002F00040E3300091D31000C282F000E362C000E482900 +0F5B280010702700118A240010AC220010AC210011AC210011AC200012AC20 +0012AC200012AC200012AC207B0F00007B0F00007B0F00007C1000007C1000 +007D11000074120000691400005F150000561600004E170000441700003717 +00072B1600101F14001812100021020D042C0011142C00141F280016292400 +18382200194921001B5C20001C701F001C871D001CAC1B001CAC1B001DAC1A +001DAC1A001EAC1A001EAC1A001EAC1A001EAC1A7D1100007D1100007E1200 +007E1200007F13000072150000671600005C170000521800004A190000431A +0000391B00002E1B0006241B000E1A1A00150C17001F01160826001A152200 +1D1F1F00202A1D00223A1B00244B1A00275D1A00287019002887170027AB16 +0028AE150028AE150028AE150029AE140029AE140029AE140029AE14801400 +008014000080150000801500007217000065190000581A00004E1B0000461C +00003F1D0000391E000030200000282100041F22000B16210012091E001A00 +1F091D0023141B00271E19002B2B17002E3B1500324D1400355F1300367112 +003486100033A80F0033B00F0033B00F0033B00E0034B00E0034B00E0034B0 +0E0034B00E82170000821700007F180000701A0000611B0000541C00004A1D +0000421E00003B20000035210000302300002A260000232900011B2A000711 +2800100425011700290A16002F15140034201300372D11003A3C0E003E4E0D +0042600C0043720B00418609003EA408003EB108003FB008003FB008003FB0 +07003FB0070040B0070040B007831A00007F1A00006E1C00005E1E0000511F +0000472000003E21000037230000322500002E2700002A290000252D00001E +300000163100060B2F000E012E031400360D11003D180E0041230D00442E0B +00473D09004B4E07005060050051720400508403004E9F02004DB102004DB0 +02004DB002004EB001004EB001004EB001004EB001711F00006C1F00005C21 +00004E220000442300003B250000342700002F2900002B2C0000282E000025 +3000001F34000019380000113900050537000E003A070E0043110B004A1B08 +004E250500512F0400523C0100574D00005B5F00005D7100005C8300005A9B +010059B3010059B3010059B3010059B3010059B3010059B3010059B3015D23 +0000592400004B2500004127000039290000322C00002D2E00002931000025 +340000223600001F3800001A3C0000143F00000B4000060140020B00480B08 +0050140600561C0400592403005B2E02005C3A0100604A0000655C0000676E +000067810000669A010064B8000064B8000064B8000064B8000064B8000064 +B8000064B8004C280000492900003F2B0000372E0000303100002B34000027 +370000233900001F3C00001C3E0000193F0000144400000E47000108480005 +024A02090050090900581207005F1B050064230400662C0200683800006B47 +000070590000736B0000737E00007298010070BE000070BE000070BE000071 +BE000071BE000071BE000071BE003F2F00003D2F0000353200002F36000029 +3A0000243D0000204000001D420000194500001647000015480000134C0000 +0F4F00010952000403530108005906090061100700691A06006F2103007329 +010076350000794400007D55000080670000807C00007E9700007EC600007E +C600007EC600007EC600007EC600007EC600007EC60036370000343800002D +3C000027400000224300001E4700001A4A0000174D0000164E0000164E0000 +164F000014530000105800010B5C0003055F000701630309006B0C07007416 +06007B1C02008124010085300000893F00008C50000090620000917700008F +9400008FC5000090D0000090D0000090D0000090D0000090D0000090D0002D +4100002B42000025470000204B00001C4F0000185200001653000017540000 +175500001756000017560000145B0000116100010D660002086B0005037001 +070078050700800E04008A140100931C00009A270000A0350000A5480000AA +5C0000AF710000AE8D0000ADBF0000AFDC0000AFDD0000AFDD0000AFDD0000 +AFDD0000AFDD00254E0000234F00001E5300001957000017590000175B0000 +175B0000175C0000175D0000175E0000175E000015640000126A00000E7100 +010B780002077F000302860005008F0303009C080100AE0F0000C1180000D6 +240000E3370000ED4F0000F8650000FA820000FCBA0000EFFF0000F0FF0000 +F0FF0000F0FF0000F1FF0000F1FF001D5B00001C5C0000175F000017610000 +17620000176300001764000017650000176500001765000017650000156A00 +00127100000F7800000C7F000009870000068F00000298000200A5030000BA +090000D4120000EE1D0000FF2D0000FF490000FF5F0000FF7C0000FFA50000 +FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF001765000017650000 +17650000176500001765000017650000176500001765000017650000176500 +0017650000156A0000127100000F7800000C7F000009870000068E00000297 +000200A4030000B8080000D2110000EC1C0000FF2B0000FF470000FF5C0000 +FF780000FF950000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +00176500001765000017650000156A0000127100000F7800000C7F00000986 +0000068E00000297000200A3030100B7080000D0110000EA1C0000FF280000 +FF440000FF5A0000FF730000FF8D0000FFE70000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +001765000017650000176500001765000017650000156A0000127100000F78 +00000D7F00000A860000068E00000296000200A2030100B5080000CF100000 +E91B0000FF260000FF410000FF570000FF6E0000FF870000FFCC0000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<4C0009004C0009004D0009004D0008004E0008004E0008004E0008004F0008 +004F000800500008005000070050000B005000130050001A00530022005500 +2B00580036005A0042005F004F0062005D0064006B0063007A0062008A0062 +009E006300BE006300CA006300CA006300CA006300CA006300CA006300CA00 +6300CA006300CA004D0008004D0008004E0008004E0008004F0008004F0008 +00500008005000070050000700510007005100070051000B00510012005100 +1A005300210056002A00590035005C00410060004E0063005C0065006B0064 +007A006300890063009D006400BE006500CC006500CC006500CC006500CC00 +6500CD006500CD006500CD006500CD004F0008004F0008004F0008004F0008 +00500007005000070051000700510007005200070052000600520006005200 +0A0052001200520019005400210057002A005A0035005D00410061004E0064 +005C0065006A00650079006400890064009D006500BF006600CF006600CF00 +6600CF006600CF006600CF006600CF006600CF006600CF0050000700500007 +00500007005100070051000700520007005200060052000600530006005300 +06005400060054000900530011005400190056002000590029005B0034005E +00400062004D0065005B0066006900660079006500880065009D006600BF00 +6700D2006700D2006800D2006800D2006800D3006800D3006800D3006800D3 +00510007005100070051000700520006005200060053000600530006005400 +0500540005005500050055000500550008005500100055001800570020005A +0029005D0033005F00400063004D0066005A00670069006700780067008800 +67009C006800BF006900D6006900D6006900D6006900D6006900D6006900D6 +006900D6006900D60053000600530006005300060053000600540005005400 +050055000500550005005600040056000400560004005700080056000F0057 +00170058001F005B0028005E00330061003F0064004C006700590068006800 +680078006800870068009B006900BE006B00DA006B00DA006B00DA006B00DA +006B00DA006B00DA006B00DA006B00DA005400050054000500540005005500 +05005600040056000400560004005700040057000300580003005800030058 +00070058000F00580017005A001F005D0028005F00320062003E0065004B00 +690059006A006700690077006900870069009B006A00BE006D00DE006D00DE +006D00DE006D00DE006D00DE006D00DE006D00DE006D00DE00560004005600 +04005600040057000400570003005800030058000300590003005900020059 +0002005A0002005A0006005A000E005A0016005B001E005E00270061003100 +64003E0067004A006A0058006B0066006B0076006A0086006B009A006C00BE +006F00E2006F00E2006F00E2006F00E3006F00E3006F00E3006F00E3006F00 +E30058000300580003005800030059000300590002005A0002005A0002005B +0002005B0001005B0001005C0001005C0004005C000D005C0015005D001D00 +600026006300300066003D00680049006B0057006C0065006C0075006C0085 +006A0098006900BA006700DD006500DC006400DC006300DB006200DB006100 +DA006000D9006000D9005A0002005A0002005A0002005B0002005B0001005C +0001005C0001005D0001005D0001005E0001005E0101005E0003015E000B01 +5E0014015F001C016100250164002F0067003B006A0048006B005500680062 +006400700060007F005D0092005B00AF005900D3005700D2005600D1005500 +D1005500D0005400CF005400CF005300CF005C0001005C0001005C0001005D +0001005E0001005E0101005F01010060010100610101006101000062020000 +60000101600009025F00120261001B026300240166002D01630038025E0043 +045B004F0459005D0456006B0353007B0350008C024E00A6014D00CB014B00 +CA024A00CA024900C9024900C9024800C9024800C8024800C8025F0101005F +0101005F010100600101006101000062020000630200006302000064020000 +6503000065030000630100016200070262001003620019035C002005570027 +085100300B4C003B0C4900480B4900580C4800670B4500770A420089084100 +A2074000C6063F00C6063E00C5063D00C5073C00C4073C00C4073B00C4073B +00C30762020000620200006302000064020000650300006503000066030000 +6703000068030000680400006904000067020001640005035B000C06520013 +0A4B00190C4500200E400028103C0033113900401139005113370061123400 +70113200830F31009B0D3200BF0C3000BE0C2F00BE0D2E00BD0D2D00BD0D2D +00BD0D2C00BD0D2C00BD0D6603000066030000670300006803000069040000 +690400006A0400006B0400006C0500006D0500006D05000066040001590302 +044D00050E43000C113B00131335001A15300022172C002B17280036172600 +4719240057192300681822007B16210093152200B9132100B9142000B8141F +00B8141F00B8151E00B8151E00B7151E00B7156A0400006A0400006B040000 +6C0500006D0500006E0500006F0600006F0600007006000070070000670900 +005D09000050080004420400103402041628000A1A2200131B1F001C1D1C00 +25201900302116003F2213004F2212005F221100722111008A1E1200B01B11 +00B01C1000B01C0F00AF1D0F00AE1D0E00AE1D0E00AE1D0E00AE1D6F060000 +6F0600006F06000070060000700700007107000072080000720800006E0A00 +00640B00005C0D0000530E0000470D0004390B000F290700181C03041E1200 +0A240E0014270A011E2A0601272C0201322D0101422E0103552B02046A2803 +0582230404A3200305A7200305A7200206A6200206A6200206A6200106A620 +0106A6207208000072080000720800007309000074090000740A0000750A00 +006C0C0000620E0000590F000051110000491100003D1100043010000E220D +00171408001F0502002900040E2C00091C2A000C2628000E3425000E442300 +0F56220010682100117F1F00109E1D0010A61C0011A61C0011A61C0012A61B +0012A61B0012A61B0012A61B750A0000750A0000760B0000770B0000770C00 +00770C00006B0F000060100000561200004E130000471400003E1500003315 +00032715000D1C120015100F001D020C04260010132500131E220016281F00 +17351D0019451C001A561B001B691B001C7E19001B9917001BA616001CA616 +001CA615001DA515001DA515001DA515001DA515790D0000790D00007A0D00 +007A0E0000770F0000691100005D130000531400004A150000421600003B17 +0000341800002A1900032119000B181800130B15001B001508210019141D00 +1C1D1A001E28180021371700234716002558150026691400267D1300269711 +0026A7100026A7100026A7100026A7100027A70F0027A70F0027A70F7C1000 +007C1000007C10000076120000681400005B1500004F170000461800003E19 +0000371A0000311B00002B1D0000241F00021D200008141F000F071C001700 +1E09190021131600251D1400282913002B3811002E480F0031580E0032690D +00327D0C0030950B002FA80A0030A80A0030A8090030A8090030A8090030A8 +090031A8097F1300007F1300007514000066160000581800004C190000431A +00003A1C0000331D00002E1F00002A2000002622000020250000192700050F +25000D0223011400260A12002C151000301F0F00342B0C0036390A003A4908 +003D5A07003E6B06003E7C05003B9303003AA903003BA802003BA802003BA8 +02003BA802003BA802003CA8016E1800006E18000065190000551A0000491C +00003F1D0000371F0000302000002B2200002824000025260000212900001B +2C0000142D0003092B000B002B031000320E0C0039180A003C2208003F2C05 +00423903004549020048590100496A0100497C00004691000044AB000044AB +000044AB000044AB000044AB000045AB000045AB005B1D00005B1D0000521D +0000461E00003C200000342200002E2500002927000026290000222C00001F +2E00001C300000163300000E3400030433010A0037080A003F120600431A05 +0046220400472A0300493702004C4602005058010052690000527B0000508F +00004EAF00004EAF00004EAF00004EAF00004EAF00004EAF00004EAF004A21 +00004A2100004322000039240000322600002C290000272C0000232F000020 +3100001D3300001A35000016370000103A0000093A00030139000A003E0709 +00451007004B1905004F210400502903005234020054430100595500005D67 +00005D7900005C8D010059B3010059B3010059B3010059B3010059B301005A +B301005AB3013C2700003C27000037280000302B00002A2F00002532000021 +3500001D3700001A390000173B0000143C0000133D0000104000000B410002 +034000090045050A004D0E070054170600591F04005B2803005D3202005F40 +0000645100006864000069760000688C010066B1000065B8000066B9000066 +B9000066B9000066B9000066B900322F0000322F00002E3100002834000023 +3800001F3B00001B3D0000173F000015410000154200001543000014440000 +114700000C4A0002054A0007014E040900550B08005D150600641E04006826 +03006A3001006C3D0000714E000075600000767300007589000074AE010073 +C0000074C0000074C0000074C0000074C0000074C0002A3800002A38000027 +3A0000213E00001D4100001844000015470000154800001548000015490000 +164A0000154B0000125000000E5300020856000501580109005F0909006813 +07006F1C050075230200792C00007C3900007F4A0000845B0000856F000084 +87000083AC000083C9000083C9000083C9000083C9000084C9000084C90022 +430000224300001F4500001A490000164D0000164E0000164F0000164F0000 +16500000165100001651000016530000135800000F5D00010A620004046500 +07016C050800740D07007C160400841D01008A2500008E3200009243000096 +5500009B6900009A82000098A900009AD400009AD400009AD400009AD40000 +9AD400009AD4001B4F00001B4F000018510000165400001755000017560000 +17570000175700001758000017590000175A0000175B000014620000106700 +010C6E000208740004037A000600810406008B0B030097110000A4190000AF +250000B7350000BF4A0000C8600000CD790000CC9F0000C9EA0000CAEB0000 +CAEB0000CAEB0000CBEB0000CBEC00175B0000175B0000175B0000175C0000 +175D0000175E0000175F000017600000176100001762000017630000176400 +00146B0000117300000E7A00000B820000088A000004920001019C010100AC +050000C60B0000E1170000F8230000FF3B0000FF540000FF6F0000FF8D0000 +FFFB0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF001763000017630000 +17640000176500001765000017650000176500001765000017650000176500 +001765000017660000146D0000117400000E7B00000B820000088A00000492 +0001019C010100AB050000C40B0000DE160000F6220000FF380000FF520000 +FF6B0000FF870000FFE30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +0017650000176500001765000017660000146C0000117300000E7A00000B82 +00000889000004910001019B010200A9050000C20B0000DC150000F4210000 +FF350000FF4F0000FF670000FF820000FFC20000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017660000146C00001173 +00000E7A00000B8100000889000005910001019B010200A8040000C00A0000 +DA140000F2200000FF320000FF4D0000FF630000FF7E0000FFA60000FFFF00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<46000B0046000B0046000B0046000B0047000B0047000B0048000A0048000A +0049000A0049000A0049000A0049000A0049001000490017004B001E004E00 +26005000300053003C00570049005B0057005D0066005E0075005D0083005C +0094005C00AC005D00BF005D00BF005D00BF005D00BF005D00BF005D00BF00 +5D00BF005D00BF0047000B0047000B0047000B0048000B0048000A0048000A +0049000A0049000A004A000A004A000A004A000A004B0009004A0010004A00 +16004C001E004F0026005100300054003C00580049005C0057005E0065005F +0074005E0083005D0094005D00AC005E00C1005E00C1005E00C1005E00C100 +5E00C1005E00C1005E00C1005E00C10048000A0048000A0048000A0049000A +0049000A004A000A004A000A004A0009004B0009004B0009004C0009004C00 +09004B000F004C0016004D001D005000250053002F0055003B00590048005D +0056005F006400600073005F0082005E0093005E00AC005F00C2005F00C200 +5F00C2005F00C2005F00C2005F00C3005F00C3005F00C3004A000A004A000A +004A000A004A000A004B0009004B0009004B0009004C0009004C0009004D00 +09004D0009004D0008004D000F004D0016004E001D005100250054002F0056 +003B005A0048005E0056006000640061007300600082005F0093006000AB00 +6000C4006000C4006000C4006000C4006000C4006000C4006000C4006000C4 +004B0009004B0009004B0009004B0009004C0009004C0009004D0009004D00 +08004E0008004E0008004E0008004F0008004E000E004E00160050001D0052 +00250055002F0058003B005B0047005F005500620063006200720062008100 +610092006100AB006200C6006200C7006200C7006200C7006200C7006200C7 +006200C7006200C7004C0009004C0009004C0009004D0009004D0008004E00 +08004E0008004F0008004F0008004F000800500007005000070050000E0050 +00150051001D005400250057002E0059003A005C0047006000540063006200 +6300710063008100620091006300AB006300CA006300CA006400CA006400CA +006400CA006400CA006400CA006400CA004E0008004E0008004E0008004E00 +08004F0008004F000800500007005000070051000700510007005100070052 +00070051000D005100140053001C005500240058002E005B0039005E004600 +61005300640062006500700064008000640091006400AB006500CE006500CE +006500CE006500CE006500CE006500CE006500CE006600CE00500007005000 +07005000070050000700510007005100070052000700520006005200060053 +000600530006005400060053000C005300140054001B00570024005A002D00 +5C0039005F00450063005300650061006600700066007F00650090006600AA +006700D2006700D2006700D2006600D2006500D2006500D1006400D0006300 +D0005200070052000700520007005200060053000600530006005300060054 +0005005400050055000500550005005500040055000B005500130056001B00 +580023005B002C005E00380061004400640052006700600068006F0065007E +0062008E005F00A6005D00CF005B00CE005A00CF005900CE005800CE005800 +CD005700CD005700CD00530006005300060053000600540005005400050055 +00050055000400560004005600040057000400570004005800030057000A00 +5700120058001A005A0022005D002C00600037006300440061004F005F005C +005C006A00590079005600890053009F005100CA005000CA004F00CA004E00 +C9004D00C8004C00C8004C00C8004C00C70056000400560004005600040056 +00040057000400570004005800030058000300590003005900030059000200 +5A0002005A000900590011005A0019005C0021005D002A005800320254003D +0451004904500056034F0065024D0075024A008401470099014600C0004500 +C2004400C2004300C1004300C1004200C0004200C0004100C0005800030058 +000300580003005800030059000300590002005A0002005B0002005B000100 +5B0001005C0001005C0001005C0007005C0010005900170153001D044E0023 +0649002B094400350A4200420A4100500A410061093F0071083C0081073A00 +95053A00B9033A00BF033900BE043700BE043700BD043600BD053600BD0535 +00BD055A0002005A0002005A0002005B0002005B0001005C0001005D000100 +5D0001005E0101005F0101005F010100600101005C00050153000B054B0011 +084400170A3E001D0C3A00240E35002E0F32003A0F3100490F300059102E00 +690F2C007B0D2C00900B2D00B1092C00B9092A00B90A2A00B80A2900B80A28 +00B80A2800B80B2800B70B5D0001005D0001005D0001005E0101005F010100 +6001010061010100610200006202000063020000630200005C030000520301 +024700040B3D000A0E350011112F0018122A001F1428002815240033152100 +4115200051161F0061161E0073141E0088121F00A7101E00B4101D00B3111D +00B3111C00B3111B00B2121B00B2121B00B212610200006102000061020000 +620200006302000064020000650300006603000066030000630400005B0600 +00550700004A0700023C04000D2F02041325000A17200012181C001A1B1A00 +241C17002D1E13003B1E10004A1F0F00591F0E006A1E0F007F1B10009C190F +00AB180E00AA190D00A9190D00A9190C00A8190C00A8190C00A81A66030000 +66030000660300006703000068030000690400006A0400006A040000620600 +005A080000520A00004C0B0000420B0002340A000C250600161A02041B1100 +09200C00132309011D25060226260202302700023E27000350260104632402 +0679200305931D0305A31C0205A31C0206A21C0106A21C0106A21C0106A21C +0107A21C6B0400006B0400006B0400006C0500006D0500006E0500006D0600 +0061080000580B0000500C0000490E0000420F0000381000022C0F000B1F0C +00141207001C0402002400050E2600091B24000C2522000E311F000F401E00 +0F501D0010621C0011771B001190190010A2180011A2180011A2170012A217 +0012A1170012A1170012A1176F0600006F0600006F06000070070000710700 +006C090000600B0000560D00004D0F0000451000003E120000371300002E13 +00012413000A1A1100130E0E001A010B04220010132000131D1D0015261A00 +1632180018411700195117001A6216001B7515001B8C12001BA012001BA011 +001BA011001CA011001CA011001CA010001CA0107309000073090000730900 +00740A00006B0C00005E0E0000531000004A110000411300003A1400003315 +00002D160000261700021E17000916160010091400190014081C0018131900 +1A1C16001D2614001F34120021431100235210002462100025750E00248A0C +0024A10C0024A10B0024A10B0025A10B0025A10A0025A10A0025A10A770C00 +00770C0000770C00006B0E00005D10000051120000471400003E1500003516 +00002F1800002A190000261A0000211C00011A1D0005111D000D051A001500 +1C0914001F121200221B100026270E0029350C002B440A002D5309002F6308 +002F7407002E8906002CA105002DA104002DA104002DA104002DA103002DA1 +03002EA1036911000069110000691100005B1300004E150000431600003A18 +0000321900002B1B0000271C0000241E0000212000001D220000162400020C +22000A0221021000240A0E0029140B002D1E0A003029070033360500364503 +003853020039630200397402003687010034A3000034A3000034A3000034A3 +000034A3000034A3000034A3005816000058160000581600004C1700004019 +0000371A00002F1C0000291E00002520000022220000202400001D26000018 +28000011290002072800090029040B00300E070034180500361F0500382804 +003A3403003C4202003E52020040620200407301003E8601003BA500003BA7 +00003BA700003BA700003BA700003BA700003BA700481A0000481A0000481A +00003E1C0000341E00002D2000002822000024250000202700001D2900001A +2B0000172C0000122E00000B2F0002042F01070030060900350E07003A1605 +003D1E05003E26040040310300424003004650020048610100497201004785 +000044A3000044AB000044AB000044AB000044AB000044AB000044AB003A1F +00003A1F00003A1F0000312100002B24000026270000222A00001E2C00001A +2E0000173000001431000012320000103400000C350002053400070035040A +003A0C080041150500451D040046250400482F03004A3D02004E4D0100525F +010053710000528400004FA000004EAF00004EAF00004EAF00004EAF00004E +AF00004FAF002F2600002F2600002F26000029290000242D0000203000001C +3200001834000014360000133700001337000013380000113900000D3B0001 +063A0006003B030A00410A0800491306004E1C040051230300522D03005439 +0200574A00005C5D00005E6F00005E8200005C9D01005BB401005BB401005B +B401005BB401005BB401005BB401282F0000282F0000282F0000233200001E +35000019380000153A0000143B0000143C0000143D0000143D0000143E0000 +124000000E420001094300040143010A004908090051110700581A05005C22 +04005E2B02006037010063470000685900006B6C00006B8000006A9B010068 +BA000068BA000069BA000069BA000069BA000069BA00203900002039000020 +3900001C3C0000173E00001440000015410000154200001543000015440000 +154400001545000013470000104B00010A4D0003044E000800530509005B0E +070063180600692004006D2902006F34010072430000775500007A6800007A +7D0000799A000078C2000078C2000078C2000078C2000078C3000078C30019 +430000194300001943000015460000154700001548000015490000164A0000 +164B0000164C0000164C0000164D000014500000115500010C590003065B00 +06005E020900670A08006F150600771C03007C240100802F0000843E000087 +4F00008B6200008C7800008A9800008ACD00008BCD00008BCD00008BCD0000 +8BCD00008BCD00164E0000164E0000164E0000164F00001650000016510000 +16510000165200001653000017540000175500001756000015590000125F00 +000E64000209690004046D000700740408007D0C050086140200901C000097 +2600009C340000A2460000A65B0000AC710000AA900000AACE0000ACDB0000 +ACDB0000ACDB0000ACDB0000ACDB0017560000175600001756000017570000 +17590000175A0000175B0000175C0000175D0000175D0000175E0000175F00 +0016620000136900000F7000010C770001087E000204850004018F0203009A +060100AC0C0000C2150000D9200000ED310000F64C0000FC640000FE830000 +FED30000F7FF0000F7FF0000F8FF0000F8FF0000F8FF001760000017600000 +17600000176100001762000017630000176400001765000017650000176500 +00176500001765000016680000136F0000107600000D7D00000A850000078D +00000395000100A1020100B4080000CF100000EA1B0000FF290000FF470000 +FF5E0000FF7D0000FFB20000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +001765000017650000176500001765000016680000136F0000107600000D7D +00000A850000078C00000395000101A1020100B3070000CD0F0000E81A0000 +FF270000FF440000FF5B0000FF780000FF9C0000FFFF0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +0017650000176500001765000017650000176500001765000016680000136F +0000107600000D7D00000A840000078C00000394000101A0020100B1070000 +CB0E0000E6190000FD260000FF400000FF580000FF720000FF8F0000FFF900 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3F000C003F000C003F000C003F000C0040000C0040000C0041000C0041000C +0041000C0042000C0042000C0042000C0043000E004200140044001A004600 +210049002A004B0036004F004300540052005700610058006F0057007E0056 +008D0056009F005700B6005700B7005700B7005700B7005700B7005700B700 +5700B7005700B70040000C0040000C0040000C0041000C0041000C0041000C +0042000C0042000C0043000C0043000C0043000C0044000C0044000D004400 +140045001A00470021004A002A004C00360050004300540051005800600059 +006F0059007D0057008C0057009F005800B8005800B8005800B8005800B800 +5800B8005800B8005800B8005800B80042000C0042000C0042000C0042000C +0042000C0043000C0043000C0044000C0044000C0045000B0045000B004500 +0B0045000D004500140046001A00480021004B002A004D0035005100420055 +00510059005F005A006E005A007D0059008C0058009F005900B9005900B900 +5900BA005900BA005900BA005900BA005900BA005900BA0043000C0043000C +0043000C0043000C0044000C0044000B0045000B0045000B0046000B004600 +0B0046000B0047000B0047000D004600130047001A004A0021004C002A004F +00350052004200560050005A005F005C006D005B007C005A008B0059009E00 +5A00BB005A00BB005A00BB005A00BB005A00BB005A00BB005A00BB005A00BB +0045000B0045000B0045000B0045000B0045000B0046000B0046000B004700 +0B0047000B0047000B0048000A0048000A0048000C0048001300490019004B +0021004E002A00500035005300410058004F005B005E005D006C005C007B00 +5B008B005B009E005B00BB005C00BD005C00BD005C00BD005C00BD005C00BD +005C00BD005C00BD0046000B0046000B0046000B0046000B0047000B004700 +0B0048000A0048000A0049000A0049000A0049000A004A000A004A000C0049 +0012004A0019004C0020004F002900510034005500410059004F005C005D00 +5E006C005E007B005D008A005C009E005D00BB005D00BF005D00BF005D00C0 +005D00C0005D00C0005D00C0005D00C00048000A0048000A0048000A004800 +0A0049000A0049000A0049000A004A000A004A000A004B0009004B0009004B +0009004B000B004B0012004C0019004E002000510029005300340056004000 +5A004E005E005C0060006B005F007A005E0089005E009E005E00BB005F00C2 +005F00C2005F00C2005F00C2005F00C2005F00C2005F00C2004A000A004A00 +0A004A000A004A000A004A000A004B0009004B0009004C0009004C0009004C +0009004D0009004D0008004D000A004D0011004D0018004F00200052002900 +55003400570040005C004D005F005B0061006A0061007900600089005F009D +006000BC005E00C3005D00C3005C00C3005B00C3005A00C3005900C2005900 +C2004C0009004C0009004C0009004C0009004C0009004D0009004D0008004E +0008004E0008004E0008004F0008004F0008004F0009004F0011004F001800 +51002000540028005700330059003F005D004C0061005A00610068005D0077 +005A008600560098005400B7005300C4005100C4005000C3004F00C3004F00 +C3004E00C3004E00C2004D0008004D0008004D0008004E0008004E0008004F +0008004F000800500008005000070050000700510007005100070051000800 +510010005100170053001F00560028005800320058003D0056004900550056 +0054006400520073004F0082004B0094004900B2004800C3004700C3004600 +C2004500C2004500C1004400C1004400C10050000800500008005000080050 +00070050000700510007005100070052000700520006005300060053000600 +530006005300070053000F005300160055001E00520025004E002C024A0036 +0448004203480050024700600245006F0243007E01400090013F00AD003E00 +BF003D00BF003C00BE003C00BE003B00BE003B00BE003B00BE005200060052 +00060052000600520006005300060053000600540006005400050054000500 +5500050055000500560004005600060055000E004F0014014A00190345001F +04410026063C002F083A003C083900490839005A0738006A06360079053400 +8C043400A8023400BB023300BB023200BA023100BA023000BA023000B90330 +00B90354000500540005005400050054000500550005005600040056000400 +5600040057000400570003005800030058000300530003004C00090344000E +063D00140837001A0A3300210B2F002A0C2C00340C2A00420C2900520D2900 +620C2700730B270086092800A1072800B5062700B5062600B4072500B40725 +00B3072500B3072400B3075700040057000400570004005700040058000300 +5800030059000300590002005A0002005A00020058000100510101004C0201 +01410003083700080C2F000F0E2A00161026001D112300261220002F121D00 +3C131C004C131B005B131A006B121A007F101B00980E1C00AF0D1B00AE0D1A +00AD0E1900AD0E1900AD0E1900AD0E1800AC0F5A0002005A0002005A000200 +5A0002005B0002005B0001005C0001005C0001005D00010056010000500300 +004B05000045060000370400092A020310210009141C001016190019181600 +221A13002B1B1000371C0E00451B0C00541C0B00641C0B0076190C008E160D +00A6150C00A5150B00A4150B00A4160A00A3160A00A3160A00A3165D000100 +5D0001005D0001005D0001005E0101005F010100600101005F010000560300 +004F05000049070000430900003C0A00003009000723060012170203180F00 +081C0B00121F07011C210402252201032E2100033B2100044B2000055E1F01 +06711C0106881902059F1801069E1801069E1800069E1800079E1800079E18 +00079D176202000062020000620200006202000063020000640200005F0300 +00550600004E080000460A0000400B0000390D0000330E0000280D00071D0B +0011110700180402001F00050E2100091A1F000C241D000E2E1A000E3D1900 +0F4C1800105D1800116F170011841500109D1400119D1300119D1300129D12 +00129D1200129D1200129D1267030000670300006703000067030000680400 +005F060000550800004C0A0000440C00003C0E0000350F00002F1000002911 +000021110007170F00100C0D0017010B051D000F131C00121B190014241600 +16301400173E1200184D1200195D11001A6E10001A820E001A9B0D001A9B0D +001B9B0C001B9B0C001B9B0C001B9B0C001B9B0C6D0500006D0500006D0500 +006D05000060080000540B00004A0D0000410F000038100000311200002B13 +000026140000231500001C1600061415000D08130015001408180017121500 +191B12001C2410001E310E00203F0C00214E0B00225D0A00236D0900238108 +00229A0700229B0600229B0600239B0600239B0500239A0500239A05620A00 +00620A0000620A00005F0B0000520D0000471000003D110000341300002D14 +00002715000024170000211800001E1A0000181B0002101B00090519011100 +1B0910001E110E00201A0C002426090027340600294105002A4E04002C5D03 +002C6D03002B80020028970200289B0200289B0200289B0200289C0200289C +0200289C0254100000541000005410000051100000451200003A1400003115 +00002A17000025180000211A00001F1C00001C1D0000191F0000142100000B +200007011F020C00220A090026140700291C05002B2604002E3303002F4003 +00304D0200315C0200316C0200307E02002D9601002D9F01002D9F01002D9F +01002D9F01002D9F01002D9F01451400004514000045140000431500003716 +00002E180000281A0000231C0000201E00001D2000001A2200001723000015 +2400000E260000052500060025040900290B07002C1406002E1C0500302404 +0032300300343D0300354B0200375A0200386B0200367D01003495010033A2 +010033A2010033A2010033A2010033A2010033A20137190000371900003719 +0000341900002C1B0000261E0000222000001E2200001B2400001826000014 +27000012290000112900000D2A0000062A0005012A0308002D0A0800311306 +00341B050036230500382D03003A3A03003C4902003E5902003F6A01003E7C +01003C9400003AA600003AA600003AA600003AA600003AA600003AA6002C1E +00002C1E00002C1E00002A1F000025220000212500001C2700001829000015 +2B0000112C0000112D0000112D0000122E00000E2F0000082F0004012E0209 +0032080800371106003B1A05003D2104003F2A030041370300444602004757 +020049690100487B00004592000044AB000044AB000044AB000044AB000044 +AB000044AB00252600002526000025260000242700001F2A00001A2D000016 +2F00001230000012310000123200001232000012330000123300000F350000 +0A3500030234010900370709003E0F07004418050046200400482804004A34 +02004C4302005155010054670000547A0000529001004FAF00004FAF00004F +AF000050AF000050AF000050AF001E2F00001E2F00001E2F00001D30000018 +32000013340000133500001336000013370000133700001338000013380000 +13390000103B00000B3C0002033B0009003E050A00450D08004D160500511E +04005427030055310200573F01005C5100006065000061780000608E01005D +B500005DB500005DB500005DB500005DB500005DB500173800001738000017 +38000016380000143A0000143B0000143C0000143D0000143D0000143E0000 +143F0000143F000014400000114300000D450002064500060148030A004F0A +0800571406005D1D050061250300632F0200643C00006A4D00006E61000070 +7400006F8B00006DB700006DBC00006DBC00006DBC00006DBC00006DBC0014 +40000014400000144000001440000015410000154200001543000015440000 +1545000015460000154700001547000015480000124C00000E500001095200 +0502530109005A070900621107006A1B050070220300732B0000763800007A +4900007F5B0000807000007F8900007EB400007EC600007EC600007EC60000 +7EC600007EC60015490000154900001549000015490000164A0000164B0000 +164C0000164D0000164E0000164F0000164F00001650000016510000145600 +00105B00010B5F0003056300060167030800700C070078150500801C010086 +2500008B3100008F42000093550000976900009684000094B0000096D20000 +96D2000096D2000096D2000096D30016520000165200001652000016520000 +16530000175400001755000017560000175700001758000017590000175A00 +00175B000014600000116600010D6C00020972000304780006008003060089 +0A030094100000A2170000AE230000B7330000BF480000C95F0000CE7A0000 +CCA50000CAEB0000CBEC0000CBEC0000CCEC0000CCEC00175C0000175C0000 +175C0000175C0000175D0000175E0000176000001760000017610000176200 +00176300001764000017650000156B0000127200000F7900000C8000000988 +000005900000019A000200A8040000C00A0000DB150000F5210000FF380000 +FF530000FF6F0000FF900000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00 +17650000176500001765000017650000176500001765000017650000176500 +001765000017650000176500001765000017650000156B0000127200000F79 +00000C80000009880000059000000199000200A7040000BE0A0000D9140000 +F3200000FF340000FF500000FF6A0000FF890000FFF60000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +0017650000176500001765000017650000176500001765000017650000156A +0000127100000F7800000C80000009870000068F00000198000200A6040000 +BC090000D7130000F01F0000FF310000FF4D0000FF660000FF840000FFDC00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003B000D003B000D003B000D003B000D003C0011003C0017003F00 +1D00410025004400300048003D004C004B0050005B0052006A005200780051 +008700500097005000AB005100B1005100B1005100B1005100B1005100B100 +5100B1005100B1003A000D003A000D003A000D003A000D003A000D003A000D +003B000D003B000D003C000D003C000D003C000D003D000D003D000D003D00 +11003E00170040001D004300250045002F0049003D004D004B0051005A0053 +0069005300780052008600510096005100AB005200B2005200B2005200B200 +5200B2005200B2005200B2005200B2003B000D003B000D003B000D003B000D +003B000D003C000D003C000D003D000D003D000D003D000D003E000D003E00 +0D003E000D003E0011003F00170041001D004400250046002F0049003C004E +004A0052005900540068005400770053008600520096005200AB005300B300 +5300B3005300B3005300B3005300B3005300B3005300B3003C000D003C000D +003C000D003C000D003D000D003D000D003E000D003E000D003E000D003F00 +0C003F000C0040000C0040000C00400011004000170042001D004500250047 +002F004B003C004F004A005300590055006800550076005400850053009500 +5400AA005400B4005400B4005400B4005400B4005500B4005500B4005500B4 +003E000D003E000D003E000D003E000D003E000D003F000C003F000C004000 +0C0040000C0040000C0041000C0041000C0041000C00410010004200160044 +001D004600250049002E004C003B0050004900540058005700670057007600 +56008500550095005500AA005600B6005600B6005600B6005600B6005600B6 +005600B6005600B60040000C0040000C0040000C0040000C0040000C004100 +0C0041000C0041000C0042000C0042000C0043000C0043000C0043000C0043 +0010004300160045001D00480024004A002E004D003B005100490055005700 +580066005800750058008400560094005600A9005700B7005700B7005700B7 +005700B7005700B7005700B7005700B70042000C0042000C0042000C004200 +0C0042000C0042000C0043000C0043000C0044000C0044000C0044000B0045 +000B0045000B00450010004500160047001C00490024004C002E004F003A00 +5300480057005600590065005A00740059008300580094005800AA005900B9 +005900B9005900B9005900B9005900B9005900B9005900B90043000C004300 +0C0043000C0043000C0044000C0044000C0045000B0045000B0046000B0046 +000B0046000B0047000B0047000B0047000F004700160048001C004B002400 +4D002E0050003A0054004700580055005B0064005B0073005B008200590093 +005700AA005500BC005400BC005200BC005100BC005100BB005000BB005000 +BB0046000B0046000B0046000B0046000B0046000B0046000B0047000B0047 +000B0048000B0048000A0048000A0049000A0049000A0049000E0049001500 +4A001C004D0024004F002D0052003900550046005800540057006200550071 +00520080004E0090004C00A8004B00BF004900BE004800BE004700BE004700 +BE004600BE004600BE0048000B0048000B0048000B0048000B0048000A0048 +000A0049000A0049000A004A000A004A000A004A000A004B0009004B000900 +4B000E004B0015004C001C004E00230051002D004E0036004C0042004C004F +004B005E004A006D0047007C0044008C004200A4004100C0004000C0003F00 +BF003E00BF003D00BF003D00BF003D00BF004A000A004A000A004A000A004A +000A004A000A004A0009004B0009004B0009004C0009004C0009004D000900 +4D0009004D0008004D000D004D0014004C001B00490020004500260141002F +023F003B023F0048023F0058013E0068013C007800390088003800A0003800 +BE003700BE003600BE003500BE003500BE003400BE003400BD004C0009004C +0009004C0009004C0009004C0009004D0009004D0008004E0008004E000800 +4E0008004F0008004F000800500008004E000C0047001100410016023D001B +033900220535002A06320036053100430531005205300062052E0072042E00 +83022D009B012E00B9002D00B9002C00B8012C00B8012B00B7012B00B7012A +00B7014E0008004E0008004E0008004E0008004F0008004F00080050000700 +50000700510007005100070051000700520007004B000500450007013D000C +0436001107300017082C001E0A2900260A2700300A25003D0A23004C0A2300 +5B0A22006B0922007E07230094052400B2042300B2042200B1042200B10521 +00B0052100B0052100B0055100070051000700510007005100070051000700 +52000600520006005300060053000600540005004F00040049010300440101 +013A0002053100070929000C0C2500140D21001B0F1F0024101D002D101A00 +38111700471116005611160065101600770E17008C0C1900AB0A1800AA0A17 +00AA0B1600A90B1600A90B1600A80B1500A80B540005005400050054000500 +5400050054000500550005005500050056000400550004004D000200470101 +00400300013B040001320400052601020D1E00081119000F13150018161300 +2017100029180D0033190B00401909004E1909015E1808006F17090084140B +00A1110A00A01209009F1209009F1208009E1208009E1307009E1357000400 +570004005700040057000400570004005800030058000300530002004C0201 +00450300003F05000039070000340800002B0800051F05000D160203140E00 +08180900121B06021B1C0403241C01042D1C0005391B0005481A0006591A00 +066A1801077F150106981301069A1300069A1300079A1300079A1300079A13 +000899135A0002005A0002005A0002005A0002005A0002005B000100520100 +004B030000440600003D08000036090000300B00002B0C0000240C00041A0A +000D0F0600140302001A00050E1C0009191A000B2218000D2C16000E391400 +0F4813001057130010691200117C100010940F0010990F0011980E0011980E +0012980D0012980D0012980D5E0101005E0101005E0101005E0101005D0100 +00520300004A060000420800003A0A0000330C00002C0D0000270F00002310 +00001E100003150E000C0B0C0013010B0519000F121700111A140013221200 +152D0F00163B0E0017490D0018570C0019670B00197A0A00198F0800199608 +001A9608001A9607001A9607001A9607001A96075904000059040000590400 +00590400005306000049090000400B0000370D00002F0E0000291000002411 +0000211200001E130000191400041114000907120011001308130016111000 +18190E001A230B001D2F08001E3C07001F4A06002057050021670400217803 +00208C020020960200209602002096020020960200209602002096024E0A00 +004E0A00004E0A00004E0A0000480B00003E0D0000340F00002C1100002612 +0000221400001E1500001B17000019180000151900010D1900060318010D00 +1A080C001C1009001F1907002224040023300300243D030025490300255603 +002566030025770200248C0200239802002398020023980200239802002398 +0200239802410F0000410F0000410F0000410F00003B100000311200002913 +000024150000201700001C180000191A0000171B0000141D0000101E000009 +1E0004011D0208001F090700211106002318060025220500272F0300283B03 +00294703002A5503002A6403002A760200288B0200279B0200279B0200279B +0200279B0200279B0200279B02331300003313000033130000331300002E14 +000026160000221800001E1A00001A1C0000171E0000141F0000122000000F +2100000D220000082200030120010800220807002510060027170600292005 +002C2C03002D3903002E4503002F53030030630200307502002E8901002C9E +01002C9E01002C9E01002C9E01002C9E01002C9E0128180000281800002818 +00002818000025190000201C00001C1E00001920000015220000122300000F +24000010250000102500000E250000092600020224010800260608002A0E06 +002C1706002E1F050031290400323603003443020036520200376202003773 +02003488010032A2010032A2010032A2010032A2010032A2010032A201221E +0000221E0000221E0000221E00001F2000001B220000172400001326000010 +270000102800001028000011290000112900000F2A00000B2A0002042A0107 +002A0509002F0D070033160500351E050037270400393203003A4002003D50 +02003F6102003F7201003D8701003AA600003AA600003AA600003AA600003A +A600003AA6001C2600001C2600001C2600001C260000192700001429000011 +2B0000112B0000112C0000112D0000112D0000112D0000122E0000102F0000 +0C300001062F0006002F030A00340B08003A1405003D1D05003E240400402F +0300423D0300464E020049600100497101004885000044A7000044AB000044 +AB000045AB000045AB000045AB00152E0000152E0000152E0000152E000012 +2F000012300000123000001231000012310000123200001233000012330000 +13340000113500000E360001073600050035020A003A09080042120600461B +0400492304004A2C03004C390200504A0100545D0100567000005584000052 +A4000051B0000052B0000052B0000052B0000052B000133400001334000013 +34000013340000133500001336000013360000133700001338000013380000 +13390000133A0000143A0000133B00000F3E00000A3E0003013D000B004307 +09004B1007005219050055210400572A0300593602005C4601006159000064 +6D00006481000062A0010061B6000061B6000061B6000061B6000061B60014 +3B0000143B0000143B0000143B0000143C0000143D0000143E0000143E0000 +143F00001440000014410000154100001542000014430000104700000C4900 +0204490008004D040900560D08005E1706006320040067280200693301006C +4200007154000074680000747E0000749D010072BF000072BF000072BF0000 +72BF000072BF00154400001544000015440000154400001544000015450000 +15460000154700001548000015490000164A0000164A0000164B0000154D00 +00125100000D55000207580006015A010900620908006B140700731C040078 +2402007C2E00007F3D0000834F000087620000887A0000869C000086CB0000 +86CB000086CB000087CB000087CB00164D0000164D0000164D0000164D0000 +164E0000164F00001650000016510000165200001653000016530000175400 +001755000016570000135D00000F6200010A670004056B000601720308007A +0B0600841302008D1B0000942400009A3200009F450000A45A0000A9710000 +A7940000A9DA0000A9DA0000AADA0000AADA0000AADA001757000017570000 +17570000175700001758000017590000175A0000175B0000175C0000175D00 +00175E0000175F0000176000001761000014680000106F00000D7700010A7E +000205850003018E0104009A040200AB090000C4110000DF1D0000FA2B0000 +FF490000FF620000FF840000FFEB0000FEFF0000FEFF0000FFFF0000FFFF00 +17620000176200001762000017620000176300001764000017650000176500 +00176500001765000017650000176500001765000017660000146D00001174 +00000E7B00000B830000088B000004930001019E020100B0060000CA0E0000 +E7190000FF270000FF450000FF5E0000FF7E0000FFCD0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017650000176500001766 +0000146D0000117400000E7B00000B830000088A000004930001019E010100 +AE060000C80D0000E5180000FC250000FF410000FF5A0000FF790000FFA800 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000E003A0014003B00 +1A003E0020004000290043003600480044004C0053004E0064004F0072004E +0081004D0090004D00A2004E00AE004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0E003A0014003B001A003E0020004000290043003600480044004C0053004E +0063004F0072004E0081004D008F004D00A1004E00AE004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000E003A0014003B001A003E002000400029004300360047 +0043004C0053004E0063004F0072004E0080004D008F004D00A0004E00AE00 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000E003A0014003B001A003E00200040 +00290043003600480043004C0052004F006200500071004F0080004E008E00 +4E00A0004F00AF004F00AF004F00AF004F00AF004F00AF004F00AF004F00AF +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003B000E003B0013003C +0019003F0020004200290045003500490043004D0052005000620051007000 +50007F004F008E004F00A0005000B0005000B0005000B0005000B0005000B0 +005000B0005000B0003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003B000D003B000D003C000D003C000D003C000D003C +000D003C0013003E0019004000200043002800460035004A0042004E005100 +520061005300700052007F0051008E0050009F005100B1005100B1005100B2 +005200B2005200B2005200B2005200B2003B000D003B000D003B000D003B00 +0D003B000D003B000D003C000D003C000D003D000D003D000D003D000D003E +000D003E000D003E000D003E0013003F00190042001F004500280047003400 +4B004100500050005300600054006F0054007E0053008D0052009F005300B3 +005300B3005300B3005300B3005300B3005200B3005100B4003D000D003D00 +0D003D000D003D000D003D000D003D000D003E000D003E000D003F000C003F +000C003F000C0040000C0040000C0040000C00400013004100190044001F00 +46002800490033004D00410051004F0055005F0056006E0054007D0051008B +004E009E004C00B7004B00B8004A00B8004900B7004800B7004700B7004700 +B8003F000C003F000C003F000C003F000C003F000C003F000C0040000C0040 +000C0041000C0041000C0042000C0042000C0042000C0043000C0042001200 +4300190045001F00480028004A0033004E0040004E004D004E005C004D006B +004A007A004700890044009C004300BB004100BB004000BC004000BC003F00 +BC003E00BC003E00BC0041000C0041000C0041000C0041000C0041000C0042 +000C0042000C0043000C0043000C0043000C0044000C0044000C0045000B00 +45000B00440012004500180047001F004700260044002F0043003A00430047 +004300570042006800400077003D0086003A009B003A00BF003900BF003800 +BF003700BF003700BF003600BF003600BF0044000C0044000C0044000C0044 +000C0044000C0044000C0045000B0045000B0045000B0046000B0046000B00 +47000B0047000B0047000B0047001100430017003F001B003C002100380029 +01360035013600420136005101350062013400720032008300310098003100 +BD003000BF003000BF002F00BF002F00BF002E00BF002E00BF0046000B0046 +000B0046000B0046000B0046000B0047000B0047000B0047000B0048000A00 +48000A0049000A0049000A0049000A00460009003F000E0039001302350018 +0331001E042D0026042C0031042A003D0329004C0328005C0327006B032700 +7D02270093012900B5002800BA002700B9002700B9002600B8002600B80025 +00B80049000A0049000A0049000A0049000A0049000A0049000A0049000A00 +4A000A004A000A004B0009004B00090049000800430007003E000500360009 +032F000E052A00140626001C082400240822002D08200038071F0047071D00 +56071D0065071D0076051E008B032000AA021F00B0021F00B0021E00AF021D +00AF021D00AE021D00AE034B0009004B0009004B0009004B0009004B000900 +4C0009004C0009004D0009004D0009004D00080046000600410004003C0003 +01320001032B00050625000B092100120B1D001A0D1B00220E19002B0E1600 +350E1400420E1300510E1200600D1200700C1300830915009D071500A60614 +00A5071400A5071300A4071300A4081300A4084E0008004E0008004E000800 +4E0008004E0008004E0008004F0008004F0008004C000600440004003F0002 +0234000003300200022C040001230102091B00060E17000E10130016121000 +1F140D0027150A00301508003C1506004915050159150501691406007B1108 +00920E08009C0E07009B0E07009B0E06009A0F06009A0F05009A0F51000700 +5100070051000700510007005100070051000700520006004A000400430102 +0139010002330300012F0500002A060000260700001D050009140202100C00 +07150800111704021A180203221801042B1700053616000644150007541400 +0765130007771201068C100006970F0006960F0007960F0007960E0008960E +0008960E540005005400050054000500540005005400050053000400490102 +004102010138040001330600002D07000028090000240A0000210B00001909 +00080E0600100302001600050E1800081916000B2113000D2A11000E370F00 +0F440E000F530E0010630D0010740B0010880A0010940A0010940900119409 +00119308001193080012930850000200500002005000020050000200500002 +00490201003F04000138060000300800002A0A0000250B0000210C00001E0E +00001B0F0000130D00080A0B000F000A0415000E10120010190F0012210D00 +142B0A00153808001645080017530700176206001872040018850300189203 +00189202001992020019920200199202001992024704000047040000470400 +0047040000470400003F060000360900002E0B0000270C0000220E00001F0F +00001B1000001911000116130000101300050611000C0012070E0015100B00 +17180800192106001B2D03001C3903001C4503001C5203001C6103001C7103 +001B8402001B9303001B9303001B9303001B9303001B9303001C93033D0900 +003D0900003D0900003D0900003D090000330B00002B0D0000250F00002010 +00001C120000191300001615000014160000121700000C1800030317010800 +190806001A0F06001B1706001C2005001E2B03001F3703001F4403001F5103 +001F5F03001F6F03001F8202001F9503001F9503001F9503001F9503001F95 +03001F9503300E0000300E0000300E0000300E0000300E0000281000002212 +00001E1300001A1500001717000014180000121900000F1A00000D1B000009 +1B0001021A0107001B0607001D0E06001E1506001F1E050021290400223603 +0023420300234F0300245E0300246E03002381020022970200229702002297 +02002297020022970200229702251300002513000025130000251300002513 +0000211400001C16000019180000151A0000121C00000F1D00000D1E00000D +1E00000E1E00000A1E0000031D0006001D050800200C060021140600231C05 +00252704002734030027400300284D0300295C0300296C030028800200269A +0200269A0200269A0200269A0200269A0200269A021E1800001E1800001E18 +00001E1800001E1800001B1A0000171C0000131E0000101F00000E2000000E +2000000E2100000E2100000F2100000C220000052000060120040800230B07 +0025130600271B0600292504002C3203002D3F03002E4C03002F5B03002F6B +02002E7F02002B9901002B9D01002B9D01002B9D01002B9D01002B9D01191E +0000191E0000191E0000191E0000191E000015200000112200000F2300000F +2300000F2400000F2400000F24000010250000102500000D26000007250004 +0124020900270A07002B1206002D1A05002F230500312E0300333B03003449 +020036590200376A0200357D01003297010032A2010032A2010032A2010032 +A2010032A20113240000132400001324000013240000132400001026000010 +26000010270000102700001028000010280000112900001129000011290000 +0E2A0000082A0004022A0208002C080800311106003419050036210500382B +03003A3803003C4702003E570200406901003F7C01003C9600003AA600003B +A600003BA600003BA600003BA600112A0000112A0000112A0000112A000011 +2A0000112B0000112B0000112C0000112C0000112D0000112D0000122E0000 +122E0000122F00000F3000000A310002033001080032060900370F07003C17 +05003F1F0400402804004234030045440200495502004B6801004A7B000048 +94000046AC000046AC000046AC000046AC000046AC00123000001230000012 +30000012300000123000001230000012310000123200001232000012330000 +13340000133400001335000013350000103700000C38000204370007003904 +0A003F0C0800461505004A1E04004C2603004E310300503F02005451010058 +650000597900005791010055B1000055B1000055B1000055B1000055B10013 +36000013360000133600001336000013360000133700001338000013390000 +13390000143A0000143B0000143B0000143C0000143D0000123F00000E4100 +01074100050042020A004909090051130600571C05005B2403005C2E02005E +3B0100634D00006861000069750000688E010066B9000066B9000066B90000 +66B9000066B900143E0000143E0000143E0000143E0000143E0000143F0000 +14400000144100001542000015430000154400001544000015450000154600 +00134800000F4C00010A4E0004034F000800550609005D100700651A06006B +2203006E2B010071370000754800007A5B00007C7100007A8B000079C00000 +79C3000079C3000079C300007AC30015480000154800001548000015480000 +1548000015490000164A0000164B0000164C0000164D0000164E0000164E00 +00164F00001650000014530000115800010C5D00030660000601640208006C +0A0800751406007D1C020083240000883000008C41000090540000946A0000 +9287000092BC000093D1000093D1000093D1000093D1001652000016520000 +16520000165200001652000016530000175400001755000017560000175700 +001758000017590000175A0000175B0000155F0000126500000E6B00010A71 +000305770005017F01070087080400930E0100A1160000AE210000B8300000 +C1460000CB5E0000D27C0000CEB00000CDED0000CDEE0000CEEE0000CEEE00 +175E0000175E0000175E0000175E0000175E0000175F000017600000176100 +00176200001763000017640000176500001765000017650000166900001370 +0000107700000D7E00000A860000068E00000297000200A5030000BB090000 +D7130000F2200000FF350000FF530000FF700000FF9A0000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017650000176500001765 +00001669000013700000107700000D7E00000A860000068E00000297000200 +A4030100B9090000D4120000EF1E0000FF310000FF4F0000FF6B0000FF8D00 +00FFFF0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A0010003A00 +16003C001C003F00240042002F0045003D004A004B004D005C004F006B004F +007B004D008A004D009B004E00AE004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A0010003A0016003C001C003F00240042002F0045003C004A004B004D +005B004F006B004F007A004D0089004D009A004E00AE004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A0010003A0016003C001C003F00240042002E0045 +003C0049004B004D005B004F006B004F007A004D0089004D009A004E00AE00 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A0010003A0016003C001C003F +00240041002E0045003C0049004A004D005A004F006A004F007A004D008900 +4D0099004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A0010003A +0016003C001C003F00230041002E0045003C0049004A004D005A004F006A00 +4F0079004D0088004D0098004D00AD004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A0010003A0016003C001C003F00230041002E0045003B0049004A00 +4D005A004F0069004F0079004E0087004D0097004D00AC004E00AE004E00AE +004E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A0010003A0016003C001C003F00230041002E00 +45003B00490049004D0059004F0069004F0078004E0087004D0097004D00AB +004D00AE004C00AF004A00AF004900B0004900B0004800B1003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A0010003A0016003C001C00 +3F00230042002D0045003B004A0049004E0058004F0068004C007700490085 +00460096004400B0004200B6004100B7004000B8004000B8003F00B9003F00 +B9003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003B000D003B000D003B000D003C000D003C001000 +3C0016003E001C004100230044002D00440039004500460045005400440065 +00420074003F0083003C0095003B00B3003A00BD003900BE003800BF003800 +BF003700BF003700C0003B000D003B000D003B000D003B000D003B000D003B +000D003B000D003C000D003C000D003D000D003D000D003D000D003E000D00 +3E000D003E000F003E00150040001C003D0021003A00280039003400390041 +0039004F00380061003700710035008100330094003300B4003300C2003200 +C2003100C2003000C2003000C2003000C2003D000D003D000D003D000D003D +000D003D000D003D000D003E000D003E000D003F000C003F000C003F000C00 +40000C0040000C0040000C003F000E003A0013003600180033001E00300025 +012F0030012E003C002D004B002C005B002B006B002A007D002A0091002B00 +B0002B00C1002A00C1002900C1002900C1002900C0002800C00040000C0040 +000C0040000C0040000C0040000C0040000C0040000C0041000C0041000C00 +42000C0042000C0042000C0043000C003D000A0037000B0031000F012D0015 +012A001B022700230326002C02250038022300460121005500210065012100 +760022008B002300A9002300BC002300BB002200BB002100BA002100BA0021 +00B90042000C0042000C0042000C0042000C0042000C0043000C0043000C00 +44000C0044000C0044000B0045000B0040000A003A000800340006002E0007 +0128000C032400120421001A06200022061E002A061C0034051A0042051900 +51051800600418007003190083021A009E011B00B1011A00B0011A00AF0119 +00AE011900AE011900AD0145000B0045000B0045000B0045000B0045000B00 +45000B0046000B0046000B0047000B0045000A003E00080037000600310004 +002B00030125000403200009071D0010081900180A1700200B1600290B1300 +320B11003E0B0F004C0B0F005B0B0E006A0A0F007B08110091051200A40411 +00A3051000A2051000A2050F00A1050F00A10548000A0048000A0048000A00 +48000A0048000A0048000A0049000A0049000A00430008003B000600340004 +012C00020227010102240201011F0101051900050A14000D0D1100150F0E00 +1E100B00251208002D12060038110500451104015411040164100300740F05 +00870C0600990A0500980B0500970B0400970B0400970B0400970B4B000900 +4B0009004B0009004B0009004B0009004B0009004A000800410006003A0003 +012F0001022A0201022603000123040001200500011B0500041302020C0B00 +071107001013040119140203211300042912000534100006410F0007500F00 +07600E0007700D0007820B0006930A0007930A000792090008920900089209 +000892094B0007004B0007004B0007004B0007004B00070049000600400004 +00350001032D0200022904000024050000210600001E0800001B0900001709 +00030E06000C0302001300050E1300081811000A200E000C280C000D340A00 +0E4109000F4F08000F5E07000F6D06000F7F05000F90040010900300108F03 +00118F0300118F0200118F0241000201410002014100020141000201410002 +0140000202330200022D04000027060000230800001F0900001C0A0000190B +0001160C0001120D0003090B000B000A0410000D0F0D000F180A00111F0700 +132905001435030014410300144E0300145C0300146C0200147D0200149002 +00149002001490020014900200149002001490023504000135040001350400 +013504000135040001330500012C07000026090000210A00001D0C0000190D +0000160E0001140F0001111100010E110002051100070012060900140F0600 +14160500151E0400162803001734030017400300174D0300175B0300176A03 +00177C020017900200179102001791020017910200179102001791022C0900 +002C0900002C0900002C0900002C0900002A0A0000240B00001F0D00001B0F +00001710000114110000121300000F1400000D150000091600010415000400 +15050700160D060017140500181C0400192603001A3203001A3E03001A4B03 +001A5903001A6903001A7A02001A8F02001A9202001A9202001A9202001A92 +02001A9203230E0000230E0000230E0000230E0000230E0000220E00001D10 +00001911000115130000121500000F1600000C1700000B1800000B1800000A +180000051800040017040700190B0600191206001A1A05001C2504001D3103 +001E3D03001E4A03001E5703001E6703001E7903001D8E02001D9403001D94 +03001D9403001D9403001D94031C1200001C1200001C1200001C1200001C12 +00001B1300001715000013170000101800000D1900000C1A00000C1A00000C +1A00000C1B00000C1B0000061A000300190208001B0906001C1106001D1806 +001F230400212F0300223B030022480300225603002265030022770300218D +02002197020021970200219702002197020021970216180000161800001618 +0000161800001618000015180000111A00000E1C00000D1C00000D1D00000D +1D00000D1D00000D1D00000D1E00000D1E0000081E0002011C0108001E0807 +00200F06002117060023210500252D0300263A030027460300275403002864 +030028760200268C0200259A0200259A0200259A0200259A0200259A02101D +0000101D0000101D0000101D0000101D00000F1E00000E1F00000E1F00000E +1F00000E2000000E2000000E2000000E2100000E2100000E2100000A210001 +021F00080020060800240E060025160600281F05002A2A04002C3703002D44 +03002E5203002F6203002E7402002C8A02002B9D02002B9D02002B9D02002B +9D02002B9D020F2200000F2200000F2200000F2200000F2200000F2200000F +2200000F2300000F2300000F2300000F2400000F2400000F24000010250000 +0F2500000B260000042400070025050800290D07002C1505002E1D05003027 +040032330300344102003550020037610200377302003489010032A2010032 +A2010032A2010032A2010032A2011026000010260000102600001026000010 +26000010260000102600001027000010270000102800001028000011290000 +11290000112A0000112A00000D2B0000062B0006012A0309002E0B07003314 +0600361C050037240400392F03003C3E03003E4E0200405F0200417201003F +8701003CA700003CA700003CA700003CA700003CA700112B0000112B000011 +2B0000112B0000112B0000112B0000112C0000112D0000112D0000122E0000 +122E0000122F0000122F000012300000123000000E32000008320004013102 +0900350908003B1206003F1A050041220400432C0300453A0300494A02004C +5D01004D7000004C86000049AC000049AD000049AD000049AD000049AD0012 +31000012310000123100001231000012310000123200001232000012330000 +133400001334000013350000133600001336000013370000133700000F3A00 +000A3A00030239000A003D060900440F07004B1805004F2004005129030052 +360200554601005A5A00005D6E00005D8301005AA7010059B3010059B30100 +5AB301005AB301133900001339000013390000133900001339000013390000 +143A0000143B0000143C0000143D0000143D0000143E0000143F0000143F00 +0014400000114300000C450002054500070048030A00500C0800581606005E +1F04006127030063320100664100006B5500006F6900006F8000006EA30100 +6CBC00006DBC00006DBC00006DBC0015420000154200001542000015420000 +15420000154200001543000015440000154500001546000015470000154800 +001549000015490000164A0000124E00000E5300020955000502570109005E +080900671207006F1C050074230200782D00007C3C0000804E000084630000 +847B000082A1000082C9000083C9000083C9000083C900164D0000164D0000 +164D0000164D0000164D0000164D0000164E0000164F000016500000165100 +001652000016530000165400001754000017550000145B0000106000010B65 +0003066A0006017002080078090600811203008B1A00009323000098310000 +9E440000A35A0000A8730000A59B0000A8D90000A8D90000A8D90000A9D900 +175800001758000017580000175800001758000017590000175A0000175B00 +00175C0000175D0000175E0000175F00001760000017600000176100001468 +0000116F00000E7600000B7E000107860001038F0002009A010200AC060000 +C80D0000E6190000FF270000FF470000FF620000FF860000FFFF0000FFFF00 +00FFFF0000FFFF001765000017650000176500001765000017650000176500 +00176500001765000017650000176500001765000017650000176500001765 +000017650000156B0000127200000F7A00000C810000088900000591000101 +9C010200AB050000C60C0000E3180000FD250000FF430000FF5E0000FF8000 +00FFE70000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +13003B0019003D001F004000280043003500470043004C0053004E0064004F +0074004E0084004D0094004D00A9004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A0013003B0019003D001F004000280043003500470043004C +0053004E0064004F0073004E0083004D0093004D00A8004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A0013003B0019003D001F004000280043 +003500470043004C0053004E0064004F0073004E0083004D0093004D00A700 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A0013003B0019003D +001F004000280043003500470043004B0052004E0063004F0073004E008200 +4D0092004D00A6004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +0013003B0019003D001F004000280043003400470042004B0052004E006300 +4F0072004E0082004D0091004D00A5004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A0013003B0019003D001F00400027004300340047004200 +4B0051004E0062004F0072004E0081004D0091004D00A4004E00AE004E00AE +004E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A0012003B0018003D001F0040002700 +43003400470042004B0051004E0062004F0071004E0081004D0090004B00A4 +004A00B0004800B1004700B2004600B2004500B3004400B3003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A0012003A001800 +3D001F004000270043003300470041004B0050004A0061004800700045007F +0041008F003F00A6003E00B8003C00B9003C00BA003B00BB003A00BC003A00 +BC003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A0012003A0018003D001E003F0027003D0031003D003E003E004C003D005E +003C006E0039007D0036008E003500A9003500C1003400C1003300C2003200 +C2003200C2003100C3003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A0012003800170035001D003200240031002E0031003B +003000490030005A002E006A002D007B002C008E002C00AA002D00C5002C00 +C5002B00C5002B00C5002A00C5002A00C5003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0037000C00320010002E0015002B001B00290022 +0028002B00270037002500460024005600230065002300770023008B002400 +A7002600C4002500C3002400C3002400C3002300C3002300C3003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3B000D003B000D003C000D0039000C0034000A002F0009002A000C00270012 +01240019012200210121002901200034011E0042001C0051001B0061011B00 +71001B0085001D00A0001F00BE001E00BD001D00BC001D00BB001C00BB001C +00BA003C000D003C000D003C000D003C000D003C000D003C000D003C000D00 +3D000D003D000D003E000D003D000C0037000A00310009002B000700270006 +0023000A02200010021D0018031C0020031A0028031900320317003E031400 +4D0314005C0313006B0214007D01150093001700B1001600B0001600AF0015 +00AE001500AD001400AD003F000C003F000C003F000C003F000C003F000C00 +3F000C003F000C0040000C0040000C003B000B00340009002E000700280006 +0024000500200004021D00080419000F051600170715001F07130027071000 +30070E003B070C0048080C0056070B0065070B0075050D0088030F00A2020E +00A1020D00A0020D009F020C009E020C009E0242000C0042000C0042000C00 +42000C0042000C0042000C0042000C0041000B003A000900310007002A0005 +0025000401200003021D0001031B0000041700050612000C090F00140B0C00 +1D0C0900240D07002B0D0500350D0300420D0301500C03015F0B02016E0A03 +017F0904009707030096070300960702009507020195070201950745000B00 +45000B0045000B0045000B0045000B0045000B0040000A00370007002E0005 +0028000301220002021F0101031C0200031A03000218040001120202070A00 +060D0600100E0301190F0103200E0004270D0005320B00063F0A00074C0900 +075B0800086A0700077A0600068F05000790040008900400088F0400088F03 +00098F033A0006003A0006003A0006003A0006003A0006003A000600350005 +002C00030125010102210200021E0300021B04000119050001160600011407 +00010D0600070201001000050D0E0007170C00091F09000B2706000C320400 +0D3E03000E4B02000E5902000E6802000D7701000D8B02000C8E02000D8E02 +000D8E02000D8E02000D8E022E0002022E0002022E0002022E0002022E0002 +022E0002022A01010224020001200400011C0600011A070001170800011409 +0001110A00020F0B0001080B0006000A040B000C0E08000E1705000F1E0300 +1027020010310200103C0200104903001057020010660200107602000F8802 +000F8E02000F8E02000F8E02000F8E02000F8E022604000026040000260400 +00260400002604000026040000240500001F0700001B080000180A0001140B +0001110C00010F0D00010D0F00010B10000004100003000F050600100D0600 +10150500111C04001225030013300200133B02001348030013550300136402 +001275020012870200128F0200128F0200128F0200128F0200128F02200800 +0020080000200800002008000020080000200800001E090000190B0000150C +0001120E00010F0F00010D1100000A12000009130000091300000613000200 +12030600120B060013130500141A040015230300162E030016390300164603 +00165303001663030015730200158602001590020015900200159002001590 +02001590021A0D00001A0D00001A0D00001A0D00001A0D00001A0D0000170E +0001140F0001101100000D1300000A1400000A1400000A1500000A1500000A +15000007150002021502050015090600151006001618050017210400192C03 +00193803001944030019520300196103001971030019850200199202001992 +02001992020019920200199202141200001412000014120000141200001412 +000014120000121300000E1500000B1600000B1600000B1700000B1700000B +1700000B1700000B18000008170001021701060017070600180E0600191605 +001A1F04001C2A03001D3603001D4303001D5003001D5F03001D7003001D83 +02001C9403001C9403001C9403001D9403001D94030E1700000E1700000E17 +00000E1700000E1700000E1700000C1800000C1800000C1900000C1900000C +1900000C1A00000C1A00000C1A00000C1A00000A1A00010419010500190507 +001B0C06001C1406001D1D05001F2704002134030021410300214E0300225D +0300226E030021820200209602002096020020960200209602002096020C1B +00000C1B00000C1B00000C1B00000C1B00000C1B00000C1B00000D1B00000D +1C00000D1C00000D1C00000D1D00000D1D00000D1D00000D1D00000B1E0000 +051C0005001C0308001F0B060020120600211B06002425040025320300263F +0300274C0300275B0300276C03002681020025990200259902002599020025 +9902002599020E1E00000E1E00000E1E00000E1E00000E1E00000E1E00000E +1E00000E1F00000E1F00000E1F00000E2000000E2000000E2000000E210000 +0F2100000D2100000720000401200208002209070025110600261906002923 +05002B3003002C3D03002D4A03002E5903002F6A02002E7F02002B9C02002B +9D02002B9D02002B9D01002B9D010F2200000F2200000F2200000F2200000F +2200000F2200000F2200000F2300000F2300000F2400000F2400000F240000 +1025000010250000102500000E260000092600030225010800270708002B10 +06002D1805002F210500322B03003339030035470200375702003869020036 +7D0100339A010033A2010033A2010033A2010033A201102700001027000010 +27000010270000102700001027000010270000102800001028000011290000 +11290000112A0000112A0000112A0000112B00000F2C00000B2C0002042C01 +07002C050900320E070036170500381F05003A2804003C3403003E44020041 +55020043680100427C01003F9800003EA800003EA800003EA800003EA80011 +2D0000112D0000112D0000112D0000112D0000112D0000112D0000122E0000 +122E0000122F00001230000012300000123100001231000012320000113300 +000C340001063300060034030A00390C080040150500431D04004525040047 +300300494002004E52010051660000517A00004E9500004DAE00004DAE0000 +4DAE00004DAE00133400001334000013340000133400001334000013340000 +13340000133500001336000013360000133700001338000013380000133900 +00133A0000123B00000E3D0001083D0005003D010B00430909004B12060052 +1B040055230300562D0300583B01005D4D0000626200006377000061920100 +5FB600005FB600005FB600005FB600143C0000143C0000143C0000143C0000 +143C0000143C0000143D0000143E0000143F00001440000014400000144100 +0015420000154300001543000014450000104900000B4B0003044B00080050 +050A00590E070061190600662104006A2A02006C37000070480000755C0000 +77720000768F000074C0000075C0000075C0000075C0001547000015470000 +154700001547000015470000154700001547000015490000164A0000164B00 +00164C0000164C0000164D0000164E0000164F000015510000125600000D5A +0002085E0005016101090069090800721306007A1B030080240100852F0000 +894000008D540000916B00008F8A000090CE000090D0000090D0000090D000 +16530000165300001653000016530000165300001653000016530000175500 +0017560000175700001758000017590000175A0000175A0000175B0000165D +0000136400000F6A00010B71000207770004027E00060087060400920C0100 +A1130000AF1E0000BB2D0000C5440000D15E0000D87E0000D1C50000D2F100 +00D2F20000D3F2001760000017600000176000001760000017600000176000 +00176000001762000017630000176400001765000017650000176500001765 +00001765000017670000136E0000107500000D7D00000A840000078C000003 +95000100A2030100B7080000D3120000EF1E0000FF330000FF520000FF7300 +00FFAC0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +10003A0016003C001C003F00230041002E0045003C004A004B004D005C004F +006D004E007D004D008D004D00A1004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000F003A0015003C001C003F00230041002E0045003C0049 +004B004D005C004F006C004E007D004D008D004D00A0004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000F003A0015003C001C003F00230041 +002D0045003C0049004A004D005B004F006C004E007C004D008C004D009F00 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000F003A0015003C +001B003F00230041002D0045003B0049004A004D005B004F006B004E007C00 +4D008B004D009F004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000F003A0015003C001B003E00220041002D0045003B0049004A004D005A00 +4F006B004F007B004D008B004D009E004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000F003A0015003C001B003E00220041002D0044003B00 +490049004D005A004F006A004F007A004D008A004D009D004E00AE004E00AE +004E00AE004E00AE004E00AE004D00AE003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000F003A0015003B001B003E002200 +41002C0044003A00490049004D0059004F006A004E007A004A00890047009C +004600B2004400B3004300B4004200B5004100B6004000B6003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000F003A001500 +3B001B003E00220041002C0044003A00450047004600570044006800420078 +003E0088003C009E003A00BC003900BD003800BE003700BE003700BF003600 +BF003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000F003A0015003B001B003A002100380029003700360038004300380053 +0037006500340075003300870032009F003100C3003000C3003000C4002F00 +C4002F00C5002E00C5003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000F0035001300310018002E001F002C0027002C0032 +002B0040002A00510029006100280072002700850028009E002900C5002900 +C5002800C5002700C5002700C5002600C5003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0034000C002F000C002A0010002800160025001E +00240026002300300021003E001F004E001E005E001E006F001E0083001F00 +9B002200C3002100C3002000C2002000C2001F00C2001F00C1003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0035000C002E000A002A0009002600090023000F +00200016001E001E001E0026001D002F001A003C0018004B0017005B001600 +6B0016007E00170095001A00B9001900BC001900BC001800BB001800BA0017 +00BA003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0036000C002F000A002A00090025000800220008 +001F0008001D000F001A00170018001F001700270016002F0013003B001100 +4900100057000F0067000F00770010008B001200AB001200B0001100AF0011 +00AE001000AD001000AC003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D003A000D0031000B002B00090026000800220007 +001F0006001C0006001900060117000D021400150312001E02110025020E00 +2D030C0038030B0044030A0052030800600308006F03090080020A0099010A +009F0109009E0109009D0108009C0108009B013C000D003C000D003C000D00 +3C000D003C000D003C000D003C000D0038000C002F00090029000800240007 +00200006001C00050119000402170003011500030211000B050E0013060B00 +1C0608002207060029080400330803003E0702014C0702025A060101690601 +01760501008D04020095040100940401019403010193030102930335000A00 +35000A0035000A0035000A0035000A0035000A0035000A002D000800270006 +00210005011D0004021A000202170102021501010214020101110201020900 +0608060010090301180901021F08000326070004300600053C040006490300 +07570200076501000773000006860000068F0100068F0100068F0100068F01 +00068F012A0006002A0006002A0006002A0006002A0006002A0006002A0006 +00250004011F0003021B000103180101031602000214030002110400010F05 +00020C0500030101000D00040D090006160600081D03000A2501000A2F0000 +0A3A01000A4701000A5401000A6300000971000009830100088E0100088E01 +00088E0100088E0100088E0121000202210002022100020221000202210002 +0221000202210002021D0000041A0200031703000214050001120600010F07 +00020C0800020A090001070A000100090405000A0D05000A1504000B1C0200 +0C2401000C2D01000C3901000C4501000C5201000C6101000C7001000B8101 +000B8E01000B8E01000B8E01000B8E01000B8E011C0300021C0300021C0300 +021C0300021C0300021C0300021C0300021904000116060001130700010F08 +00020C0A00020A0C0001070D0000070D0000060E0000000C0205000C0B0500 +0D1304000D1A03000E2202000F2C02000F3702000F4302000F5002000F5F02 +000E6E02000E8002000D8E02000D8E02000D8E02000D8E02000E8E02170700 +0117070001170700011707000117070001170700011707000114090001100A +00020D0C00010A0E0001080F0000080F0000080F0000081000000810000000 +0E0005000E0906000F1105001019040010200300112A020012350200124103 +00114E0300115D0300116C0200117E0200118F0200118F0200118F0200118F +0200118F02120C0001120C0001120C0001120C0001120C0001120C0001120C +00010F0E00010B0F0000081100000811000009110000091100000912000009 +12000009120000021100040011070600120F060012160500131E0300142803 +0015330300153F0300154C0300155B0300146B0300147D0200149002001490 +020014900200149002001490020C1100000C1100000C1100000C1100000C11 +00000C1100000C1100000913000009130000091300000A1300000A1400000A +1400000A1400000A1400000A140000041400030014040600140C0600151405 +00161C04001726030018310300183D0300184A03001859030018690300187B +0200189102001891020018910200189102001891020A1500000A1500000A15 +00000A1500000A1500000A1500000A1500000A1500000A1500000B1600000B +1600000B1600000B1700000B1700000B1700000B1700000617000301160307 +00170A060018120600191A05001A2304001C2F03001C3C03001C4903001C57 +03001C6703001C7A03001C9002001C9303001C9303001C9303001C93030B18 +00000B1800000B1800000B1800000B1800000B1800000B1800000B1800000B +1800000C1900000C1900000C1900000C1900000C1A00000C1A00000C1A0000 +081A000201180107001A0806001B0F06001C1706001E210500202D0300203A +030021470300215503002165030021780300208F0200209602002096020020 +9602002096020C1B00000C1B00000C1B00000C1B00000C1B00000C1B00000C +1B00000D1B00000D1B00000D1C00000D1C00000D1C00000D1D00000D1D0000 +0D1D00000D1D0000091E0001021C0107001D0607001F0E060020150600221F +0500242B04002638030026450300275303002763030027760200258D020025 +99020025990200259902002599020E1E00000E1E00000E1E00000E1E00000E +1E00000E1E00000E1E00000E1F00000E1F00000E2000000E2000000E200000 +0E2100000E2100000F2100000F2100000B220000042000060020050800230C +060026140600271D05002A2704002C3503002D4203002E5003002F6103002F +7402002D8C01002B9D01002B9E01002B9E01002B9E010F2300000F2300000F +2300000F2300000F2300000F2300000F2300000F2300000F2300000F240000 +0F24000010250000102500001026000010260000102600000D270000062700 +050126030900290A07002D1306002F1B05003124040034300300353E020037 +4E0200395F020039720200368A010034A3000034A3000034A3000034A30010 +28000010280000102800001028000010280000102800001028000010280000 +11290000112A0000112A0000112B0000112B0000112C0000112C0000112C00 +000E2E0000082E0003022D0209003008080036110600391A05003B2204003D +2C03003F3A0300424B0200455E0100467101004488000041A9000041A90000 +41A9000041A900122F0000122F0000122F0000122F0000122F0000122F0000 +122F0000122F00001230000012310000123100001232000012320000123300 +001334000013340000103600000B3600020336010800380609003F0E070045 +180500482004004A2903004C3502004F460100545A0100566F000055860000 +52B0000052B0000052B0000052B00013370000133700001337000013370000 +133700001337000013370000133800001338000013390000143A0000143B00 +00143B0000143C0000143D0000143D0000114000000D420001064200060043 +030A004B0B080053150600591E04005C2603005E3102006041000066550000 +696B00006982000067AE010067B9000067B9000067B9001441000014410000 +14410000144100001441000014410000144100001542000015430000154400 +00154500001545000015460000154700001548000015480000134C00000F50 +00010A53000403540108005A070900631107006B1B050071230200752D0000 +783C00007C4E000081640000807E00007FA900007FC700007FC700007FC700 +164D0000164D0000164D0000164D0000164D0000164D0000164D0000164E00 +00164F00001650000016510000165200001653000016530000175400001755 +000014590000115F00010D64000207690005026E010700760807007F110400 +8918000092210000982F00009D420000A25A0000A8740000A4A30000A7D900 +00A8D90000A8D900175A0000175A0000175A0000175A0000175A0000175A00 +00175A0000175B0000175C0000175D0000175E0000175F0000176000001761 +0000176200001763000015670000126F00000F7700000C7F00000987000005 +900000019A000200A9040000C50B0000E3180000FE260000FF470000FF6400 +00FF8B0000FFFF0000FFFF0000FFFF00> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A0012003A0018003D001F004000280043003500470043004C0054004E +0065004F0076004E0087004D0099004E00AE004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A0012003A0018003D001E00400027004300340047 +0043004C0053004E0065004F0075004E0086004D0099004E00AE004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A0012003A0018003D001E0040 +00270043003400470043004C0053004E0064004F0075004E0085004D009800 +4E00AE004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A0012003A +0018003D001E004000270043003400470042004C0053004E0064004F007400 +4E0085004D0097004E00AE004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A0012003A0018003D001E004000270043003400470042004B005200 +4E0064004F0074004E0084004D0096004E00AE004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A0012003A0018003D001E004000270042003300 +470042004B0052004E0063004F0073004E0084004D0095004D00AD004E00AE +004D00AE004B00AF004A00B0004900B0003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A0012003A0018003D001E00 +4000260042003300470041004B0051004E0063004B00720048008200440094 +004200B2004000B6003F00B7003E00B8003D00B9003C00BA003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A001200 +3A0018003D001E00400026004000310040003E0040004D00400060003E0070 +003B008000380094003700B8003600C0003500C0003400C1003300C2003300 +C2003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A0011003900170036001C003300230032002E0032003B0032004A +0031005C002F006D002E007F002D0095002E00B9002D00C5002C00C5002B00 +C5002B00C5002A00C5003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0037000D0032000F002E0014002B001A002800220028002B +002700380025004700240058002200680022007C00230093002500B6002500 +C5002400C4002300C4002300C4002200C4003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0037000D0031000B002C000A0028000C002500120022001A +002100220020002A001F0036001C0045001A00550019006500190078001A00 +8E001D00B1001D00C0001C00C0001C00BF001B00BE001B00BE003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0038000D0031000B002B000900270008002300080020000B +001E0012001B001A001A0022001A002A001700350015004300130052001200 +620012007300130087001400A5001500B8001400B6001400B5001300B40013 +00B3003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0033000B002C000A0027000800230008001F0007 +001D0007001A000B001800120016001B001400230013002A00110035000F00 +41000D004F000C005E000B006D000C007F000D0097000D00A9000D00A7000C +00A6000C00A5000B00A4003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D003A000D0036000C002E000A0028000900230008001F0007 +001C000700190006001700050015000A001200120110001B000E0022000C00 +2A000A00330009003F0007004B0006005A01050068010500770006008B0006 +009A0006009A0005009900050099000500980033000B0033000B0033000B00 +33000B0033000B0033000B0033000B0032000B002A000900240008001F0007 +001C000700190006001600050014000500120004000F0009010D0012010A00 +1A0108002101060027010400300103003C0102014801020157010101650101 +01720001018200000193000001930000019300000193000001930027000800 +27000800270008002700080027000800270008002700080026000800210007 +001C000700190006001600050014000400110003000F0003010D0102010900 +0503060010030301170301011E030002240200032D0100043A000004450000 +045300000462000004700000037E0000039100000391000003910000039100 +00039100200006002000060020000600200006002000060020000600200006 +001F0006001A0005011700040114000301120102010F0102010D0201010A02 +0101080300010101000700030E030004150100051C010005230000062B0000 +063800000643000006510000065F0000066E0000057C000005900000059000 +00059000000590000005900019000302190003021900030219000302190003 +021900030219000302190003021501020213020101100301010D0300010A04 +00010705000105070000030800000107030200060C030006140300071B0200 +08210100082A00000835000008410000084E0000085C0000086B0000077A00 +00068E0100068E0100068E0100068E0100068E011502010215020102150201 +021502010215020102150201021502010214030101110400010D0500020A06 +000207080001040A0000050A0000050A0000050A0000020902020009090400 +09120400091903000A2001000B2801000B3301000B3F01000B4C01000B5A01 +000B6901000A790100098E0100098E0100098E0100098E0100098E01100600 +021006000210060002100600021006000210060002100600020F0600020B08 +0002080A0001050B0000060C0000060C0000060C0000060C0000060C000003 +0C0002000B0705000B0F05000C1703000C1E02000D2602000E3101000E3D02 +000D4A02000D5802000D6701000D7701000C8C01000C8E01000C8E02000C8E +02000C8E020A0B00010A0B00010A0B00010A0B00010A0B00010A0B00010A0B +0001090C0001070D0000070E0000070E0000070E0000070E0000070E000007 +0F0000070F0000040E0002000D0406000E0D06000E1505000F1C0300102502 +00112F0200113B0200104703001055030010650200107602000F8902000F8E +02000F8E02000F8E02000F8E02080F0000080F0000080F0000080F0000080F +0000080F0000080F0000080F00000810000008100000081000000810000008 +110000081100000811000009110000061100010010020600100A0600111205 +00121A040013230300142D0200143902001445030014530300146303001374 +02001388020013900200139002001390020013900209120000091200000912 +00000912000009120000091200000912000009120000091200000913000009 +13000009130000091300000A1300000A1400000A1400000814000102130205 +0013080600141006001518050016200400172B030017370300174303001751 +03001760030017720300178602001791020017910200179102001791020A15 +00000A1500000A1500000A1500000A1500000A1500000A1500000A1500000A +1500000A1500000A1600000B1600000B1600000B1600000B1600000B170000 +09170001031600050016060700170D060018150500191D04001B2803001B35 +03001C4203001C4F03001C5E03001C7003001B8502001B9303001B9303001B +9303001B93030B1800000B1800000B1800000B1800000B1800000B1800000B +1800000B1800000B1800000B1800000C1900000C1900000C1900000C190000 +0C1A00000C1A00000B1A00010519000400190408001B0B06001B1206001D1B +05001F2604002033030021400300214D0300215C0300216D03002083020020 +96020020960200209602002096020C1B00000C1B00000C1B00000C1B00000C +1B00000C1B00000C1B00000C1B00000D1B00000D1C00000D1C00000D1C0000 +0D1D00000D1D00000D1D00000D1E00000C1E0000071D0003001C0208001E09 +070020110600211906002323040025300300263D0300274B0300285A030028 +6C0300278102002599020025990200259A0200259A020E1F00000E1F00000E +1F00000E1F00000E1F00000E1F00000E1F00000E1F00000E1F00000E200000 +0E2000000E2100000E2100000F2100000F2100000F2200000E220000092200 +01012001080022070800250F0600271706002A2105002C2D03002E3A03002F +48030030580300316A02002F7F02002C9E01002C9E01002C9E01002C9E010F +2400000F2400000F2400000F2400000F2400000F2400000F2400000F240000 +0F240000102500001025000010260000102600001026000010270000102700 +000F2800000B2800010427000700280509002C0D070030160500321E050034 +28040036350300384402003A5502003C6802003A7D0100369E000036A40000 +36A4000037A400112A0000112A0000112A0000112A0000112A0000112A0000 +112A0000112A0000112A0000112B0000112C0000112C0000112D0000112D00 +00122E0000122E0000112F00000D30000007300005002F030A00340B08003A +1405003D1D05003F2504004130030043400300475202004A670100497C0000 +469B000045AB000045AB000045AB0012310000123100001231000012310000 +12310000123100001231000012310000123200001233000013340000133400 +0013350000133600001336000013370000133700000F390000093A00030139 +010A003E080900461106004C1A04004F230400512D0300523A0100574D0000 +5C6300005D7900005B97010059B3010059B3010059B301143B0000143B0000 +143B0000143B0000143B0000143B0000143B0000143B0000143C0000143D00 +00143D0000143E0000143F0000144000001440000014410000144200001146 +00000C48000205480008004C040A00540D08005C17060062200400652A0200 +673601006C480000715D0000737400007293010070BE000070BE000071BE00 +15460000154600001546000015460000154600001546000015460000154600 +001548000015490000164A0000164B0000164B0000164C0000164D0000164E +0000164F0000135400000E580002095C0005025F010800660708006F120600 +781B03007E230100832E0000874000008B5400008F6C00008D8F00008DCE00 +008ECF00008ECF001654000016540000165400001654000016540000165400 +0016540000175400001755000017560000175700001758000017590000175A +0000175B0000175C0000175D000014630000106A00010C7000020877000303 +7F00060087040500920A0200A1110000B21B0000C12A0000CC420000DA5D00 +00E3810000D9F10000DAF70000DBF800> +<3A000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000F003A0015003B001B003E00220041002D0045003C004A004C004D +005D004F006F004E0080004D0092004D00AA004E00AE004E00AE004E00AE00 +4E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000F003A0015003B001B003E00220041002D0045 +003C004A004B004D005D004F006E004E007F004D0091004D00A9004E00AE00 +4E00AE004E00AE004E00AE004E00AE003A000D003A000D003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000F003A0015003B001B003E +00220041002D0045003B0049004B004D005C004F006E004E007F004D009000 +4D00A7004E00AE004E00AE004E00AE004E00AE004E00AE003A000D003A000D +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000E003A +0015003B001B003E00220041002C0045003B0049004A004D005C004F006D00 +4E007E004D008F004D00A6004E00AE004E00AE004E00AE004E00AE004E00AE +003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000E003A0014003B001B003E00220041002C0044003B0049004A00 +4D005B004F006C004E007E004D008F004D00A5004E00AE004E00AE004E00AE +004E00AE004E00AE003A000D003A000D003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000E003A0014003B001A003E00210041002C00 +44003A00490049004D005B004F006C004E007D004D008E004C00A4004A00B0 +004800B1004700B2004600B2004400B3003A000D003A000D003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000E003A0014003B001A00 +3E00210041002C0044003A00490049004900590048006B0045007B0041008C +003E00A7003C00B9003B00BB003A00BC003900BD003900BE003A000D003A00 +0D003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000E00 +3A0014003B001A003D0021003A002900390036003A0044003A005500390067 +003600790034008C003300AA003200C2003100C3003000C3003000C4002F00 +C4003A000D003A000D003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000E0036001300320018002F001E002D0027002C0032002C0041 +002B005200290063002800760028008B002900AA002A00C5002900C5002800 +C5002700C5002700C5003A000D003A000D003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0035000C002F000B002B000F002800160025001D00240026 +002300300021003E001F004F001E005F001E0072001E0088002000A7002100 +C3002000C2001F00C2001F00C1001E00C1003A000D003A000D003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0034000C002E000A00290009002500080022000E00200015 +001E001E001D0026001C002F0019003C0017004C0016005C0015006E001500 +820017009F001900BC001800BB001700BA001700B9001600B9003A000D003A +000D003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0035000C002E000A002900090024000800210007001E0007 +001C000E001900160017001E001600260015002F0012003B0010004A000F00 +59000E0069000E007B000F0093001100AF001000AE000F00AC000F00AB000E +00AB003A000D003A000D003A000D003A000D003A000D003A000D003A000D00 +3A000D003A000D0038000D0030000B002900090024000800200007001D0007 +001A0006001800060016000E001300160111001F00100026000E002E000C00 +3A000A004700090055000800640008007400080087000900A00008009E0008 +009D0007009C0007009B0037000D0037000D0037000D0037000D0037000D00 +37000D0037000D0037000D0033000B002B00090025000800200007001D0007 +001A00060017000500150005001300040010000D010E0016010B001E000900 +250007002C010500380104004301030051010200600102016F0003017E0002 +009600020195000101950001019400010194002A0009002A0009002A000900 +2A0009002A0009002A0009002A0009002A00090027000800210007001D0007 +00190006001700050014000500120004000F0003000D0003010A000D020700 +160105001C010300220102012901010137000002410000024F0000025E0000 +026D0000017900000193000001930000019300000193000001930020000700 +200007002000070020000700200007002000070020000700200007001E0007 +001A0006001700050014000500110004000E0003000C0002000A0002000800 +010004000D010201140000011B000001210000012800000236000002400000 +024E0000025D0000026C000002770000019200000193000001930000019300 +00019300190006001900060019000600190006001900060019000600190006 +00190006001700060014000500110004000E0003000B000200090001000500 +0100020000000000000000010D000001140000011B00000120000002280000 +0235000002400000024D0000025C0000026B00000276000001900000019300 +00019300000193000001920013000400130004001300040013000400130004 +00130004001300040013000400120004000E0003010B000200080101000401 +00000102000001020000010200000102000000020A01000312010003190100 +031F00000427000004320000053E0000054B00000459000004680000047400 +00048C00000391000003910000039100000391000E0102010E0102010E0102 +010E0102010E0102010E0102010E0102010E0102010C020101090201010403 +00010204000002050000020500000205000002060000030600000005070200 +0510020005170200061E010007250000072F0000073B000007480000075600 +00076500000673000006870000058F0100058F0100058F0100058F01070400 +01070400010704000107040001070400010704000107040001070400010605 +00010307000003070000030800000408000004080000040900000409000004 +0900000108050300070E040008150300081C0200092401000A2D00000A3900 +000A45010009530100096200000971000008840100088E0100088E0100088E +0100088E01040A0000040A0000040A0000040A0000040A0000040A0000040A +0000040A0000050A0000050A0000050A0000050B0000050B0000050B000005 +0B0000050B0000060C0000010A0304000A0B05000A1304000B1B03000C2202 +000C2B01000D3701000C4302000C5102000C6001000C7001000B8201000B8E +01000B8E01000B8E01000B8E01060C0000060C0000060C0000060C0000060C +0000060C0000060C0000060C0000060C0000060D0000060D0000060D000007 +0D0000070E0000070E0000070E0000070E0000010D0004000D0806000D1105 +000E1804000E2003000F290200103402000F4002000F4E03000F5D02000F6D +02000E8002000E8E02000E8E02000E8E02000E8E02070F0000070F0000070F +0000070F0000070F0000070F0000070F0000070F0000080F0000080F000008 +10000008100000081000000810000008100000081100000811000003100004 +0010060600100E060011160500111E03001227030013320200133E0300134C +0300135B0300136B0200127E0200128F0200128F0200128F0200128F020912 +00000912000009120000091200000912000009120000091200000912000009 +12000009120000091200000913000009130000091300000913000009130000 +0A140000051300030013030600130B060014130500151B0400162503001730 +0300173C0300174A03001758030017690300167C0200169102001791020017 +9102001791020A1500000A1500000A1500000A1500000A1500000A1500000A +1500000A1500000A1500000A1500000A1500000A1600000B1600000B160000 +0B1600000B1600000B17000007160002011602060017090600171006001818 +0500192204001B2E03001B3A03001C4803001C5603001C6603001B7A03001B +9303001B9303001B9303001B93030B1800000B1800000B1800000B1800000B +1800000B1800000B1800000B1800000B1800000B1800000C1900000C190000 +0C1900000C1900000C1A00000C1A00000C1A0000091A000103190106001A06 +07001B0E06001C1606001E1F05001F2B040020380300214503002153030021 +640300217803002091020020960200209602002096020D1B00000D1B00000D +1B00000D1B00000D1B00000D1B00000D1B00000D1B00000D1C00000D1C0000 +0D1C00000D1D00000D1D00000D1D00000D1E00000D1E00000E1E00000B1E00 +00041D0006001D040800200C060021140600231D0500252804002735030027 +430300285103002962030028760200268F0200269A0200269A0200269A020E +2000000E2000000E2000000E2000000E2000000E2000000E2000000E200000 +0E2000000E2000000E2100000F2100000F2100000F2200000F2200000F2200 +000F2300000D230000062300040122030800240A070028120600291A06002C +2404002E32030030400200314F020032600200327402002F8E01002E9F0100 +2E9F01002E9F01102500001025000010250000102500001025000010250000 +10250000102500001025000010260000102600001027000010270000102800 +001028000011290000112900000E2A0000092A000303290208002B08080030 +1006003319050035220500372C03003A3B03003C4B02003E5E02003F720100 +3C8B00003AA600003AA600003AA600112C0000112C0000112C0000112C0000 +112C0000112C0000112C0000112C0000112C0000112D0000122E0000122E00 +00122F0000122F0000123000001230000012310000103200000B3300020532 +01070034050900390E070040170500431F040044280400463503004A470200 +4E5B01004F7000004E8900004BAE00004BAE00004BAE001335000013350000 +13350000133500001335000013350000133500001335000013350000133600 +001337000013370000133800001339000013390000143A0000143B0000123C +00000E3E0001073E0005003F020A00460A08004E140600551D040057260300 +593102005B41010061550000646C00006486000061B7000061B7000062B700 +14400000144000001440000014400000144000001440000014400000144000 +00144000001441000015420000154300001544000015450000154500001546 +00001547000014490000104D00010B5000030451000800560509005F0F0700 +681A06006E220300712C0100753B0000794E00007E6500007D8100007CB800 +007CC500007CC500164D0000164D0000164D0000164D0000164D0000164D00 +00164D0000164D0000164E0000164F00001650000016510000165200001652 +000016530000175400001755000015580000125E00000E6300020968000403 +6D000700750607007E0F04008817010092200000982E00009E410000A35A00 +00A8770000A6AF0000A8D90000A9DA00> +] 4 {} bind dup dup dup ] +/RenderingIntent (Perceptual) +>> +setcolorrendering diff --git a/crd/zjs/prolog.ps b/crd/zjs/prolog.ps new file mode 100644 index 0000000..4b87922 --- /dev/null +++ b/crd/zjs/prolog.ps @@ -0,0 +1,78 @@ +%!PS +% +% $Header: /home/cvs/foo2zjs/crd/zjs/prolog.ps,v 1.3 2004/07/02 11:45:14 rick Exp $ +% +% Copyright (C) 2004 Gerhard Fuernkranz +% +% 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., 675 Mass Ave, Cambridge, MA 02139, USA. +% + +% setup initial clipping, +% redefine initclip to clip 4mm (approx 12pt) on each side + +/m2300wBorder 4 + 25.4 div 72 mul def + +/m2300w_initclip { + initclip clippath pathbbox + m2300wBorder 2 mul sub 4 1 roll + m2300wBorder 2 mul sub 4 1 roll + m2300wBorder add 4 1 roll + m2300wBorder add 4 1 roll + rectclip +} bind def + +<< /BeginPage { pop m2300w_initclip } bind >> setpagedevice + + +% setup CIE based color rendering + +<< /UseCIEColor true >> setpagedevice + +revision 800 ge { + + /DefaultGray + [ /CIEBasedA << + /DecodeLMN [ + { dup 0.03928 le + {12.92321 div} + {0.055 add 1.055 div 2.4 exp} + ifelse + } bind dup dup + ] + /MatrixLMN [0.412457 0.212673 0.019334 + 0.357576 0.715152 0.119192 + 0.180437 0.072175 0.950301] + /WhitePoint [0.9505 1.0 1.0890] + >> ] /ColorSpace defineresource pop + + /DefaultRGB + [ /CIEBasedABC << + /DecodeLMN [ + { dup 0.03928 le + {12.92321 div} + {0.055 add 1.055 div 2.4 exp} + ifelse + } bind dup dup + ] + /MatrixLMN [0.412457 0.212673 0.019334 + 0.357576 0.715152 0.119192 + 0.180437 0.072175 0.950301] + /WhitePoint [0.9505 1.0 1.0890] + >> ] /ColorSpace defineresource setcolorspace + +} if + + diff --git a/crd/zjs/screen1200.ps b/crd/zjs/screen1200.ps new file mode 100644 index 0000000..12e00bf --- /dev/null +++ b/crd/zjs/screen1200.ps @@ -0,0 +1,218 @@ +%!PS +% +% $Header: /home/cvs/foo2zjs/crd/zjs/screen1200.ps,v 1.1 2004/07/02 11:45:14 rick Exp $ +% +% 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., 675 Mass Ave, Cambridge, MA 02139, USA. +% + +<< + /HalftoneType 5 + /Magenta << +% w=68 h=2 strip=17 shift=16 + /HalftoneType 3 + /Width 68 + /Height 34 + /TransferFunction {0 max 1 min 0.8 exp} bind + /Thresholds < +5f503a1e04233e8ac8ccb5926974a4dbf3faede6a87d6a9bb0d9c2874b290d13 +2f545c4e381a0720418cc4cfbb9463789fe0f7feebe4aa797099b1d5bf83472b +0b15345ac6d1b9956576a1def5fceae2ac7b6e97b3d3bd81452d091632586152 +3c1c02254088cacdb7906772a3dcf1f8efe8a67f6c9daed7c08549270f113156 +5d4d36180622438ef3faede6a87d6a9bb0d9c2874b290d132f545c4e381a0720 +418cc4cfbb9463789fe0f7feebe4aa797099b1d5bf83472b0b15345a5f503a1e +04233e8ac8ccb5926974a4dbb3d3bd81452d0916325861523c1c02254088cacd +b7906772a3dcf1f8efe8a67f6c9daed7c08549270f1131565d4d36180622438e +c6d1b9956576a1def5fceae2ac7b6e972f545c4e381a0720418cc4cfbb946378 +9fe0f7feebe4aa797099b1d5bf83472b0b15345a5f503a1e04233e8ac8ccb592 +6974a4dbf3faede6a87d6a9bb0d9c2874b290d134088cacdb7906772a3dcf1f8 +efe8a67f6c9daed7c08549270f1131565d4d36180622438ec6d1b9956576a1de +f5fceae2ac7b6e97b3d3bd81452d0916325861523c1c02259fe0f7feebe4aa79 +7099b1d5bf83472b0b15345a5f503a1e04233e8ac8ccb5926974a4dbf3faede6 +a87d6a9bb0d9c2874b290d132f545c4e381a0720418cc4cfbb9463786c9daed7 +c08549270f1131565d4d36180622438ec6d1b9956576a1def5fceae2ac7b6e97 +b3d3bd81452d0916325861523c1c02254088cacdb7906772a3dcf1f8efe8a67f +0b15345a5f503a1e04233e8ac8ccb5926974a4dbf3faede6a87d6a9bb0d9c287 +4b290d132f545c4e381a0720418cc4cfbb9463789fe0f7feebe4aa797099b1d5 +bf83472b0622438ec6d1b9956576a1def5fceae2ac7b6e97b3d3bd81452d0916 +325861523c1c02254088cacdb7906772a3dcf1f8efe8a67f6c9daed7c0854927 +0f1131565d4d36186974a4dbf3faede6a87d6a9bb0d9c2874b290d132f545c4e +381a0720418cc4cfbb9463789fe0f7feebe4aa797099b1d5bf83472b0b15345a +5f503a1e04233e8ac8ccb592ac7b6e97b3d3bd81452d0916325861523c1c0225 +4088cacdb7906772a3dcf1f8efe8a67f6c9daed7c08549270f1131565d4d3618 +0622438ec6d1b9956576a1def5fceae24b290d132f545c4e381a0720418cc4cf +bb9463789fe0f7feebe4aa797099b1d5bf83472b0b15345a5f503a1e04233e8a +c8ccb5926974a4dbf3faede6a87d6a9bb0d9c2873c1c02254088cacdb7906772 +a3dcf1f8efe8a67f6c9daed7c08549270f1131565d4d36180622438ec6d1b995 +6576a1def5fceae2ac7b6e97b3d3bd81452d091632586152bb9463789fe0f7fe +ebe4aa797099b1d5bf83472b0b15345a5f503a1e04233e8ac8ccb5926974a4db +f3faede6a87d6a9bb0d9c2874b290d132f545c4e381a0720418cc4cfefe8a67f +6c9daed7c08549270f1131565d4d36180622438ec6d1b9956576a1def5fceae2 +ac7b6e97b3d3bd81452d0916325861523c1c02254088cacdb7906772a3dcf1f8 +bf83472b0b15345a5f503a1e04233e8ac8ccb5926974a4dbf3faede6a87d6a9b +b0d9c2874b290d132f545c4e381a0720418cc4cfbb9463789fe0f7feebe4aa79 +7099b1d55d4d36180622438ec6d1b9956576a1def5fceae2ac7b6e97b3d3bd81 +452d0916325861523c1c02254088cacdb7906772a3dcf1f8efe8a67f6c9daed7 +c08549270f113156c8ccb5926974a4dbf3faede6a87d6a9bb0d9c2874b290d13 +2f545c4e381a0720418cc4cfbb9463789fe0f7feebe4aa797099b1d5bf83472b +0b15345a5f503a1e04233e8af5fceae2ac7b6e97b3d3bd81452d091632586152 +3c1c02254088cacdb7906772a3dcf1f8efe8a67f6c9daed7c08549270f113156 +5d4d36180622438ec6d1b9956576a1deb0d9c2874b290d132f545c4e381a0720 +418cc4cfbb9463789fe0f7feebe4aa797099b1d5bf83472b0b15345a5f503a1e +04233e8ac8ccb5926974a4dbf3faede6a87d6a9b325861523c1c02254088cacd +b7906772a3dcf1f8efe8a67f6c9daed7c08549270f1131565d4d36180622438e +c6d1b9956576a1def5fceae2ac7b6e97b3d3bd81452d0916418cc4cfbb946378 +9fe0f7feebe4aa797099b1d5bf83472b0b15345a5f503a1e04233e8ac8ccb592 +6974a4dbf3faede6a87d6a9bb0d9c2874b290d132f545c4e381a0720a3dcf1f8 +efe8a67f6c9daed7c08549270f1131565d4d36180622438ec6d1b9956576a1de +f5fceae2ac7b6e97b3d3bd81452d0916325861523c1c02254088cacdb7906772 +7099b1d5bf83472b0b15345a5f503a1e04233e8ac8ccb5926974a4dbf3faede6 +a87d6a9bb0d9c2874b290d132f545c4e381a0720418cc4cfbb9463789fe0f7fe +ebe4aa790f1131565d4d36180622438ec6d1b9956576a1def5fceae2ac7b6e97 +b3d3bd81452d0916325861523c1c02254088cacdb7906772a3dcf1f8efe8a67f +6c9daed7c085492704233e8ac8ccb5926974a4dbf3faede6a87d6a9bb0d9c287 +4b290d132f545c4e381a0720418cc4cfbb9463789fe0f7feebe4aa797099b1d5 +bf83472b0b15345a5f503a1e6576a1def5fceae2ac7b6e97b3d3bd81452d0916 +325861523c1c02254088cacdb7906772a3dcf1f8efe8a67f6c9daed7c0854927 +0f1131565d4d36180622438ec6d1b995a87d6a9bb0d9c2874b290d132f545c4e +381a0720418cc4cfbb9463789fe0f7feebe4aa797099b1d5bf83472b0b15345a +5f503a1e04233e8ac8ccb5926974a4dbf3faede6452d0916325861523c1c0225 +4088cacdb7906772a3dcf1f8efe8a67f6c9daed7c08549270f1131565d4d3618 +0622438ec6d1b9956576a1def5fceae2ac7b6e97b3d3bd81381a0720418cc4cf +bb9463789fe0f7feebe4aa797099b1d5bf83472b0b15345a5f503a1e04233e8a +c8ccb5926974a4dbf3faede6a87d6a9bb0d9c2874b290d132f545c4eb7906772 +a3dcf1f8efe8a67f6c9daed7c08549270f1131565d4d36180622438ec6d1b995 +6576a1def5fceae2ac7b6e97b3d3bd81452d0916325861523c1c02254088cacd +ebe4aa797099b1d5bf83472b0b15345a5f503a1e04233e8ac8ccb5926974a4db +f3faede6a87d6a9bb0d9c2874b290d132f545c4e381a0720418cc4cfbb946378 +9fe0f7fec08549270f1131565d4d36180622438ec6d1b9956576a1def5fceae2 +ac7b6e97b3d3bd81452d0916325861523c1c02254088cacdb7906772a3dcf1f8 +efe8a67f6c9daed7> + >> + /Cyan << +% w=68 h=2 strip=17 shift=52 + /HalftoneType 3 + /Width 68 + /Height 34 + /TransferFunction {0 max 1 min 0.8 exp} bind + /Thresholds < +658cd1d3f8edc25440224d819ba87427090613346eb1a17d491c3661b9e6f3de +c894698acdd7fcebbd584125528597aa782b0f0415316cb0a379471a3a5cb7e4 +f5dbc490385fbbe8f1e0ca956788ccd9feeabf5a4323508799ac762d0d02162f +6aaea47b45183c5db5e2f7dcc692638ecfd5faefc0563e204e839da672290b07 +113270b39f7f4b1e15316cb0a379471a3a5cb7e4f5dbc490658cd1d3f8edc254 +40224d819ba87427090613346eb1a17d491c3661b9e6f3dec894698acdd7fceb +bd584125528597aa782b0f044e839da672290b07113270b39f7f4b1e385fbbe8 +f1e0ca956788ccd9feeabf5a4323508799ac762d0d02162f6aaea47b45183c5d +b5e2f7dcc692638ecfd5faefc0563e20cdd7fcebbd584125528597aa782b0f04 +15316cb0a379471a3a5cb7e4f5dbc490658cd1d3f8edc25440224d819ba87427 +090613346eb1a17d491c3661b9e6f3dec894698ab5e2f7dcc692638ecfd5faef +c0563e204e839da672290b07113270b39f7f4b1e385fbbe8f1e0ca956788ccd9 +feeabf5a4323508799ac762d0d02162f6aaea47b45183c5d6eb1a17d491c3661 +b9e6f3dec894698acdd7fcebbd584125528597aa782b0f0415316cb0a379471a +3a5cb7e4f5dbc490658cd1d3f8edc25440224d819ba874270906133499ac762d +0d02162f6aaea47b45183c5db5e2f7dcc692638ecfd5faefc0563e204e839da6 +72290b07113270b39f7f4b1e385fbbe8f1e0ca956788ccd9feeabf5a43235087 +f8edc25440224d819ba87427090613346eb1a17d491c3661b9e6f3dec894698a +cdd7fcebbd584125528597aa782b0f0415316cb0a379471a3a5cb7e4f5dbc490 +658cd1d3f1e0ca956788ccd9feeabf5a4323508799ac762d0d02162f6aaea47b +45183c5db5e2f7dcc692638ecfd5faefc0563e204e839da672290b07113270b3 +9f7f4b1e385fbbe8a379471a3a5cb7e4f5dbc490658cd1d3f8edc25440224d81 +9ba87427090613346eb1a17d491c3661b9e6f3dec894698acdd7fcebbd584125 +528597aa782b0f0415316cb072290b07113270b39f7f4b1e385fbbe8f1e0ca95 +6788ccd9feeabf5a4323508799ac762d0d02162f6aaea47b45183c5db5e2f7dc +c692638ecfd5faefc0563e204e839da6bd584125528597aa782b0f0415316cb0 +a379471a3a5cb7e4f5dbc490658cd1d3f8edc25440224d819ba8742709061334 +6eb1a17d491c3661b9e6f3dec894698acdd7fcebc692638ecfd5faefc0563e20 +4e839da672290b07113270b39f7f4b1e385fbbe8f1e0ca956788ccd9feeabf5a +4323508799ac762d0d02162f6aaea47b45183c5db5e2f7dc491c3661b9e6f3de +c894698acdd7fcebbd584125528597aa782b0f0415316cb0a379471a3a5cb7e4 +f5dbc490658cd1d3f8edc25440224d819ba87427090613346eb1a17d0d02162f +6aaea47b45183c5db5e2f7dcc692638ecfd5faefc0563e204e839da672290b07 +113270b39f7f4b1e385fbbe8f1e0ca956788ccd9feeabf5a4323508799ac762d +40224d819ba87427090613346eb1a17d491c3661b9e6f3dec894698acdd7fceb +bd584125528597aa782b0f0415316cb0a379471a3a5cb7e4f5dbc490658cd1d3 +f8edc2546788ccd9feeabf5a4323508799ac762d0d02162f6aaea47b45183c5d +b5e2f7dcc692638ecfd5faefc0563e204e839da672290b07113270b39f7f4b1e +385fbbe8f1e0ca953a5cb7e4f5dbc490658cd1d3f8edc25440224d819ba87427 +090613346eb1a17d491c3661b9e6f3dec894698acdd7fcebbd584125528597aa +782b0f0415316cb0a379471a113270b39f7f4b1e385fbbe8f1e0ca956788ccd9 +feeabf5a4323508799ac762d0d02162f6aaea47b45183c5db5e2f7dcc692638e +cfd5faefc0563e204e839da672290b07528597aa782b0f0415316cb0a379471a +3a5cb7e4f5dbc490658cd1d3f8edc25440224d819ba87427090613346eb1a17d +491c3661b9e6f3dec894698acdd7fcebbd584125cfd5faefc0563e204e839da6 +72290b07113270b39f7f4b1e385fbbe8f1e0ca956788ccd9feeabf5a43235087 +99ac762d0d02162f6aaea47b45183c5db5e2f7dcc692638eb9e6f3dec894698a +cdd7fcebbd584125528597aa782b0f0415316cb0a379471a3a5cb7e4f5dbc490 +658cd1d3f8edc25440224d819ba87427090613346eb1a17d491c36616aaea47b +45183c5db5e2f7dcc692638ecfd5faefc0563e204e839da672290b07113270b3 +9f7f4b1e385fbbe8f1e0ca956788ccd9feeabf5a4323508799ac762d0d02162f +9ba87427090613346eb1a17d491c3661b9e6f3dec894698acdd7fcebbd584125 +528597aa782b0f0415316cb0a379471a3a5cb7e4f5dbc490658cd1d3f8edc254 +40224d81feeabf5a4323508799ac762d0d02162f6aaea47b45183c5db5e2f7dc +c692638ecfd5faefc0563e204e839da672290b07113270b39f7f4b1e385fbbe8 +f1e0ca956788ccd9f5dbc490658cd1d3f8edc25440224d819ba8742709061334 +6eb1a17d491c3661b9e6f3dec894698acdd7fcebbd584125528597aa782b0f04 +15316cb0a379471a3a5cb7e49f7f4b1e385fbbe8f1e0ca956788ccd9feeabf5a +4323508799ac762d0d02162f6aaea47b45183c5db5e2f7dcc692638ecfd5faef +c0563e204e839da672290b07113270b3782b0f0415316cb0a379471a3a5cb7e4 +f5dbc490658cd1d3f8edc25440224d819ba87427090613346eb1a17d491c3661 +b9e6f3dec894698acdd7fcebbd584125528597aac0563e204e839da672290b07 +113270b39f7f4b1e385fbbe8f1e0ca956788ccd9feeabf5a4323508799ac762d +0d02162f6aaea47b45183c5db5e2f7dcc692638ecfd5faefc894698acdd7fceb +bd584125528597aa782b0f0415316cb0a379471a3a5cb7e4f5dbc490658cd1d3 +f8edc25440224d819ba87427090613346eb1a17d491c3661b9e6f3de45183c5d +b5e2f7dcc692638ecfd5faefc0563e204e839da672290b07113270b39f7f4b1e +385fbbe8f1e0ca956788ccd9feeabf5a4323508799ac762d0d02162f6aaea47b +090613346eb1a17d491c3661b9e6f3dec894698acdd7fcebbd584125528597aa +782b0f0415316cb0a379471a3a5cb7e4f5dbc490658cd1d3f8edc25440224d81 +9ba874274323508799ac762d0d02162f6aaea47b45183c5db5e2f7dcc692638e +cfd5faefc0563e204e839da672290b07113270b39f7f4b1e385fbbe8f1e0ca95 +6788ccd9feeabf5a> + >> + /Yellow << +% w=12 h=6 strip=1 shift=0 + /HalftoneType 3 + /Width 12 + /Height 6 + /TransferFunction {0 max 1 min 0.8 exp} bind + /Thresholds < +7138200e124366312a041c3ff3b3785889ccfdb07b6286d0e8be9b4da5deecc5 +9454a2da6a2e2707193c6d35230b1546faac7f5f82d3f6b7745b8dc8efc19051 +9ed7e5ba974aa9e1> + >> + /Default << +% w=24 h=6 strip=2 shift=12 + /HalftoneType 3 + /Width 24 + /Height 12 + /TransferFunction {0 max 1 min 0.8 exp} bind + /Thresholds < +4c53657a9db0b8a99684615a4e55667c9fafb6a89886635c6f2c190b2a3e92cd +e5f7d7c2712e1709294094cbe4f5d6c08a451e04103876bfddfbf0d488472002 +123778bddef9eed2b2a69a815f584a51687da2adb4a49b835e56484f6a7fa1ab +8fc9e9f4dbc66d301a0e273a91c7e7f2d9c46c311c0c253c73bbe2fcecce8b43 +2205133574b9e0feebd08d41230715334e55667c9fafb6a89886635c4c53657a +9db0b8a99684615a712e1709294094cbe4f5d6c06f2c190b2a3e92cde5f7d7c2 +88472002123778bddef9eed28a451e04103876bfddfbf0d4b4a49b835e56484f +6a7fa1abb2a69a815f584a51687da2ad91c7e7f2d9c46c311c0c253c8fc9e9f4 +dbc66d301a0e273a74b9e0feebd08d412307153373bbe2fcecce8b4322051335> + >> +>> + +/Default exch /Halftone defineresource +sethalftone + +{0 max 1 min 0.8 exp} bind dup dup dup setcolortransfer + diff --git a/crd/zjs/screen2400.ps b/crd/zjs/screen2400.ps new file mode 100644 index 0000000..95f655f --- /dev/null +++ b/crd/zjs/screen2400.ps @@ -0,0 +1,357 @@ + +/m2300_transfer {0 max 1 min 0.8 exp} bind def +/m2300_transfer load dup dup dup setcolortransfer + +<< + /HalftoneType 5 + /Cyan << +% w=136 h=2 strip=17 shift=104 + /HalftoneType 3 + /Width 136 + /Height 34 + /TransferFunction /m2300_transfer load + /Thresholds < +787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393a8b1a18d6c533117 +0c0b020710192f50678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d8 +c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e88 +6a512c160f09040612152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7 +ffece7d5c5b8817d3c486097bcd1e0f2f8ede6d3c6b6807a777c86b7c5d3e4ee +f9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a1107030a0d182e55 +688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7c8b9827b757e84ba +c9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f896d542a1613050108 +0e142d50668ca5afac926e5e45341d2612152b56698ba4b4a8916d5747321e25 +394d619cbfd0dbf7ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b +3f27223344597393a8b1a18d6c5331170c0b020710192f50678aa2b2a694715d +43361b233b496598c1cedcf5fdf0e5d8c7b5837f767c85b6cad9e3effef6dacd +c29a5f4f3d281f38415b708fa7b39e886a512c160f090406425a6f90aaae9f89 +6d542a16130501080e142d50668ca5afac926e5e45341d263c486097bcd1e0f2 +f8ede6d3c6b6807a777c86b7c5d3e4eef9f1ded2bd9b644c40242033465c7496 +abb0a08e6b52301a1107030a0d182e55688aa3ada995725842371c293a4e639d +c0cbdff0fbe9e8d7c8b9827b757e84bac9d6e2eafaf3e1ccc3995f4a3e242135 +cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e886a512c160f090406 +12152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7ffece7d5c5b8817d +787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393a8b1a18d6c533117 +0c0b020710192f50678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d8 +c7b5837f767c85b6c0cbdff0fbe9e8d7c8b9827b757e84bac9d6e2eafaf3e1cc +c3995f4a3e242135425a6f90aaae9f896d542a16130501080e142d50668ca5af +ac926e5e45341d263c486097bcd1e0f2f8ede6d3c6b6807a777c86b7c5d3e4ee +f9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a1107030a0d182e55 +688aa3ada995725842371c293a4e639d678aa2b2a694715d43361b233b496598 +c1cedcf5fdf0e5d8c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38 +415b708fa7b39e886a512c160f09040612152b56698ba4b4a8916d5747321e25 +394d619cbfd0dbf7ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b +3f27223344597393a8b1a18d6c5331170c0b020710192f50abb0a08e6b52301a +1107030a0d182e55688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7 +c8b9827b757e84bac9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f89 +6d542a16130501080e142d50668ca5afac926e5e45341d263c486097bcd1e0f2 +f8ede6d3c6b6807a777c86b7c5d3e4eef9f1ded2bd9b644c40242033465c7496 +fcf4ddcfbe99624b3f27223344597393a8b1a18d6c5331170c0b020710192f50 +678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d8c7b5837f767c85b6 +cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e886a512c160f090406 +12152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7ffece7d5c5b8817d +787987bbc4d4e2ebf8ede6d3c6b6807a777c86b7c5d3e4eef9f1ded2bd9b644c +40242033465c7496abb0a08e6b52301a1107030a0d182e55688aa3ada9957258 +42371c293a4e639dc0cbdff0fbe9e8d7c8b9827b757e84bac9d6e2eafaf3e1cc +c3995f4a3e242135425a6f90aaae9f896d542a16130501080e142d50668ca5af +ac926e5e45341d263c486097bcd1e0f2a8916d5747321e25394d619cbfd0dbf7 +ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393 +a8b1a18d6c5331170c0b020710192f50678aa2b2a694715d43361b233b496598 +c1cedcf5fdf0e5d8c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38 +415b708fa7b39e886a512c160f09040612152b56698ba4b46d542a1613050108 +0e142d50668ca5afac926e5e45341d263c486097bcd1e0f2f8ede6d3c6b6807a +777c86b7c5d3e4eef9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a +1107030a0d182e55688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7 +c8b9827b757e84bac9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f89 +c29a5f4f3d281f38415b708fa7b39e886a512c160f09040612152b56698ba4b4 +a8916d5747321e25394d619cbfd0dbf7ffece7d5c5b8817d787987bbc4d4e2eb +fcf4ddcfbe99624b3f27223344597393a8b1a18d6c5331170c0b020710192f50 +678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d8c7b5837f767c85b6 +cad9e3effef6dacdc8b9827b757e84bac9d6e2eafaf3e1ccc3995f4a3e242135 +425a6f90aaae9f896d542a16130501080e142d50668ca5afac926e5e45341d26 +3c486097bcd1e0f2f8ede6d3c6b6807a777c86b7c5d3e4eef9f1ded2bd9b644c +40242033465c7496abb0a08e6b52301a1107030a0d182e55688aa3ada9957258 +42371c293a4e639dc0cbdff0fbe9e8d743361b233b496598c1cedcf5fdf0e5d8 +c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e88 +6a512c160f09040612152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7 +ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393 +a8b1a18d6c5331170c0b020710192f50678aa2b2a694715d1107030a0d182e55 +688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7c8b9827b757e84ba +c9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f896d542a1613050108 +0e142d50668ca5afac926e5e45341d263c486097bcd1e0f2f8ede6d3c6b6807a +777c86b7c5d3e4eef9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a +3f27223344597393a8b1a18d6c5331170c0b020710192f50678aa2b2a694715d +43361b233b496598c1cedcf5fdf0e5d8c7b5837f767c85b6cad9e3effef6dacd +c29a5f4f3d281f38415b708fa7b39e886a512c160f09040612152b56698ba4b4 +a8916d5747321e25394d619cbfd0dbf7ffece7d5c5b8817d787987bbc4d4e2eb +fcf4ddcfbe99624b777c86b7c5d3e4eef9f1ded2bd9b644c40242033465c7496 +abb0a08e6b52301a1107030a0d182e55688aa3ada995725842371c293a4e639d +c0cbdff0fbe9e8d7c8b9827b757e84bac9d6e2eafaf3e1ccc3995f4a3e242135 +425a6f90aaae9f896d542a16130501080e142d50668ca5afac926e5e45341d26 +3c486097bcd1e0f2f8ede6d3c6b6807a394d619cbfd0dbf7ffece7d5c5b8817d +787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393a8b1a18d6c533117 +0c0b020710192f50678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d8 +c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e88 +6a512c160f09040612152b56698ba4b4a8916d5747321e250e142d50668ca5af +ac926e5e45341d263c486097bcd1e0f2f8ede6d3c6b6807a777c86b7c5d3e4ee +f9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a1107030a0d182e55 +688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7c8b9827b757e84ba +c9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f896d542a1613050108 +415b708fa7b39e886a512c160f09040612152b56698ba4b4a8916d5747321e25 +394d619cbfd0dbf7ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b +3f27223344597393a8b1a18d6c5331170c0b020710192f50678aa2b2a694715d +43361b233b496598c1cedcf5fdf0e5d8c7b5837f767c85b6cad9e3effef6dacd +c29a5f4f3d281f38c9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f89 +6d542a16130501080e142d50668ca5afac926e5e45341d263c486097bcd1e0f2 +f8ede6d3c6b6807a777c86b7c5d3e4eef9f1ded2bd9b644c40242033465c7496 +abb0a08e6b52301a1107030a0d182e55688aa3ada995725842371c293a4e639d +c0cbdff0fbe9e8d7c8b9827b757e84bac1cedcf5fdf0e5d8c7b5837f767c85b6 +cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e886a512c160f090406 +12152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7ffece7d5c5b8817d +787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393a8b1a18d6c533117 +0c0b020710192f50678aa2b2a694715d43361b233b496598688aa3ada9957258 +42371c293a4e639dc0cbdff0fbe9e8d7c8b9827b757e84bac9d6e2eafaf3e1cc +c3995f4a3e242135425a6f90aaae9f896d542a16130501080e142d50668ca5af +ac926e5e45341d263c486097bcd1e0f2f8ede6d3c6b6807a777c86b7c5d3e4ee +f9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a1107030a0d182e55 +a8b1a18d6c5331170c0b020710192f50678aa2b2a694715d43361b233b496598 +c1cedcf5fdf0e5d8c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38 +415b708fa7b39e886a512c160f09040612152b56698ba4b4a8916d5747321e25 +394d619cbfd0dbf7ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b +3f27223344597393f9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a +1107030a0d182e55688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7 +c8b9827b757e84bac9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f89 +6d542a16130501080e142d50668ca5afac926e5e45341d263c486097bcd1e0f2 +f8ede6d3c6b6807a777c86b7c5d3e4eeffece7d5c5b8817d787987bbc4d4e2eb +fcf4ddcfbe99624b3f27223344597393a8b1a18d6c5331170c0b020710192f50 +678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d8c7b5837f767c85b6 +cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e886a512c160f090406 +12152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7ac926e5e45341d26 +3c486097bcd1e0f2f8ede6d3c6b6807a777c86b7c5d3e4eef9f1ded2bd9b644c +40242033465c7496abb0a08e6b52301a1107030a0d182e55688aa3ada9957258 +42371c293a4e639dc0cbdff0fbe9e8d7c8b9827b757e84bac9d6e2eafaf3e1cc +c3995f4a3e242135425a6f90aaae9f896d542a16130501080e142d50668ca5af +6a512c160f09040612152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7 +ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393 +a8b1a18d6c5331170c0b020710192f50678aa2b2a694715d43361b233b496598 +c1cedcf5fdf0e5d8c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38 +415b708fa7b39e88c3995f4a3e242135425a6f90aaae9f896d542a1613050108 +0e142d50668ca5afac926e5e45341d263c486097bcd1e0f2f8ede6d3c6b6807a +777c86b7c5d3e4eef9f1ded2bd9b644c40242033465c7496abb0a08e6b52301a +1107030a0d182e55688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7 +c8b9827b757e84bac9d6e2eafaf3e1ccc7b5837f767c85b6cad9e3effef6dacd +c29a5f4f3d281f38415b708fa7b39e886a512c160f09040612152b56698ba4b4 +a8916d5747321e25394d619cbfd0dbf7ffece7d5c5b8817d787987bbc4d4e2eb +fcf4ddcfbe99624b3f27223344597393a8b1a18d6c5331170c0b020710192f50 +678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d842371c293a4e639d +c0cbdff0fbe9e8d7c8b9827b757e84bac9d6e2eafaf3e1ccc3995f4a3e242135 +425a6f90aaae9f896d542a16130501080e142d50668ca5afac926e5e45341d26 +3c486097bcd1e0f2f8ede6d3c6b6807a777c86b7c5d3e4eef9f1ded2bd9b644c +40242033465c7496abb0a08e6b52301a1107030a0d182e55688aa3ada9957258 +0c0b020710192f50678aa2b2a694715d43361b233b496598c1cedcf5fdf0e5d8 +c7b5837f767c85b6cad9e3effef6dacdc29a5f4f3d281f38415b708fa7b39e88 +6a512c160f09040612152b56698ba4b4a8916d5747321e25394d619cbfd0dbf7 +ffece7d5c5b8817d787987bbc4d4e2ebfcf4ddcfbe99624b3f27223344597393 +a8b1a18d6c53311740242033465c7496abb0a08e6b52301a1107030a0d182e55 +688aa3ada995725842371c293a4e639dc0cbdff0fbe9e8d7c8b9827b757e84ba +c9d6e2eafaf3e1ccc3995f4a3e242135425a6f90aaae9f896d542a1613050108 +0e142d50668ca5afac926e5e45341d263c486097bcd1e0f2f8ede6d3c6b6807a +777c86b7c5d3e4eef9f1ded2bd9b644c> + >> + /Magenta << +% w=136 h=2 strip=17 shift=32 + /HalftoneType 3 + /Width 136 + /Height 34 + /TransferFunction /m2300_transfer load + /Thresholds < +625f50463c2918090416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5 +f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c +36494f5d6460524a372d190f011523333e5588a5c1cfd6cab7a994836d6a778c +9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514 +070c17283a444d5cc5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b8 +9f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a39484e5b655f514b +3b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfb +f1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10070d1c2635474c5e +6361504538271b080211222f435885a7f2fafff6ede7e3bb9b8d786b6e8295ac +b6c8dbd3c4a686543d342416060a1a2c36494f5d6460524a372d190f01152333 +3e5588a5c1cfd6cab7a994836d6a778c9abedfe9f0f8fdf4f0ebdebc9d92766d +6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c625f50463c291809 +0416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5b6c9d7d5c2a88753 +40322112050b1e2a39484e5b655f514b3b2b1d0e031320333f5689a3c5d1dcc7 +b5af997f7466798b9ebfe0e6eff7fcfbf1e8e1bda1917a67738196abb1cdd9d3 +c0a48a5942301f10070d1c2635474c5e6361504538271b080211222f435885a7 +c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b89f8e7c69727d98ae +36494f5d6460524a372d190f011523333e5588a5c1cfd6cab7a994836d6a778c +9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514 +070c17283a444d5c625f50463c2918090416242e425784a8c3d2d8ccb4b0997e +706c758f9cbae4e5f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a68654 +3d342416060a1a2c3f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfb +f1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10070d1c2635474c5e +6361504538271b080211222f435885a7c5d0dacbb3aa938071687b90a0b9e2ea +eef5fef9f3ece2b89f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a +39484e5b655f514b3b2b1d0e031320339abedfe9f0f8fdf4f0ebdebc9d92766d +6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c625f50463c291809 +0416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5f2fafff6ede7e3bb +9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c36494f5d6460524a +372d190f011523333e5588a5c1cfd6cab7a994836d6a778c738196abb1cdd9d3 +c0a48a5942301f10070d1c2635474c5e6361504538271b080211222f435885a7 +c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b89f8e7c69727d98ae +b6c9d7d5c2a8875340322112050b1e2a39484e5b655f514b3b2b1d0e03132033 +3f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfbf1e8e1bda1917a67 +070c17283a444d5c625f50463c2918090416242e425784a8c3d2d8ccb4b0997e +706c758f9cbae4e5f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a68654 +3d342416060a1a2c36494f5d6460524a372d190f011523333e5588a5c1cfd6ca +b7a994836d6a778c9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4 +c6a28a5a413125140211222f435885a7c5d0dacbb3aa938071687b90a0b9e2ea +eef5fef9f3ece2b89f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a +39484e5b655f514b3b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b +9ebfe0e6eff7fcfbf1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10 +070d1c2635474c5e6361504538271b08706c758f9cbae4e5f2fafff6ede7e3bb +9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c36494f5d6460524a +372d190f011523333e5588a5c1cfd6cab7a994836d6a778c9abedfe9f0f8fdf4 +f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c +625f50463c2918090416242e425784a8c3d2d8ccb4b0997e9f8e7c69727d98ae +b6c9d7d5c2a8875340322112050b1e2a39484e5b655f514b3b2b1d0e03132033 +3f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfbf1e8e1bda1917a67 +738196abb1cdd9d3c0a48a5942301f10070d1c2635474c5e6361504538271b08 +0211222f435885a7c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b8 +3d342416060a1a2c36494f5d6460524a372d190f011523333e5588a5c1cfd6ca +b7a994836d6a778c9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4 +c6a28a5a41312514070c17283a444d5c625f50463c2918090416242e425784a8 +c3d2d8ccb4b0997e706c758f9cbae4e5f2fafff6ede7e3bb9b8d786b6e8295ac +b6c8dbd3c4a686543b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b +9ebfe0e6eff7fcfbf1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10 +070d1c2635474c5e6361504538271b080211222f435885a7c5d0dacbb3aa9380 +71687b90a0b9e2eaeef5fef9f3ece2b89f8e7c69727d98aeb6c9d7d5c2a88753 +40322112050b1e2a39484e5b655f514bb7a994836d6a778c9abedfe9f0f8fdf4 +f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c +625f50463c2918090416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5 +f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c +36494f5d6460524a372d190f011523333e5588a5c1cfd6caf1e8e1bda1917a67 +738196abb1cdd9d3c0a48a5942301f10070d1c2635474c5e6361504538271b08 +0211222f435885a7c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b8 +9f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a39484e5b655f514b +3b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfb +c6a28a5a41312514070c17283a444d5c625f50463c2918090416242e425784a8 +c3d2d8ccb4b0997e706c758f9cbae4e5f2fafff6ede7e3bb9b8d786b6e8295ac +b6c8dbd3c4a686543d342416060a1a2c36494f5d6460524a372d190f01152333 +3e5588a5c1cfd6cab7a994836d6a778c9abedfe9f0f8fdf4f0ebdebc9d92766d +6f7c97adb2ceddd46361504538271b080211222f435885a7c5d0dacbb3aa9380 +71687b90a0b9e2eaeef5fef9f3ece2b89f8e7c69727d98aeb6c9d7d5c2a88753 +40322112050b1e2a39484e5b655f514b3b2b1d0e031320333f5689a3c5d1dcc7 +b5af997f7466798b9ebfe0e6eff7fcfbf1e8e1bda1917a67738196abb1cdd9d3 +c0a48a5942301f10070d1c2635474c5ec3d2d8ccb4b0997e706c758f9cbae4e5 +f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c +36494f5d6460524a372d190f011523333e5588a5c1cfd6cab7a994836d6a778c +9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514 +070c17283a444d5c625f50463c2918090416242e425784a8eef5fef9f3ece2b8 +9f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a39484e5b655f514b +3b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfb +f1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10070d1c2635474c5e +6361504538271b080211222f435885a7c5d0dacbb3aa938071687b90a0b9e2ea +b6c8dbd3c4a686543d342416060a1a2c36494f5d6460524a372d190f01152333 +3e5588a5c1cfd6cab7a994836d6a778c9abedfe9f0f8fdf4f0ebdebc9d92766d +6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c625f50463c291809 +0416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5f2fafff6ede7e3bb +9b8d786b6e8295ac39484e5b655f514b3b2b1d0e031320333f5689a3c5d1dcc7 +b5af997f7466798b9ebfe0e6eff7fcfbf1e8e1bda1917a67738196abb1cdd9d3 +c0a48a5942301f10070d1c2635474c5e6361504538271b080211222f435885a7 +c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b89f8e7c69727d98ae +b6c9d7d5c2a8875340322112050b1e2a3e5588a5c1cfd6cab7a994836d6a778c +9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514 +070c17283a444d5c625f50463c2918090416242e425784a8c3d2d8ccb4b0997e +706c758f9cbae4e5f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a68654 +3d342416060a1a2c36494f5d6460524a372d190f011523339ebfe0e6eff7fcfb +f1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10070d1c2635474c5e +6361504538271b080211222f435885a7c5d0dacbb3aa938071687b90a0b9e2ea +eef5fef9f3ece2b89f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a +39484e5b655f514b3b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b +6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c625f50463c291809 +0416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5f2fafff6ede7e3bb +9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c36494f5d6460524a +372d190f011523333e5588a5c1cfd6cab7a994836d6a778c9abedfe9f0f8fdf4 +f0ebdebc9d92766d070d1c2635474c5e6361504538271b080211222f435885a7 +c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b89f8e7c69727d98ae +b6c9d7d5c2a8875340322112050b1e2a39484e5b655f514b3b2b1d0e03132033 +3f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfbf1e8e1bda1917a67 +738196abb1cdd9d3c0a48a5942301f100416242e425784a8c3d2d8ccb4b0997e +706c758f9cbae4e5f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a68654 +3d342416060a1a2c36494f5d6460524a372d190f011523333e5588a5c1cfd6ca +b7a994836d6a778c9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4 +c6a28a5a41312514070c17283a444d5c625f50463c29180971687b90a0b9e2ea +eef5fef9f3ece2b89f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a +39484e5b655f514b3b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b +9ebfe0e6eff7fcfbf1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10 +070d1c2635474c5e6361504538271b080211222f435885a7c5d0dacbb3aa9380 +9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c36494f5d6460524a +372d190f011523333e5588a5c1cfd6cab7a994836d6a778c9abedfe9f0f8fdf4 +f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c +625f50463c2918090416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5 +f2fafff6ede7e3bb40322112050b1e2a39484e5b655f514b3b2b1d0e03132033 +3f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfbf1e8e1bda1917a67 +738196abb1cdd9d3c0a48a5942301f10070d1c2635474c5e6361504538271b08 +0211222f435885a7c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b8 +9f8e7c69727d98aeb6c9d7d5c2a88753372d190f011523333e5588a5c1cfd6ca +b7a994836d6a778c9abedfe9f0f8fdf4f0ebdebc9d92766d6f7c97adb2ceddd4 +c6a28a5a41312514070c17283a444d5c625f50463c2918090416242e425784a8 +c3d2d8ccb4b0997e706c758f9cbae4e5f2fafff6ede7e3bb9b8d786b6e8295ac +b6c8dbd3c4a686543d342416060a1a2c36494f5d6460524ab5af997f7466798b +9ebfe0e6eff7fcfbf1e8e1bda1917a67738196abb1cdd9d3c0a48a5942301f10 +070d1c2635474c5e6361504538271b080211222f435885a7c5d0dacbb3aa9380 +71687b90a0b9e2eaeef5fef9f3ece2b89f8e7c69727d98aeb6c9d7d5c2a88753 +40322112050b1e2a39484e5b655f514b3b2b1d0e031320333f5689a3c5d1dcc7 +f0ebdebc9d92766d6f7c97adb2ceddd4c6a28a5a41312514070c17283a444d5c +625f50463c2918090416242e425784a8c3d2d8ccb4b0997e706c758f9cbae4e5 +f2fafff6ede7e3bb9b8d786b6e8295acb6c8dbd3c4a686543d342416060a1a2c +36494f5d6460524a372d190f011523333e5588a5c1cfd6cab7a994836d6a778c +9abedfe9f0f8fdf4c0a48a5942301f10070d1c2635474c5e6361504538271b08 +0211222f435885a7c5d0dacbb3aa938071687b90a0b9e2eaeef5fef9f3ece2b8 +9f8e7c69727d98aeb6c9d7d5c2a8875340322112050b1e2a39484e5b655f514b +3b2b1d0e031320333f5689a3c5d1dcc7b5af997f7466798b9ebfe0e6eff7fcfb +f1e8e1bda1917a67738196abb1cdd9d3> + >> + /Yellow << +% w=24 h=6 strip=1 shift=0 + /HalftoneType 3 + /Width 24 + /Height 6 + /TransferFunction /m2300_transfer load + /Thresholds < +7c553a272313020c1c293c5c7a53332e1a15040e1e2a375afcdbcb9d8366475f +88a2d2d9fee2c9a68f7845719aa8d4ddf2eec0af916f4a769babbbf0f7e9c6b8 +8b5e486586b4b9e57f56352c190b05122030384f7d583e252209071017314051 +f9e0cea48d63436884a9cddefbd7d09f966c417394a1c7d6f5e7bfb698744e6d +92b2c2e4f4ebbdb0816a4c618aadc4ec> + >> + /Default << +% w=48 h=6 strip=2 shift=24 + /HalftoneType 3 + /Width 48 + /Height 12 + /TransferFunction /m2300_transfer load + /Thresholds < +5153695d75627e94a58b99b0aaada2978a9f816d775e66544f57675a72617d93 +a48d9baba8afa196889d836b7659645870463925160c070f222d3c4886bbc8d5 +e9f7fdeee1cfc1b26e45372a1b0e04121f2f394985bacad9e5f6fff0ddd3c2b3 +8e4a3a301e15030b1c2933417ab6c3d1deebf3f8e3dbcbba91483b2c22130109 +182435437bb8c5cee2edf1fae7d8cdb9a7b1a398899c806e785c65565052685f +73637e92a48c9aaea9aba095879e826c765f675550586a5b74607f94a68d9cac +84bfc7dae4f9f4ecdcd1c2b36f443626170a0613212e3e4b85bcc9d6e8fbf2ea +e0d4c0b47147382a1b08051420313f4e79b5c6d2e1effcf5e8d7ccbd904c4031 +1d11020b1a2832427cb7c4d0dff0fef7e6d9cabe8f4d3d2b2310040d19273441 +4f57675a72617d93a48d9baba8afa196889d836b765964585153695d75627e94 +a58b99b0aaada2978a9f816d775e66546e45372a1b0e04121f2f394985bacad9 +e5f6fff0ddd3c2b370463925160c070f222d3c4886bbc8d5e9f7fdeee1cfc1b2 +91483b2c22130109182435437bb8c5cee2edf1fae7d8cdb98e4a3a301e15030b +1c2933417ab6c3d1deebf3f8e3dbcbbaa9aba095879e826c765f675550586a5b +74607f94a68d9caca7b1a398899c806e785c65565052685f73637e92a48c9aae +85bcc9d6e8fbf2eae0d4c0b47147382a1b08051420313f4e84bfc7dae4f9f4ec +dcd1c2b36f443626170a0613212e3e4b7cb7c4d0dff0fef7e6d9cabe8f4d3d2b +2310040d1927344179b5c6d2e1effcf5e8d7ccbd904c40311d11020b1a283242> + >> +>> + +/Default exch /Halftone defineresource +sethalftone + + diff --git a/cups.h b/cups.h new file mode 100644 index 0000000..5c83e6f --- /dev/null +++ b/cups.h @@ -0,0 +1,226 @@ +/* + * Raster file definitions for the Common UNIX Printing System (CUPS). + * + * Copyright 1997-2006 by Easy Software Products. + * + * This file is part of the CUPS Imaging library. + * + * These coded instructions, statements, and computer programs are the + * property of Easy Software Products and are protected by Federal + * copyright law. Distribution and use rights are outlined in the file + * "LICENSE.txt" which should have been included with this file. If this + * file is missing or damaged please contact Easy Software Products + * at: + * + * Attn: CUPS Licensing Information + * Easy Software Products + * 44141 Airport View Drive, Suite 204 + * Hollywood, Maryland 20636 USA + * + * Voice: (301) 373-9600 + * EMail: cups-info@cups.org + * WWW: http://www.cups.org + * + * This code and any derivative of it may be used and distributed + * freely under the terms of the GNU General Public License when + * used with GNU/GPL Ghostscript or its derivatives. Use of the + * code (or any derivative of it) with software other than GNU/GPL + * GhostScript (or its derivatives) is governed by the CUPS license + * agreement. + * + * This file is subject to the Apple OS-Developed Software exception. + */ + +#ifndef _CUPS_RASTER_H_ +# define _CUPS_RASTER_H_ + +/* + * Constants... + */ + +# define CUPS_RASTER_SYNC 0x52615333 /* RaS3 */ +# define CUPS_RASTER_REVSYNC 0x33536152 /* 3SaR */ + +# define CUPS_RASTER_SYNCv1 0x52615374 /* RaSt */ +# define CUPS_RASTER_REVSYNCv1 0x74536152 /* tSaR */ + +# define CUPS_RASTER_SYNCv2 0x52615332 /* RaS2 */ +# define CUPS_RASTER_REVSYNCv2 0x32536152 /* 2SaR */ + + +/* + * Types... + */ + +typedef enum cups_bool_e /**** Boolean type ****/ +{ + CUPS_FALSE = 0, /* Logical false */ + CUPS_TRUE = 1 /* Logical true */ +} cups_bool_t; + +typedef enum cups_jog_e /**** Jog attribute values ****/ +{ + CUPS_JOG_NONE = 0, /* Never move pages */ + CUPS_JOG_FILE = 1, /* Move pages after this file */ + CUPS_JOG_JOB = 2, /* Move pages after this job */ + CUPS_JOG_SET = 3 /* Move pages after this set */ +} cups_jog_t; + +typedef enum cups_orient_e /**** Orientation attribute values ****/ +{ + CUPS_ORIENT_0 = 0, /* Don't rotate the page */ + CUPS_ORIENT_90 = 1, /* Rotate the page counter-clockwise */ + CUPS_ORIENT_180 = 2, /* Turn the page upside down */ + CUPS_ORIENT_270 = 3 /* Rotate the page clockwise */ +} cups_orient_t; + +typedef enum cups_cut_e /**** CutMedia attribute values ****/ +{ + CUPS_CUT_NONE = 0, /* Never cut the roll */ + CUPS_CUT_FILE = 1, /* Cut the roll after this file */ + CUPS_CUT_JOB = 2, /* Cut the roll after this job */ + CUPS_CUT_SET = 3, /* Cut the roll after this set */ + CUPS_CUT_PAGE = 4 /* Cut the roll after this page */ +} cups_cut_t; + +typedef enum cups_adv_e /**** AdvanceMedia attribute values ****/ +{ + CUPS_ADVANCE_NONE = 0, /* Never advance the roll */ + CUPS_ADVANCE_FILE = 1, /* Advance the roll after this file */ + CUPS_ADVANCE_JOB = 2, /* Advance the roll after this job */ + CUPS_ADVANCE_SET = 3, /* Advance the roll after this set */ + CUPS_ADVANCE_PAGE = 4 /* Advance the roll after this page */ +} cups_adv_t; + +typedef enum cups_edge_e /**** LeadingEdge attribute values ****/ +{ + CUPS_EDGE_TOP = 0, /* Leading edge is the top of the page */ + CUPS_EDGE_RIGHT = 1, /* Leading edge is the right of the page */ + CUPS_EDGE_BOTTOM = 2, /* Leading edge is the bottom of the page */ + CUPS_EDGE_LEFT = 3 /* Leading edge is the left of the page */ +} cups_edge_t; + +typedef enum cups_order_e /**** cupsColorOrder attribute values ****/ +{ + CUPS_ORDER_CHUNKED = 0, /* CMYK CMYK CMYK ... */ + CUPS_ORDER_BANDED = 1, /* CCC MMM YYY KKK ... */ + CUPS_ORDER_PLANAR = 2 /* CCC ... MMM ... YYY ... KKK ... */ +} cups_order_t; + +typedef enum cups_cspace_e /**** cupsColorSpace attribute values ****/ +{ + CUPS_CSPACE_W = 0, /* Luminance */ + CUPS_CSPACE_RGB = 1, /* Red, green, blue */ + CUPS_CSPACE_RGBA = 2, /* Red, green, blue, alpha */ + CUPS_CSPACE_K = 3, /* Black */ + CUPS_CSPACE_CMY = 4, /* Cyan, magenta, yellow */ + CUPS_CSPACE_YMC = 5, /* Yellow, magenta, cyan */ + CUPS_CSPACE_CMYK = 6, /* Cyan, magenta, yellow, black */ + CUPS_CSPACE_YMCK = 7, /* Yellow, magenta, cyan, black */ + CUPS_CSPACE_KCMY = 8, /* Black, cyan, magenta, yellow */ + CUPS_CSPACE_KCMYcm = 9, /* Black, cyan, magenta, yellow, * + * light-cyan, light-magenta */ + CUPS_CSPACE_GMCK = 10, /* Gold, magenta, yellow, black */ + CUPS_CSPACE_GMCS = 11, /* Gold, magenta, yellow, silver */ + CUPS_CSPACE_WHITE = 12, /* White ink (as black) */ + CUPS_CSPACE_GOLD = 13, /* Gold foil */ + CUPS_CSPACE_SILVER = 14, /* Silver foil */ + + CUPS_CSPACE_CIEXYZ = 15, /* CIE XYZ @since CUPS 1.1.19@ */ + CUPS_CSPACE_CIELab = 16, /* CIE Lab @since CUPS 1.1.19@ */ + CUPS_CSPACE_RGBW = 17, /* Red, green, blue, white @since CUPS 1.2@ */ + + CUPS_CSPACE_ICC1 = 32, /* ICC-based, 1 color @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC2 = 33, /* ICC-based, 2 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC3 = 34, /* ICC-based, 3 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC4 = 35, /* ICC-based, 4 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC5 = 36, /* ICC-based, 5 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC6 = 37, /* ICC-based, 6 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC7 = 38, /* ICC-based, 7 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC8 = 39, /* ICC-based, 8 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICC9 = 40, /* ICC-based, 9 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICCA = 41, /* ICC-based, 10 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICCB = 42, /* ICC-based, 11 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICCC = 43, /* ICC-based, 12 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICCD = 44, /* ICC-based, 13 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICCE = 45, /* ICC-based, 14 colors @since CUPS 1.1.19@ */ + CUPS_CSPACE_ICCF = 46 /* ICC-based, 15 colors @since CUPS 1.1.19@ */ +} cups_cspace_t; + + +/* + * The page header structure contains the standard PostScript page device + * dictionary, along with some CUPS-specific parameters that are provided + * by the RIPs... + * + * The API supports a "version 1" (from CUPS 1.0 and 1.1) and a "version 2" + * (from CUPS 1.2 and higher) page header, for binary compatibility. + */ + +typedef struct cups_page_header_s /**** Version 1 Page Header ****/ +{ + /**** Standard Page Device Dictionary String Values ****/ + char MediaClass[64]; /* MediaClass string */ + char MediaColor[64]; /* MediaColor string */ + char MediaType[64]; /* MediaType string */ + char OutputType[64]; /* OutputType string */ + + /**** Standard Page Device Dictionary Integer Values ****/ + unsigned AdvanceDistance; /* AdvanceDistance value in points */ + cups_adv_t AdvanceMedia; /* AdvanceMedia value (see above) */ + cups_bool_t Collate; /* Collated copies value */ + cups_cut_t CutMedia; /* CutMedia value (see above) */ + cups_bool_t Duplex; /* Duplexed (double-sided) value */ + unsigned HWResolution[2]; /* Resolution in dots-per-inch */ + unsigned ImagingBoundingBox[4]; /* Pixel region that is painted (points) */ + cups_bool_t InsertSheet; /* InsertSheet value */ + cups_jog_t Jog; /* Jog value (see above) */ + cups_edge_t LeadingEdge; /* LeadingEdge value (see above) */ + unsigned Margins[2]; /* Lower-lefthand margins in points */ + cups_bool_t ManualFeed; /* ManualFeed value */ + unsigned MediaPosition; /* MediaPosition value */ + unsigned MediaWeight; /* MediaWeight value in grams/m^2 */ + cups_bool_t MirrorPrint; /* MirrorPrint value */ + cups_bool_t NegativePrint; /* NegativePrint value */ + unsigned NumCopies; /* Number of copies to produce */ + cups_orient_t Orientation; /* Orientation value (see above) */ + cups_bool_t OutputFaceUp; /* OutputFaceUp value */ + unsigned PageSize[2]; /* Width and length of page in points */ + cups_bool_t Separations; /* Separations value */ + cups_bool_t TraySwitch; /* TraySwitch value */ + cups_bool_t Tumble; /* Tumble value */ + + /**** CUPS Page Device Dictionary Values ****/ + unsigned cupsWidth; /* Width of page image in pixels */ + unsigned cupsHeight; /* Height of page image in pixels */ + unsigned cupsMediaType; /* Media type code */ + unsigned cupsBitsPerColor; /* Number of bits for each color */ + unsigned cupsBitsPerPixel; /* Number of bits for each pixel */ + unsigned cupsBytesPerLine; /* Number of bytes per line */ + cups_order_t cupsColorOrder; /* Order of colors */ + cups_cspace_t cupsColorSpace; /* True colorspace */ + unsigned cupsCompression; /* Device compression to use */ + unsigned cupsRowCount; /* Rows per band */ + unsigned cupsRowFeed; /* Feed between bands */ + unsigned cupsRowStep; /* Spacing between lines */ +} cups_page_header_t; + +typedef struct cups_page_header2_s /**** Version 2 Page Header @since CUPS 1.2@ ****/ +{ + /**** Version 2 Dictionary Values ****/ + unsigned cupsNumColors; /* Number of colors */ + float cupsBorderlessScalingFactor; + /* Scaling that was applied to page data */ + float cupsPageSize[2]; /* Floating point PageSize (scaling * + * factor not applied) */ + float cupsImagingBBox[4]; /* Floating point ImagingBoundingBox * + * (scaling factor not applied) */ + unsigned cupsInteger[16]; /* User-defined integer values */ + float cupsReal[16]; /* User-defined floating-point values */ + char cupsString[16][64]; /* User-defined string values */ + char cupsMarkerType[64]; /* Ink/toner type */ + char cupsRenderingIntent[64];/* Color rendering intent */ + char cupsPageSizeName[64]; /* PageSize name */ +} cups_page_header2_t; + +#endif /* !_CUPS_RASTER_H_ */ diff --git a/ddst.h b/ddst.h new file mode 100644 index 0000000..a7b97ee --- /dev/null +++ b/ddst.h @@ -0,0 +1,224 @@ +/* + * Manifest constants for the ZjStream protocol + * + * I'm told that a lot of this stuff came from a file called "zjrca.h". + * But a Google search does not turn up that file. I added my own + * improvements and missing pieces. -Rick + */ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +typedef enum { + XQX_START_DOC = 1, + XQX_END_DOC = 2, + XQX_START_PAGE = 3, + XQX_END_PAGE = 4, + XQX_START_PLANE = 5, + XQX_END_PLANE = 6, + XQX_JBIG = 7, + + // XQX_2600N_PAUSE =11, + // XQX_2600N =12, +} XQX_TYPE; + +typedef struct _XQX_HEADER { + DWORD type; /* ZJ_TYPE */ + DWORD items; /* total record size, includes sizeof(ZJ_HEADER) */ +} XQX_HEADER; + +typedef enum { + XQXI_DMDUPLEX = 0x10000002, // from DEVMODE (DMBIN?) + XQXI_DMDEFAULTSOURCE= 0x20000006, // from DEVMODE (DMBIN?) + XQXI_DMMEDIATYPE = 0x20000000, // from DEVMODE + XQXI_RESOLUTION_X = 0x20000008, // dots per inch + XQXI_RESOLUTION_Y = 0x20000009, + XQXI_RASTER_X = 0x2000000d, // dots per inch + XQXI_RASTER_Y = 0x2000000e, + XQXI_VIDEO_BPP = 0x2000000a, // video bits per pixel + XQXI_VIDEO_X = 0x2000000f, // video dimensions + XQXI_VIDEO_Y = 0x20000010, + XQXI_ECONOMODE = 0x20000011, // HP's "EconoMode", 0=OFF, 1=ON + XQXI_DMPAPER = 0x20000001, + XQXI_DUPLEX_PAUSE = 0x20000012, // 0,1=front side; 2-3=back side + XQXI_BIH = 0x40000002, + XQXI_END = 0x80000001, + + ZJI_LAST +} XQX_ITEM; + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +typedef enum { + DMBIN_TRAY1 = 1, + DMBIN_MANUAL = 4, + DMBIN_AUTO = 7, +} DM_BIN; + +typedef enum { + DMMEDIA_UNSPECIFIED = 0, // Unspecified + DMMEDIA_PLAIN = 1, // Plain paper + DMMEDIA_HP_MULTIPURPOSE = 301, + DMMEDIA_HP_OFFICE = 300, + DMMEDIA_HP_ALL_IN_ONE = 303, + DMMEDIA_HP_LASERJET = 302, + DMMEDIA_HP_PREMIUM_LASERJET = 304, + DMMEDIA_PREPRINTED = 514, + DMMEDIA_LETTERHEAD = 513, // Letterhead + DMMEDIA_TRANSPARENCY = 2, // Transparency + DMMEDIA_PREPUNCHED = 515, + DMMEDIA_LABELS = 265, // Labels + DMMEDIA_BOND = 260, + DMMEDIA_RECYCLED = 516, + DMMEDIA_COLOR = 512, + DMMEDIA_LIGHT = 258, + DMMEDIA_HEAVY = 262, + DMMEDIA_CARDSTOCK = 261, + DMMEDIA_ENVELOPE = 267, // Envelope + DMMEDIA_ROUGH = 263, +} DMMEDIA; + +typedef enum { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2, +} DMCOLOR; + +typedef enum { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2, +} DMORIENT; + +typedef enum { + DMPAPER_LETTER = 1, // Letter, 8 1/2- by 11-inches + DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches + DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches + DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches + DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches + DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches + DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches + DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters + DMPAPER_A4 = 9, // A4 Sheet, 210- by 297-millimeters + DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters + DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters + DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters + DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper + DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper + DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper + DMPAPER_10X14 =16, // 10- by 14-inch sheet + DMPAPER_11X17 =17, // 11- by 17-inch sheet + DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches + DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches + DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches + DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches + DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches + DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches + DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches + DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches + DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches + DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters + DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters + DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters + DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters + DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters + DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters + DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters + DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters + DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters + DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters + DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches + DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches + DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches + DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in + DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in + + DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm + DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm + DMPAPER_9X11 =44, // 9 x 11 in + DMPAPER_10X11 =45, // 10 x 11 in + DMPAPER_15X11 =46, // 15 x 11 in + DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm + DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE + DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE + DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in + DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in + DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in + DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in + DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in + DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm + DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in + DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm + DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm + DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in + DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm + DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm + DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm + DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm + DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm + DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm + DMPAPER_A2 =66, // A2 420 x 594 mm + DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm + DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm +} DMPAPER; + +typedef struct _XQX_ITEM_HEADER { + DWORD type; // type + DWORD size; // total record size following +} XQX_ITEM_HEADER; + +typedef struct _XQX_ITEM_UINT32 { + XQX_ITEM_HEADER header; + DWORD value; +} XQX_ITEM_UINT32; + +typedef union _SWAP_32{ + char byte[sizeof(uint32_t)]; + uint32_t dword; +} SWAP_32; + +typedef union _SWAP_16{ + char byte[sizeof(uint16_t)]; + uint16_t word; +} SWAP_16; + +static inline uint32_t +be32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +be16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} diff --git a/ddstdecode.1in b/ddstdecode.1in new file mode 100644 index 0000000..2b1fb30 --- /dev/null +++ b/ddstdecode.1in @@ -0,0 +1,84 @@ +.TH ddstdecode 1 "${MODpage}" "ddstdecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +ddstdecode \- Decode a Ricoh DDST stream into human readable form. +.SH SYNOPSIS +.B ddstdecode +.RI [ options "] <" ddst-file +.SH DESCRIPTION +.B ddstdecode +decodes a Ricoh DDST stream into human readable form. +.P +A Ricoh DDST stream is the printer language used by some Ricoh +printers. From what I can tell, it is pbmtojbg(1) wrapped with some PJL. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an Ricoh DDST stream file created by a Ricoh SP112. + +.nf +.ft CW +$ ddstdecode -h ~/testpage-ricoh-sp112.prn + 0: \033%-12345X@PJL + f: @PJL SET TIMESTAMP=2017/03/16 16:53:16 + 37: @PJL SET FILENAME=testpage.pdf + 57: @PJL SET COMPRESS=JBIG + 6f: @PJL SET USERNAME=rick + 87: @PJL SET COVER=OFF + 9b: @PJL SET HOLD=OFF + ae: @PJL SET PAGESTATUS=START + c9: @PJL SET COPIES=1 + dc: @PJL SET MEDIASOURCE=TRAY1 + f8: @PJL SET MEDIATYPE=PLAINRECYCLE + 119: @PJL SET PAPER=LETTER + 130: @PJL SET PAPERWIDTH=5100 + 14a: @PJL SET PAPERLENGTH=6600 + 165: @PJL SET RESOLUTION=600 + 17e: @PJL SET IMAGELEN=60604 + 197: DDST_JBIG_DATA_BEGIN 60604 bytes + DL = 0, D = 0, P = 1, - = 0, XY = 5100 x 6600 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 72 LRLTWO TPBON + 52 stripes, 0 layers, 1 planes + ee53: DDST_JBIG_DATA_END + ee53: @PJL SET DOTCOUNT=1765571 + ee6e: @PJL SET PAGESTATUS=END + ee87: @PJL EOJ + ee91: \033%-12345X +.ft P +.fi + +.SH FILES +.BR /usr/bin/ddstdecode +.SH SEE ALSO +.BR foo2ddst-wrapper (1), +.BR foo2ddst (1), +.BR pbmtojbg (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLXQX}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/ddstdecode.c b/ddstdecode.c new file mode 100644 index 0000000..651ec37 --- /dev/null +++ b/ddstdecode.c @@ -0,0 +1,540 @@ +/* + * $Id: ddstdecode.c,v 1.7 2017/03/25 15:01:32 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "ddst.h" +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" ddstdecode [options] < zjs-file\n" +"\n" +" Decode a Ricoh DDST stream into human readable form.\n" +"\n" +" A Ricoh DDST stream is the printer language used by some Ricoh\n" +" printers. From what I can tell, it is pbmtojbg wrapped with some PJL.\n" +"\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +proff(int curOff) +{ + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); +} + +int curOff = 0; +int pageNum = 0; + +void +decode(FILE *fp) +{ + DWORD magic; + XQX_HEADER hdr; + int c; + int rc; + int i; + char *codestr; + FILE *dfp = NULL; + int planeNum = 4; + int len; + struct jbg_dec_state s[5]; + unsigned char bih[20]; + int bihlen = 0; + int imageCnt[5] = {0,0,0,0,0}; + int pn = 0; + int incrY = 0; + int totSize = 0; + int imagelen = 0; + int startPagestatus = 0; + + /* + * XQX format + */ + c = getc(fp); + if (c == EOF) + { + printf("EOF on file reading header.\n"); + return; + } + ungetc(c, fp); + if (c == '\033' || c == '@') + { + char buf[1024]; + + while (fgets(buf, sizeof(buf), fp)) + { + proff(curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (0) {} + else if (strncmp(buf, "@PJL SET PAGESTATUS=START", 23) == 0) + { + startPagestatus = 2; + ++pageNum; + } + else if (strncmp(buf, "@PJL SET PAGESTATUS=END", 21) == 0) + { + startPagestatus = 0; + } + else if (strncmp(buf, "@PJL SET IMAGELEN=", 18) == 0) + { + imagelen = atoi(&buf[18]); + debug(2, "imagelen=%d\n", imagelen); + break; + proff(curOff); + buf[51] = 0; + printf("%s\n", buf); + curOff += 43; + proff(curOff); + printf("\\033%s\n", buf+44); + curOff += 9; + break; + } + } + if (feof(fp)) + return; + } + + proff(curOff); + printf("DDST_JBIG_DATA_BEGIN %d bytes\n", imagelen); + for (i = 0; i < imagelen; ) + { + unsigned char buf[4024*1024]; +//printf("fread\n"); + rc = fread(buf, 1, imagelen, fp); + if (i == 0 && startPagestatus == 2) + { + memcpy(bih, buf, bihlen = 20); +//printf("data: %x\n", buf[3]); + if (DecFile && startPagestatus == 2) + { + size_t cnt; + + startPagestatus = 1; + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + } + print_bih(bih); + } + i += rc; + curOff += rc; +rc = 0; + if (rc == 0) + { + debug(1, "imagelen = %d startPagestatus = %d\n", + imagelen, startPagestatus); + for (i = 0; i < imagelen; ++i) + { +//printf("data: %x\n", buf[3]); + c = buf[i]; + if (DecFile) + { + size_t cnt; + unsigned char ch = c; + + rc = JBG_EAGAIN; + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); +//printf("in: rc=%d ch=%x cnt=%ld\n", rc, ch, cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + +//printf("JBG_OK!\n"); + // debug(0, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + //debug(0, "OK image len = %d\n", len); + if (image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, planeNum); + dfp = fopen(buf, + imageCnt[planeNum] ? "a" : "w"); + if (dfp) + { + if (imageCnt[planeNum] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + imageCnt[planeNum] += incrY; + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + } + } + } + break; + } + } + proff(curOff); + printf("DDST_JBIG_DATA_END\n"); + return; + + /* + * ??? XQX_MAGIC format + */ + rc = fread(&magic, len = sizeof(magic), 1, fp); + if (rc != 1) + { + printf("Missing XQX Magic number\n"); + return; + } + + proff(curOff); + printf("XQX_MAGIC, 0x%lx (%.4s)\n", (long)magic, (char *) &magic); + + if (memcmp((char *) &magic, ",XQX", 4)) + { + printf(" Don't understand magic number 0x%lx\n", (long)magic); + return; + } + + curOff += len; + for (;;) + { + proff(curOff); + + rc = fread(&hdr, len = sizeof(hdr), 1, fp); + if (rc != 1) break; + curOff += len; + + hdr.type = be32(hdr.type); + hdr.items = be32(hdr.items); + + #define CODESTR(X) case X: codestr = #X; + switch (hdr.type) + { + CODESTR(XQX_START_DOC) break; + CODESTR(XQX_END_DOC) break; + CODESTR(XQX_START_PAGE) ++pageNum; break; + CODESTR(XQX_END_PAGE) break; + CODESTR(XQX_START_PLANE) break; + CODESTR(XQX_END_PLANE) break; + CODESTR(XQX_JBIG) break; + default: codestr = NULL; break; + } + + if (codestr) + printf("%s(%ld), %ld items", + codestr, (long) hdr.type, (long) hdr.items); + else + printf("XQX_0x%lx, %ld items", (long) hdr.type, (long) hdr.items); + + if (hdr.type == XQX_START_PAGE) + printf(" [Page %d]", pageNum); + printf("\n"); + + if (hdr.type == XQX_JBIG) + { + for (i = 0; i < hdr.items; ++i) + { + c = fgetc(fp); + if (DecFile) + { + size_t cnt; + unsigned char ch = c; + + rc = JBG_EAGAIN; + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + + // debug(0, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + if (image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, planeNum); + dfp = fopen(buf, + imageCnt[planeNum] ? "a" : "w"); + if (dfp) + { + if (imageCnt[planeNum] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + imageCnt[planeNum] += incrY; + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + } + } + } + curOff += hdr.items; + totSize += hdr.items; + } + else if (hdr.type == 2 && hdr.items == 0) + break; + else + { + for (i = 0; i < hdr.items; ++i) + { + XQX_ITEM_HEADER item; + DWORD val; + int j; + + proff(curOff); + rc = fread(&item, len = sizeof(item), 1, fp); + if (rc != 1) break; + curOff += len; + + item.type = be32(item.type); + item.size = be32(item.size); + switch (item.type) + { + CODESTR(XQXI_DMDUPLEX) break; + CODESTR(XQXI_DMDEFAULTSOURCE) break; + CODESTR(XQXI_DMMEDIATYPE) break; + CODESTR(XQXI_RESOLUTION_X) break; + CODESTR(XQXI_RESOLUTION_Y) break; + CODESTR(XQXI_RASTER_X) break; + CODESTR(XQXI_RASTER_Y) break; + CODESTR(XQXI_VIDEO_BPP) break; + CODESTR(XQXI_VIDEO_X) break; + CODESTR(XQXI_VIDEO_Y) break; + CODESTR(XQXI_ECONOMODE) break; + CODESTR(XQXI_DMPAPER) break; + CODESTR(XQXI_DUPLEX_PAUSE) break; + CODESTR(XQXI_BIH) break; + CODESTR(XQXI_END) break; + default: codestr = NULL; break; + } + if (item.size == 4) + { + rc = fread(&val, len = sizeof(val), 1, fp); + if (rc != 1) break; + val = be32(val); + if (codestr) + printf(" %s, %ld (0x%lx)", + codestr, (long) val, (long) val); + else + printf(" XQXI_0x%x, %ld (0x%lx)", + item.type, (long) val, (long) val); + } + else if (item.size == 20) + { + rc = fread(bih, bihlen = sizeof(bih), 1, fp); + if (rc != 1) break; + printf(" %s(0x%lx)\n", codestr, (long) item.type); + print_bih(bih); + if (DecFile) + { + size_t cnt; + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + } + } + else + { + printf(" XQXI_0x%lx, %ld size,", + (long) item.type, (long) item.size); + + for (j = 0; j < item.size; ++j) + { + c = fgetc(fp); + printf(" %02x" , c); + } + } + curOff += item.size; + printf("\n"); + } + } + } + printf("Total size: %d bytes\n", totSize); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hoD:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + for (;;) + { + decode(fp); + c = getc(fp); ungetc(c, fp); + if (feof(fp)) + break; + } + fclose(fp); + } + else + { + for(;;) + { + decode(stdin); + c = getc(stdin); ungetc(c, stdin); + if (feof(stdin)) + break; + } + } + printf("\n"); + + exit(0); +} diff --git a/foo2ddst-wrapper.1in b/foo2ddst-wrapper.1in new file mode 100644 index 0000000..789d66e --- /dev/null +++ b/foo2ddst-wrapper.1in @@ -0,0 +1,163 @@ +'\" t +.TH foo2ddst-wrapper 1 "${MODpage}" "foo2ddst-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2ddst-wrapper \- Convert Postscript into a DDST printer stream +.SH SYNOPSIS +.B foo2ddst-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2ddst-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2ddst\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to DDST printer format +for driving +the Ricoh Aficio SP 112, +the Ricoh Aficio SP 201, +and other DDST-based printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l l +l n n. +_ +Media Code +_ +plain&recycled 1 +paper 2 +thin 3 +thick 4 +recycled 5 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 5 A4 +2 legal 6 A5 +3 executive 7 A6 +4 invoice(5.5x8.5) 8 B5 JIS + 10 16k 197x273 +11 16k 184x260 12 16k 195x270 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [600x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [7]. +.TS +box; +| n l | n l. +1 upper 2 manual +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-T\0 density +Print density (1-5). The default is 3 (medium). +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2ddst\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the ZjStream. +\fBfoo2ddst-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.SS Debugging Options +These options are used for debugging \fBfoo2ddst\fP and its wrapper. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome ZjStream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2ddst-wrapper testpage.ps > testpage.ddst +ddstdecode < testpage.ddst +lpr -P raw testpage.ddst +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2ddst-wrapper +.SH SEE ALSO +.BR foo2ddst (1), +.BR ddstdecode (1) +.br +.BR https://github.com/madlynx/ricoh-sp100 +.SH "AUTHOR" +Rick Richardson +.br +${URLDDST}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2ddst-wrapper.in b/foo2ddst-wrapper.in new file mode 100755 index 0000000..f4e20e8 --- /dev/null +++ b/foo2ddst-wrapper.in @@ -0,0 +1,683 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2ddst-wrapper.in,v 1.3 2017/03/26 19:46:23 rick Exp $' + +# +# Printer Notes: +# +# Ricoh Aficio SP 112 B/W +# Ricoh Aficio SP 201 B/W +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2ddst +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=tray1 2=manual + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-T density Print density (1-5) [$DENSITY] +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=0 +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + DEFAULTCOLORMODE=2 + ;; +*) DEFAULTCOLORMODE=2 + ;; +esac +QUALITY=1 +QUALITY=wts +MEDIA=1 +COPIES=1 +PAPER=1 +RES=600x600 +SOURCE=1 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE= +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +DENSITY=3 #Medium +NUP_ORIENT= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +8.1*) + QUALITY=1 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tT:ABS:D:G:I:PX:Vh?" opt +do + case $opt in + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + T) DENSITY="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2ddst -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate media code +# +case "$MEDIA" in +1|standard) MEDIA=1;; +2|transparency) MEDIA=2;; +3|glossy) MEDIA=3;; +257|envelope) MEDIA=257;; +259|letterhead) MEDIA=259;; +261|thickstock) MEDIA=261;; +262|postcard) MEDIA=262;; +263|labels) MEDIA=263;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|upper) SOURCE=1;; +4|manual) SOURCE=4;; +7|auto) SOURCE=7;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Validate Print Density +# +case "$DENSITY" in +1|2|3|4|5) ;; +*) error "Illegal print density (-T) $DENSITY";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +# The Minolta 2200 DL is sensitive to its unprintable regions, +# and will pixel skew if you try to print there. +# +# The HP1000 will print blank pages when asked to print into its +# unprintable region. +# +# The Minolta 2300 DL doesn't care if print into the unprintable +# region. It will do the clipping itself. This is as it should be. +# But it won't hurt it if we do the clipping here. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=359; paper=letter; + #set_clipping 2 84 2 84 + ;; +Custom*) + # PS job + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=359; paper=letter; + #set_clipping 2 84 2 84 + ;; +1|letter) PAPER=1; paper=letter; XDIM="10200"; YDIM="6600" + #set_clipping 177 84 177 84 + ;; +2|legal) PAPER=2; paper=legal; XDIM="10200"; YDIM="8400" + #set_clipping 177 96 177 96 + ;; +3|executive) PAPER=3; paper=executive; XDIM="8700"; YDIM="6300" + #set_clipping 192 96 192 96 + ;; +5|a4|A4) PAPER=5; paper=a4; XDIM="9920"; YDIM="7016" + #set_clipping 176 84 176 84 + ;; +6|a5|A5) PAPER=6; paper=a5; XDIM="6992"; YDIM="4960" + #set_clipping 192 96 192 96 + ;; +8|b5|B5) PAPER=8; paper=b5; XDIM="8598"; YDIM="6070" + #set_clipping 192 96 192 96 + ;; +10|16k197x273) PAPER=10; paper=executive;XDIM="9306"; YDIM="6448" + #set_clipping 173 84 173 84 + ;; +11|16k184x260) PAPER=11; paper=executive;XDIM="8692"; YDIM="6142" + #set_clipping 122 87 122 87 + ;; +12|16k195x270) PAPER=12; paper=executive;XDIM="9212"; YDIM="6378" + #set_clipping 126 87 126 87 + ;; +20|"env#10") PAPER=20; paper=env10; XDIM="4950"; YDIM="5700" + #set_clipping 171 78 171 78 + ;; +27|envDL) PAPER=27; paper=envDL; XDIM="5200"; YDIM="5200" + #set_clipping 176 84 176 84 + ;; +28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" + #set_clipping 170 80 169 80 + ;; +34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" + #set_clipping 174 74 174 74 + ;; +37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" + #set_clipping 174 78 173 78 + ;; +*) error "Unimplemented paper code $PAPER";; +esac +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps" + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + 0) COLORMODE=$DEFAULTCOLORMODE;; + esac +fi + +CRDBASE="$PREFIX/share/foo2zjs/crd" +case "$RES" in + 600x600) SCREEN=screen1200.ps;; + 1200x600) SCREEN=screen1200.ps;; + 2400x600) SCREEN=screen2400.ps;; +esac + +PSTOPS_OPTS="-n" + +case "$COLORMODE" in +"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + none) + GAMMAFILE= + ;; + esac + ;; +1|photo) + # Photo + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr125,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +2|graphics) + # Photo and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kh.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +3|text) + # Graphic and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,50-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kx.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +4|tonersave) + # Reduced toner + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,0-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2ddst -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER -T$DENSITY \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2ddst -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER -T$DENSITY $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE +fi + +exit 0 diff --git a/foo2ddst.1in b/foo2ddst.1in new file mode 100644 index 0000000..e5adfe5 --- /dev/null +++ b/foo2ddst.1in @@ -0,0 +1,162 @@ +'\" t +.TH foo2ddst 1 "${MODpage}" "foo2ddst ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2ddst \- Convert Ghostscript pbmraw into a +DDST printer stream +.SH SYNOPSIS +.B foo2ddst +.RI [ options "] <" pbmraw-file " >" ddst-file +.SH DESCRIPTION +.B foo2ddst +converts Ghostscript pbmraw to monochrome +DDST streams, +for driving +the Ricoh Aficio SP 112, +the Ricoh Aficio SP 201, +and other DDST-based printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [5100x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l l +l n n. +_ +Media Code +_ +plain&recycled 1 +paper 2 +thin 3 +thick 4 +recycled 5 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 5 A4 +2 legal 6 A5 +3 executive 7 A6 +4 invoice(5.5x8.5) 8 B5 JIS + 10 16k 197x273 +11 16k 184x260 12 16k 195x270 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [600x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [7]. +.TS +box; +| n l | n l. +1 tray 1 2 manual +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-T\0 density +Print density (1-5). The default is 3 (medium). +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2ddst\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.SS Debugging Options +These options are used for debugging \fBfoo2ddst\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white DDST stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2ddst -r1200x600 -g10200x6600 -p1 >testpage.zm +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2ddst +.SH SEE ALSO +.BR foo2ddst-wrapper (1), +.BR ddstdecode (1) +.br +.BR https://github.com/madlynx/ricoh-sp100 +.SH "AUTHOR" +Rick Richardson +.br +${URLDDST}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2ddst.c b/foo2ddst.c new file mode 100644 index 0000000..700a5e0 --- /dev/null +++ b/foo2ddst.c @@ -0,0 +1,1580 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics ZJ-stream format. There +is some information about the ZJS format at http://ddk.zeno.com. + +With this utility, you can print to some Ricoh printers, such as these: + - Ricoh Aficio SP 112 B/W + - Ricoh Aficio SP 201 B/W + +AUTHORS +This program began life as Robert Szalai's 'pbmtozjs' program. It +also uses Markus Kuhn's jbig-kit compression library (included, but +also available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +The program was overhauled by Rick Richardson to limit data chunk size +to 65536 bytes, add command line options, add color support, +and other miscellaneous features. + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2ddst.c,v 1.10 2017/03/26 18:29:05 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#include "jbig.h" +#include "ddst.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 600; +int ResY = 600; +int Bpp = 1; +int PaperCode = DMPAPER_LETTER; +int PageWidth = 600 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_PLAIN; +char *Username = NULL; +char *Filename = NULL; +int Mode = 0; + #define MODE_MONO 1 + #define MODE_COLOR 2 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 16; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; +int RealWidth; +int EconoMode = 0; +int PrintDensity = 3; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e, pause; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; +int DuplexPause = 0; + +long JbgOptions[5] = +{ + /* Order */ + JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPBON, + /* L0 */ + 128, + /* MX */ + 0, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2ddst [options] ddst-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome ZJS stream,\n" +" for driving the Ricoh SP1212 and other laser printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2ddst -r1200x600 -g10200x6600 -p1 >testpage.zm\n" +"\n" +#if 0 +" foo2ddst [options] ddst-file\n" +" foo2ddst [options] ddst-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color ZJS stream,\n" +" for driving the HP LaserJet M1005 MFP color laser printer\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2ddst -r1200x600 -g10200x6600 -p1 >testpage.zc\n" +"\n" +#endif +"Normal Options:\n" +// "-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 1=plain&recycled 2=paper 3=thin 4=thick1 5=recycled\n" +"-p paper Paper code to send to printer [%d]\n" +" 1=letter 2=legal 3=executive 4=invoice(5.5x8.5)\n" +" 5=A4 6=A5 7=A6 8=B5JIS 9=B6JIS\n" +" 10=16k197x273, 11=16k184x260, 12=16k195x270\n" +//" 20=env#10, 27=envDL 28=envC5 34=envB5 37=envMonarch\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=tray1 2=manual\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +"-T density Print density (1-5) [%d].\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , PrintDensity + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , ExtraPad + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +#if 0 +static void +chunk_write(unsigned long type, unsigned long items, FILE *fp) +{ + XQX_HEADER chunk; + int rc; + + chunk.type = be32(type); + chunk.items = be32(items); + rc = fwrite(&chunk, 1, sizeof(XQX_HEADER), fp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); +} + +static void +item_uint32_write(unsigned long item, unsigned long value, FILE *fp) +{ + XQX_ITEM_UINT32 item_uint32; + int rc; + + item_uint32.header.type = be32(item); + item_uint32.header.size = be32(sizeof(DWORD)); + item_uint32.value = be32(value); + rc = fwrite(&item_uint32, 1, sizeof(XQX_ITEM_UINT32), fp); + if (rc == 0) error(1, "fwrite(2): rc == 0!\n"); +} + +static void +item_bytelut_write(unsigned long item, unsigned long len, BYTE *buf, FILE *fp) +{ + XQX_ITEM_HEADER header; + int rc; + + header.type = be32(item); + header.size = be32(len); + rc = fwrite(&header, 1, sizeof(XQX_ITEM_HEADER), fp); + if (rc == 0) error(1, "fwrite(3): rc == 0!\n"); + rc = fwrite(buf, 1, len, fp); + if (rc == 0) error(1, "fwrite(4): rc == 0!\n"); +} +#endif + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +int +write_plane(int planeNum, BIE_CHAIN **root, FILE *fp) +{ + BIE_CHAIN *current = *root; + //BIE_CHAIN *next; + int len; + int first; + BYTE *bih; + int rc; + + debug(3, "Write Plane %d\n", planeNum); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + bih = current->data; + first = 1; + for (current = *root; current && current->len; current = current->next) + { + if (current == *root) + { + } + else + { + len = current->len; + //next = current->next; + + if (first) + { + fprintf(fp, "@PJL SET IMAGELEN=%d\r\n", 20+len); + fwrite(bih, 1, 20, fp); + } + else + { + fprintf(fp, "@PJL SET IMAGELEN=%d\r\n", len); + } +#if 0 + chunk_write(XQX_START_PLANE, 4, fp); + item_uint32_write(0x80000000, first ? 64 : 48, fp); + item_uint32_write(0x40000000, 0, fp); + if (first) + item_bytelut_write(XQXI_BIH, 20, bih, fp); + else + item_uint32_write(0x40000003, 1, fp); + item_uint32_write(XQXI_END, 0xdeadbeef, fp); + + chunk_write(XQX_JBIG, len, fp); +#endif + if (len) + { + rc = fwrite(current->data, 1, len, fp); + if (rc == 0) error(1, "fwrite(5): rc == 0!\n"); + } + +#if 0 + chunk_write(XQX_END_PLANE, 0, fp); +#endif + first = 0; + } + } + + free_chain(*root); + + return 0; +} + +void +start_page(BIE_CHAIN **root, int nbie, FILE *ofp) +{ + //BIE_CHAIN *current = *root; + //unsigned long w, h; + //int nitems; + //int pause = 0; + static int pageno = 0; + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "NORMAL" + char *strsource[] = + { + "", + "TRAY1", "MANUALFEED", + }; + char *strmedia[] = + { + "", + "PLAINRECYCLE", "PAPER", "THIN", "THICK1", "RECYCLE" + }; + char *strpaper[] = + { + "", + "LETTER", "LEGAL", "EXECUTIVE", "INVOICE", + "A4", "A5", "A6", "JISB5", "JISB6", + "16K_197x273", "16K_184x260", "16K_195x270", + }; + + fprintf(ofp, "@PJL SET PAGESTATUS=START\r\n"); + fprintf(ofp, "@PJL SET COPIES=%d\r\n", Copies); + fprintf(ofp, "@PJL SET MEDIASOURCE=%s\r\n", STRARY(SourceCode, strsource)); + fprintf(ofp, "@PJL SET MEDIATYPE=%s\r\n", STRARY(MediaCode, strmedia)); + fprintf(ofp, "@PJL SET PAPER=%s\r\n", STRARY(PaperCode, strpaper)); + fprintf(ofp, "@PJL SET PAPERWIDTH=%d\r\n", PageWidth); + fprintf(ofp, "@PJL SET PAPERLENGTH=%d\r\n", PageHeight); + fprintf(ofp, "@PJL SET RESOLUTION=%d\r\n", ResX); + +#if 0 + /* error handling */ + if (!current) + error(1, "There is no JBIG!\n"); + if (!current->next) + error(1, "There is no or wrong JBIG header!\n"); + if (current->len != 20 ) + error(1,"wrong BIH length\n"); + + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + + nitems = 15; + if (Duplex != DMDUPLEX_OFF) + ++nitems; + pause = (PageNum == 1) ? 0 : 1; + + chunk_write(XQX_START_PAGE, nitems, ofp); + item_uint32_write(0x80000000, (Duplex == DMDUPLEX_OFF) ? 180 : 192, ofp); + item_uint32_write(0x20000005, 1, ofp); + item_uint32_write(XQXI_DMDEFAULTSOURCE, SourceCode, ofp); + item_uint32_write(XQXI_DMMEDIATYPE, MediaCode, ofp); + item_uint32_write(0x20000007, 1, ofp); + + item_uint32_write(XQXI_RESOLUTION_X, ResX, ofp); + item_uint32_write(XQXI_RESOLUTION_Y, ResY, ofp); + item_uint32_write(XQXI_RASTER_X, w, ofp); + item_uint32_write(XQXI_RASTER_Y, h, ofp); + item_uint32_write(XQXI_VIDEO_BPP, Bpp, ofp); + + item_uint32_write(XQXI_VIDEO_X, RealWidth / Bpp,ofp); + item_uint32_write(XQXI_VIDEO_Y, h, ofp); + item_uint32_write(XQXI_ECONOMODE, EconoMode, ofp); + if (Duplex != DMDUPLEX_OFF) + { + item_uint32_write(XQXI_DUPLEX_PAUSE, pause, ofp); + if ((PageNum & 1) == 0 && EvenPages) + { + debug(1, "EvenPage: page %d seekindex %d\n", PageNum, SeekIndex); + SeekRec[SeekIndex].pause = ftell(EvenPages) - 4; + } + } + item_uint32_write(XQXI_DMPAPER, PaperCode, ofp); + item_uint32_write(XQXI_END, 0xdeadbeef, ofp); +#endif + + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(FILE *ofp) +{ + fprintf(ofp, "@PJL SET DOTCOUNT=%d\r\n", 12345); + fprintf(ofp, "@PJL SET PAGESTATUS=END\r\n"); + //chunk_write(XQX_END_PAGE, 0, ofp); +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + int chainlen; + BIE_CHAIN *current = *root; + + start_page(root, nbie, ofp); + + chainlen = 0; + for (current = *root; current; current = current->next) + { + chainlen += current->len; + //fprintf(stderr, "chainlen = %d\n", chainlen); + } + + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + +#if 0 + if (root3) + write_plane(3, root3, ofp); + if (root2) + write_plane(2, root2, ofp); + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root4) + write_plane(4, root4, ofp); +#endif + + end_page(ofp); + return 0; +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 65536; // Printer does strange things otherwise. + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +void +start_doc(FILE *fp) +{ + //char header[4] = ",XQX"; // Big-endian data + //int nitems; + time_t now; + struct tm *tmp; + char datetime[32+1]; + + now = time(NULL); + tmp = localtime(&now); + strftime(datetime, sizeof(datetime), "%Y/%m/%d %H:%M:%S", tmp); + + fprintf(fp, "\033%%-12345X@PJL\r\n"); + fprintf(fp, "@PJL SET TIMESTAMP=%s\r\n", datetime); + fprintf(fp, "@PJL SET FILENAME=%s\r\n", Filename ? Filename : "stdin"); + fprintf(fp, "@PJL SET COMPRESS=JBIG\r\n"); + fprintf(fp, "@PJL SET USERNAME=%s\r\n", Username ? Username : "root"); + fprintf(fp, "@PJL SET COVER=OFF\r\n"); + +#if 0 + fwrite(header, 1, sizeof(header), fp); + + nitems = 7; + + chunk_write(XQX_START_DOC, nitems, fp); + + item_uint32_write(0x80000000, 84, fp); + item_uint32_write(0x10000005, 1, fp); + item_uint32_write(0x10000001, 0, fp); + item_uint32_write(XQXI_DMDUPLEX, (Duplex != DMDUPLEX_OFF) + ? 2 : 0, fp); + item_uint32_write(0x10000000, 0, fp); + item_uint32_write(0x10000003, 1, fp); + item_uint32_write(XQXI_END, 0xdeadbeef, fp); +#endif +} + +void +end_doc(FILE *fp) +{ + //int nitems; + + //nitems = 0; + //chunk_write(XQX_END_DOC , nitems, fp); + + fprintf(fp, "@PJL EOJ\r\n"); + fprintf(fp, "\033%%-12345X\r\n"); +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl = (w + 7) / 8; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, w, h); + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + struct jbg_enc_state se; + + RealWidth = w; + //w = (w + 127) & ~127; + + if (SaveToner) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + bpl16 = bpl; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + *bitmaps = buf; + + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + if (Duplex == DMDUPLEX_MANUALLONG && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if ((PageNum & 1) == 0 && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + plane[i] = malloc(bpl * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + error(1, "Color is unimplemented right now.\n"); + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int i, j; + + while ( (c = getopt(argc, argv, + "cd:g:n:m:p:r:s:tT:u:l:L:ABPJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'T': PrintDensity = atoi(optarg); + if (PrintDensity < 1 || PrintDensity > 5) + error(1, "Illegal value '%s' for PrintDensity -T\n", + optarg); + break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + Bpp = ResX / 600; + //ResX = 600; + if (SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + + switch (Duplex) + { + case DMDUPLEX_LONGEDGE: + case DMDUPLEX_SHORTEDGE: + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + DWORD pause; + + // Handle odd page count + if ( (PageNum & 1) == 1) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + /* + * Manual Pause + */ + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + int rc; + + debug(1, "EvenPage: %d %ld %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e, SeekRec[i].pause); + fseek(EvenPages, SeekRec[i].pause, 0L); + if (i == SeekIndex-1) + pause = be32(2); + else + pause = be32(3); + rc = fwrite(&pause, 1, sizeof(DWORD), EvenPages); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2hbpl2-wrapper.1in b/foo2hbpl2-wrapper.1in new file mode 100644 index 0000000..0fd1570 --- /dev/null +++ b/foo2hbpl2-wrapper.1in @@ -0,0 +1,248 @@ +'\" t +.TH foo2hbpl2-wrapper 1 "${MODpage}" "foo2hbpl2-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2hbpl2-wrapper \- Convert Postscript into a ZJS printer stream +.SH SYNOPSIS +.B foo2hbpl2-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2hbpl2-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2hbpl2\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to Zenographics ZjStream printer format +for driving the +Dell 1355, Dell C1765, +Epson AcuLaser M1400, +Epson AcuLaser CX17NF, +Fuji Xerox DocuPrint CM205, +Fuji Xerox DocuPrint CM215, +Fuji Xerox DocuPrint P205, +Xerox Phaser 3010, +Xerox Phaser 3040, +Xerox WorkCentre 3045 MFP, +and Xerox WorkCentre 6015 MFP printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-C\0 colormode +Color correction mode [0]. +.TS +n l . +10 ICM color profile (using -G *.icm file) +.TE +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l r. +_ +Media HBPL +_ +plain 1 +bond 2 +lwcard 3 +lwgcard 4 +labels 5 +envelope 6 +recycled 7 +plain2 8 +bond2 9 +lwcard2 10 +lwgcard2 11 +recycled2 12 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [1]. +.TS +l r. +_ +Paper HBPL +_ +A4 1 +B5jis 2 +A5 3 +letter 4 +executive 5 +fanfold german legal 6 +folio 6 +legal 7 +env#10 9 +envMonarch 10 +envC5 11 +envDL 12 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [7]. +.TS +| n l | n l. +1 upper 4 manual +2 lower 7 auto +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-T\0 density +Print density (1-5). The default is 3 (medium). +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2hbpl2\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the ZjStream. +\fBfoo2hbpl2-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-P +Do not send START_PLANE codes on monochrome output. May be +needed by some monochrome-only printers, such as the +HP LaserJet 1000. +.TP +.BI \-X\0 padlen +Add extra zero padding to the end of BID segments. The default is +16 bytes. Padding 16 bytes of zeroes +is needed for older ZjStream printers, such as the Minolta 2200DL +and HP LaserJet 1000, and seems harmless to newer ones, such as +the Minolta 2300DL. So the default should be good for all cases. +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. (WORK IN PROGRESS). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2hbpl2\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome ZjStream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2hbpl2-wrapper testpage.ps > testpage.prn +hbpl2decode < testpage.prn +lpr -P raw testpage.prn +.fi +.RE +.P +Create a color ZjStream stream from a Postscript document: + +.RS +.nf +foo2hbpl2-wrapper -c testpage.ps > testpage.prn +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2hbpl2-wrapper +.SH SEE ALSO +.BR foo2hbpl2 (1), +.BR hbpldecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLHBPL}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2hbpl2-wrapper.in b/foo2hbpl2-wrapper.in new file mode 100755 index 0000000..ec770b0 --- /dev/null +++ b/foo2hbpl2-wrapper.in @@ -0,0 +1,731 @@ +#!/bin/sh + +#* Copyright (C) 2013 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2hbpl2-wrapper.in,v 1.11 2015/10/11 19:24:50 rick Exp $' + +# +# Printer Notes: +# +# Dell 1355 Multifunction Color Printer +# Dell C1765 Multifunction Color Printer +# Epson AcuLaser M1400 +# Epson AcuLaser CX17NF +# Fuji Xerox DocuPrint CM205 Multifunction Color Printer +# Fuji Xerox DocuPrint CM215 Multifunction Color Printer +# Fuji Xerox DocuPrint M215 +# Fuji Xerox DocuPrint P205 +# Xerox WorkCentre 3045 Multifunction Monochrome Printer +# Xerox WorkCentre 6015 Multifunction Color Printer +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2hbpl +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=upper, 2=lower, 4=manual, 7=auto + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=1 # plain +COPIES=1 +PAPER=4 # letter +RES=1200x600 +SOURCE=1 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE=default +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +NUP_ORIENT= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + DEFAULTCOLORMODE=1 + ;; +8.1*) + DEFAULTCOLORMODE=1 + QUALITY=1 + ;; +*) DEFAULTCOLORMODE=1 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Vh?" opt +do + case $opt in + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2hbpl -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate model code +# +case "$MODEL" in +0|1|2|3) ;; +*) error "Unknown model code $MODEL";; +esac + +# +# Validate media code +# +case "$MEDIA" in +1|plain) MEDIA=1;; +2|bond) MEDIA=2;; +3|lwcard) MEDIA=3;; +4|lwgcard) MEDIA=4;; +5|labels) MEDIA=5;; +6|envelope) MEDIA=6;; +7|recycled) MEDIA=7;; +8|plain2) MEDIA=1;; +9|bond2) MEDIA=2;; +10|lwcard2) MEDIA=3;; +11|lwgcard2) MEDIA=4;; +12|recycled2) MEDIA=7;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|auto) SOURCE=1;; +2|manual) SOURCE=2;; +3|multi) SOURCE=3;; +4|tray1) SOURCE=4;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +1200x1200) ;; +#2400x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=0; paper=letter; + # Doesn't work on a real printer - smudges. + # set_clipping 2 100 2 100 + set_clipping 150 100 150 100 + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=0; paper=letter; + # Doesn't work on a real printer - smudges. + # set_clipping 2 100 2 100 + set_clipping 150 100 150 100 + ;; +1|a4|A4) PAPER=1; paper=a4; XDIM="9920"; YDIM="7016" + set_clipping 150 100 150 100 + ;; +2|b5jis|B5jis) PAPER=2; paper=b5; XDIM="8598"; YDIM="6070" + set_clipping 138 100 138 100 # modulo 256 + ;; +3|a5|A5) PAPER=3; paper=a5; XDIM="6992"; YDIM="4960" + set_clipping 168 100 168 100 # modulo 256 + ;; +4|letter) PAPER=4; paper=letter; XDIM="10200"; YDIM="6600" + set_clipping 150 100 150 100 + ;; +5|executive) PAPER=5; paper=executive; XDIM="8700"; YDIM="6300" + set_clipping 150 100 150 100 + ;; +6|fanfoldgermanlegal|folio) + PAPER=6; paper=legal; XDIM="10200"; YDIM="7800" + set_clipping 150 100 150 100 + ;; +7|legal) PAPER=7; paper=legal; XDIM="10200"; YDIM="8400" + set_clipping 150 100 150 100 + ;; +9|"env#10") PAPER=9; paper=env10; XDIM="4950"; YDIM="5700" + set_clipping 171 100 171 100 # modulo 256 + ;; +10|envMonarch) PAPER=10; paper=envMonarch;XDIM="4650"; YDIM="4500" + set_clipping 150 100 150 100 + ;; +11|envC5) PAPER=11; paper=envC5; XDIM="7650"; YDIM="5408" + set_clipping 150 100 150 100 + ;; +12|envDL) PAPER=12; paper=envDL; XDIM="5200"; YDIM="5200" + set_clipping 168 100 168 100 # modulo 256 + ;; +#24|folio) PAPER=24; paper=folio; XDIM="9922"; YDIM="7796" +# set_clipping 150 100 150 100 +# ;; +#26|"env#9") PAPER=26; paper=env9; XDIM="4496"; YDIM="5324" +# set_clipping 200 100 200 100 # modulo 256 +# ;; +#23|envC6) PAPER=23; paper=envC6; XDIM="5386"; YDIM="3826" +# set_clipping 150 100 150 100 +# ;; +#12|b5iso|B5iso) PAPER=12; paper=b5; XDIM="8314"; YDIM="5906" +# set_clipping 189 100 189 100 # modulo 256 +# ;; +#25|env6.75) PAPER=25; paper=env6.75; XDIM="4348"; YDIM="3900" +# set_clipping 150 100 150 100 +# ;; +#17|a6|A6) PAPER=17; paper=a6; XDIM="4960"; YDIM="3496" +# set_clipping 176 100 176 100 # modulo 256 +# ;; +#28|oficio) PAPER=28; paper=a6; XDIM="10200"; YDIM="8100" +# set_clipping 150 100 150 100 +# ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +1200x1200) YDIM=`expr $YDIM \* 2`;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none | none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac + case "$GAMMAFILE" in + default) GAMMAFILE=samclp300-0.icm;; + esac +fi + +CRDBASE="$PREFIX/share/foo2hbpl/crd" +case "$MODEL" in + 0) model=CLP-300;; + 1) model=CLP-600;; + 2) model=CLP-600;; + 3) model=CLP-600;; +esac +case "$RES" in + 600x600) SCREEN=$model-600x600cms2;; + 1200x600) SCREEN=$model-1200x600cms2;; + 1200x1200) SCREEN=$model-1200x1200cms2;; +esac + +PSTOPS_OPTS="-n" + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none | none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac + ;; +1|crd) + # CRD + GAMMAFILE="" + GAMMAFILE="$GAMMAFILE $CRDBASE/${model}cms" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + # Black text... + TMPFILE2=/tmp/black$$ + cat $CRDBASE/black-text.ps - >$TMPFILE2 + exec <$TMPFILE2 + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2hbpl2 -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2hbpl2 -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE + [ -f "$TMPFILE2" ] && rm -f $TMPFILE2 +fi + +exit 0 diff --git a/foo2hbpl2.1in b/foo2hbpl2.1in new file mode 100644 index 0000000..0d9590a --- /dev/null +++ b/foo2hbpl2.1in @@ -0,0 +1,213 @@ +'\" t +.TH foo2hbpl2 1 "${MODpage}" "foo2hbpl2 ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2hbpl2 \- Convert Ghostscript pbmraw or bitcmyk format into a +ZJS printer stream +.SH SYNOPSIS +.B foo2hbpl2 +.RI [ options "] <" pbmraw-file " >" hbpl2-file +.sp 1 +.B foo2hbpl2 +.RI [ options "] <" bitcmyk-file " >" hbpl2-file +.sp 1 +.B foo2hbpl2 +.RI [ options "] <" pksmraw-file " >" hbpl2-file +.SH DESCRIPTION +.B foo2hbpl2 +converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome +or color HBPL version 2 streams, +for driving the +Dell 1355, Dell C1765, +Epson AcuLaser M1400, +Epson AcuLaser CX17NF, +Fuji Xerox DocuPrint CM205, +Fuji Xerox DocuPrint CM215, +Fuji Xerox DocuPrint M215, +Fuji Xerox DocuPrint P205, +Xerox Phaser 3010, +Xerox Phaser 3040, +Xerox WorkCentre 3045 MFP, +and Xerox WorkCentre 6015 MFP printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l r. +_ +Media HBPL +_ +plain 1 +bond 2 +lwcard 3 +lwgcard 4 +labels 5 +envelope 6 +recycled 7 +plain2 8 +bond2 9 +lwcard2 10 +lwgcard2 11 +recycled2 12 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [1]. +.TS +l r. +_ +Paper HBPL +_ +A4 1 +B5jis 2 +A5 3 +letter 4 +executive 5 +fanfold german legal 6 +folio 6 +legal 7 +env#10 9 +envMonarch 10 +envC5 11 +envDL 12 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [7]. +.TS +| n l | n l. +1 upper 4 manual +2 lower 7 auto +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2hbpl2\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-P +Do not send START_PLANE codes on monochrome output. May be +needed by some black and white only printers, such as the +HP LaserJet 1000. +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.BI \-X\0 padlen +Add extra zero padding to the end of BID segments. The default is +16 bytes. Padding 16 bytes of zeroes +is needed for older ZjStream printers, such as the Minolta 2200DL +and HP LaserJet 1000, and seems harmless to newer ones, such as +the Minolta 2300DL. So the default should be good for all cases. +.SS Debugging Options +These options are used for debugging \fBfoo2hbpl2\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white ZJS stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zm +.fi +.RE +.P +Create a color ZJS stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2hbpl2 +.SH SEE ALSO +.BR foo2hbpl2-wrapper (1), +.BR hbpldecode (1) +.SH "AUTHOR" +Rick Richardson +.br +Peter Korf +.br +${URLHBPL}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2hbpl2.c b/foo2hbpl2.c new file mode 100644 index 0000000..4e9d634 --- /dev/null +++ b/foo2hbpl2.c @@ -0,0 +1,1630 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics ZJ-stream format. There +is some information about the ZJS format at http://ddk.zeno.com. + +With this utility, you can print to some Xerox and Dell, such as these: + - Dell 1355cnw B/W and color + - Dell C1765nf/nfw MFP B/W and color + - Epson AcuLaser_M1400 B/W + - Epson AcuLaser_CX17NF B/W and color + - Fuji Xerox DocuPrint CM205 B/W and color + - Fuji Xerox DocuPrint CM215 B/W and color + - Fuji Xerox DocuPrint M215 B/W + - Fuji Xerox DocuPrint P205 B/W + - Xerox Phaser 3010 B/W + - Xerox Phaser 3040 B/W + - Xerox WorkCentre 3045 B/W + - Xerox WorkCentre 6015 B/W and color + +AUTHORS +This program began life as Robert Szalai's 'pbmtozjs' program. It +also uses Markus Kuhn's jbig-kit compression library (included, but +also available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +The program was overhauled by Rick Richardson to limit data chunk size +to 65536 bytes, add command line options, add color support for the +Minolta/QMS 2300DL, and other miscellaneous features. + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2hbpl2.c,v 1.36 2016/09/02 19:21:11 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#ifdef linux + #include +#endif +#include "jbig.h" +#include "hbpl.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 1200; +int ResY = 600; +int Bpp = 1; +#define PAPER_LETTER 4 +int PaperCode = PAPER_LETTER; +int PageWidth = 1200 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_STANDARD; +char *Username = NULL; +char *Filename = NULL; +int Mode = 1; + #define MODE_MONO 1 + #define MODE_COLOR 2 +int Model = 0; + #define MODEL_6015 0 + #define MODEL_LAST 0 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 16; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; + #define even_page(x) ( ((x) & 1) == 0 ) + #define odd_page(x) ( ((x) & 1) == 1 ) +int RealWidth; +int EconoMode = 0; +int PrintDensity = 3; +int Dots[4]; +int TotalDots; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; +off_t SeekMedia; + +long JbgOptions[5] = +{ + /* Order */ + 0, + /* Options */ + JBG_LRLTWO, + /* L0 */ + 128, + /* MX */ + 0, /* 0 is linux driver, 8 is windows driver */ + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2hbpl2 [options] hbpl-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome ZJS stream,\n" +" for driving the Dell 1355 and Xerox WorkCentre 6015 MFP printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zm\n" +"\n" +" foo2hbpl2 [options] hbpl-file\n" +" foo2hbpl2 [options] hbpl-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color ZJS stream,\n" +" for driving Dell 1355 and Xerox WorkCentre 6015 MFP printers.\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +" 4=manual longedge, 5=manual shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 1=plain, 2=bond, 3=lwcard, 4=lwgcard, 5=labels,\n" +" 6=envelope, 7=recycled, 8=plain2, 9=bond2,\n" +" 10=lwcard2, 11=lwgcard2, 12=recycled2\n" +"-p paper Paper code to send to printer [%d]\n" +" 1=A4, 2=B5, 3=A5, 4=letter, 5=executive,\n" +" 6=fanfoldgermanlegal/folio, 7=legal, 9=env#10,\n" +" 10=envMonarch, 11=envC5, 12=envDL\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=upper 2=lower 4=manual 7=auto\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +// "-T density Print density (1-5) [%d].\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +// "-z model Model: [%d]\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode +// , PrintDensity + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , ExtraPad +// , Model + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +int BlackOnes[256] = +{ + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +int +size_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + int size = 0; + + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + size = size + chain->len; + } + return (size); +} + +int +write_plane(int planeNum, BIE_CHAIN **root, FILE *fp) +{ + BIE_CHAIN *current = *root; + // BIE_CHAIN *next; + + debug(3, "Write Plane %d\n", planeNum); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + for (current = *root; current && current->len; current = current->next) + { + fwrite(current->data, 1, current->len, fp); + } + + free_chain(*root); + + return 0; +} + +void +start_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, int nbie, FILE *ofp) +{ + BIE_CHAIN *current = *root; + unsigned long w, h; + static int pageno = 0; + // int nitems; + HBPL_PS ps; + int i; + + /* error handling */ + if (!current) + error(1, "There is no JBIG!\n"); + if (!current->next) + error(1, "There is no or wrong JBIG header!\n"); + if (current->len != 20 ) + error(1,"wrong BIH length\n"); + + /* + * Don't know what this done, if anything... + */ + if ((PageNum % 4) == 0) // after 3 pages... + { + HBPL_DM dm; + + dm.hdr.type[0] = 033; + dm.hdr.type[1] = 'D'; + dm.hdr.type[2] = 'M'; + dm.data = 0; + dm.hdr.len = le32(sizeof(dm) - 4); + fwrite(&dm, 1, sizeof(dm), ofp); + } + + + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + TotalDots = w*h; + debug(9, "start_page: w x h = %d x %d\n", w, h); + + memset(&ps, 0, sizeof(ps)); + ps.hdr.type[0] = 033; + ps.hdr.type[1] = 'P'; + ps.hdr.type[2] = 'S'; + ps.hdr.len = le32(sizeof(ps) - 4); + ps.w = le32(w / Bpp); + ps.h = le32(h); + ps.color = root2 ? 1 : 0; + if (ps.color) + ps.wh_total = le32( (w * h) / 2); // In bytes + else + ps.wh_total = le32( (w * h) / 8); // In bytes + ps.papersize = PaperCode; + ps.mediatype = MediaCode; + ps.unk2 = 0; // TODO + ps.res = le16(ResY); + if (ps.color == 0) + { + int size; + + size = size_chain(*root); + ps.len = le32(size); + ps.bihoff[0] = le32(0); + ps.bihoff[1] = le32(0); + ps.bihoff[2] = le32(0); + ps.bihoff[3] = le32(size); + } + else + { + int size1, size2, size3, size4; + + size1 = size_chain(*root); + size2 = root2 ? size_chain(*root2) : 0; + size3 = root3 ? size_chain(*root3) : 0; + size4 = root4 ? size_chain(*root4) : 0; + ps.len = le32(size1+size2+size3+size4); + ps.bihoff[0] = le32(size1); + ps.bihoff[1] = le32(size2); + ps.bihoff[2] = le32(size3); + ps.bihoff[3] = le32(size4); + } + ps.unk3 = le16(0x0); // TODO + for (i = 0; i < 5; ++i) + ps.unk4[i] = le32(0x0); // TODO + fwrite(&ps, 1, sizeof(ps), ofp); + + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(FILE *ofp) +{ + HBPL_PE pe; + + memset(&pe, 0, sizeof(pe)); + pe.hdr.type[0] = 033; + pe.hdr.type[1] = 'P'; + pe.hdr.type[2] = 'E'; + pe.hdr.len = le32(sizeof(pe) - 4); + fwrite(&pe, 1, sizeof(pe), ofp); +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + + start_page(root, root2, root3, root4, nbie, ofp); + + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root2) + write_plane(2, root2, ofp); + if (root3) + write_plane(3, root3, ofp); + if (root4) + write_plane(4, root4, ofp); + + end_page(ofp); + return 0; +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 65536; // Printer does strange things otherwise. + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +void +start_doc(FILE *fp) +{ + HBPL_JP jp; + + fprintf(fp, "\033%%-12345X@PJL JOB NAME=PRINTER\r\n"); + #ifdef linux + { + struct utsname u; + + uname(&u); + fprintf(fp, "@PJL JOBATTR=\"HOST:%s\"\r\n", u.nodename); + } + #endif + fprintf(fp, "@PJL SET JOBATTR=\"USER:%s\"\r\n", Username ? Username : ""); + fprintf(fp, "@PJL SET JOBATTR=\"DOCU:%s\"\r\n", Filename ? Filename : ""); + fprintf(fp, "@PJL SET JOBATTR=\"OWNR:%s\"\r\n", Username ? Username : ""); + fprintf(fp, "@PJL SET DUPLEX=OFF\r\n"); + fprintf(fp, "@PJL SET IWAMANUALDUP=OFF\r\n"); + fprintf(fp, "@PJL SET MEDIASOURCE=0\r\n"); + fprintf(fp, "@PJL SET RENDERMODE=%s\r\n", + Mode == MODE_COLOR ? "COLOR" : "GRAYSCALE"); + fprintf(fp, "@PJL SET RESOLUTION=600\r\n"); + fprintf(fp, "@PJL SET BITSPERPIXEL=%d\r\n", Bpp); + fprintf(fp, "@PJL SET COPIES=%d\r\n", Copies); + fprintf(fp, "@PJL ENTER LANGUAGE=HBPL\r\n"); + + memset(&jp, 0, sizeof(jp)); + jp.hdr.type[0] = 033; + jp.hdr.type[1] = 'J'; + jp.hdr.type[2] = 'P'; + jp.hdr.len = le32(sizeof(jp) - 4); + jp.unk1 = le32(0x01000001); + jp.source_size = 0; // TODO + fwrite(&jp, 1, sizeof(jp), fp); +} + +void +end_doc(FILE *fp) +{ + fprintf(fp, "\033%%-12345X@PJL EOJ\r\n"); +} + +void +load_tray2(FILE *fp) +{ + // int nitems; + + // nitems = 0; + // chunk_write(ZJT_2600N_PAUSE, nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); +} + +int +compute_image_dots(int w, int h, unsigned char *bitmap) +{ +#if 0 + int dots = 0; + int x, y, bpl; + + switch (Model) + { + case MODEL_HP_PRO_CP: + bpl = (w + 7) / 8; + for (y = 0; y < h; ++y) + for (x = 0; x < bpl; ++x) + dots += BlackOnes[ bitmap[y*bpl + x] ]; + return dots; + default: + return 0; + } +#else + return 0; +#endif +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + bpl = (bpl + 15) & ~15; + debug(1, "w=%d, bpl=%d, rawbpl=%d\n", w, bpl, rawbpl); + + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl, bpl16; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + w = (w + 127) & ~127; + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + debug(1, "w = %d, bpl = %d, bpl16 = %d\n", w, bpl, bpl16); + + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl16 * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, RealWidth, h); + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + Dots[i] = compute_image_dots(w, h, plane[i]); + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + // Pages are: Y, M, C, K + write_page(&chain[2], &chain[1], &chain[0], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + w = (w + 127) & ~127; + + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + Dots[i] = compute_image_dots(w, h, plane[i]); + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + // Pages are: Y, M, C, K + write_page(&chain[2], &chain[1], &chain[0], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + struct jbg_enc_state se; + + RealWidth = w; + w = (w + 127) & ~127; + + if (SaveToner) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + Dots[3] = compute_image_dots(w, h, buf); + + *bitmaps = buf; + + debug(9, "w x h = %d x %d\n", w, h); + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && even_page(PageNum)) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + if (Duplex == DMDUPLEX_MANUALLONG && even_page(PageNum)) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if (even_page(PageNum) && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int bpl16; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + bpl16 = (bpl + 15) & ~15; + debug(1, "bpl=%d bpl16=%d\n", bpl, bpl16); + + plane[i] = malloc(bpl16 * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl16, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + rc = fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl16*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int i, j; + + while ( (c = getopt(argc, argv, + "cd:g:n:m:p:r:s:tT:u:l:z:L:ABPJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'T': PrintDensity = atoi(optarg); + if (PrintDensity < 1 || PrintDensity > 5) + error(1, "Illegal value '%s' for PrintDensity -T\n", + optarg); + break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'z': Model = atoi(optarg); + if (Model < 0 || Model > MODEL_LAST) + error(1, "Illegal value '%s' for -z\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + Bpp = ResX / ResY; + // ResX = 600; + if (SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + + switch (Duplex) + { + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + DWORD media; + int rc; + + // Handle odd page count + if (odd_page(PageNum)) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + /* + * Manual Pause + */ + load_tray2(stdout); + + fseek(EvenPages, SeekMedia, 0L); + media = be32(DMMEDIA_LETTERHEAD); + rc = fwrite(&media, 1, sizeof(DWORD), EvenPages); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + debug(1, "EvenPage: %d %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e); + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2hiperc-wrapper.1in b/foo2hiperc-wrapper.1in new file mode 100644 index 0000000..3601f56 --- /dev/null +++ b/foo2hiperc-wrapper.1in @@ -0,0 +1,217 @@ +'\" t +.TH foo2hiperc-wrapper 1 "${MODpage}" "foo2hiperc-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2hiperc-wrapper \- Convert Postscript into a HIPERC printer stream +.SH SYNOPSIS +.B foo2hiperc-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2hiperc-wrapper +is a Foomatic compatible printer wrapper for the +\fBfoo2hiperc\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to the Oki HIPERC printer format +for driving the +Oki C310dn, C3100, C3200, C3300n, C3400n, C5100n, C5500n, C5600n and the C5800n +HIPERC printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-C\0 colormode +Color correction mode [0]. +.TS +n l . +10 ICM color profile (using -G *.icm file) +.TE +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media HIPERC +_ +plain 0 +labels 1 +transparency 2 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [2]. +.TS +box; +| n l | n l. +1 A4 2 letter +3 legal - - +5 A5 6 B5jis +7 A6 8 env Monarch +9 env DL 10 env C5 +11 env #10 12 executive +13 env #9 14 legal 13.5" +15 A3 16 tabloid/ledger +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [600x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [0]. +.TS +| n l | n l. +0 auto select +1 tray1 2 tray2 +3 multi 4 manual +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2hiperc\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the HIPERC stream. +\fBfoo2hiperc-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-z\0 model +Model is 0 for non-A3 sized printers, +and 1 for A3/Tabloid/Ledger sized printers (i.e. C810, etc.). +The default is 0. +.TP +.BI \-Z\0 compressed +Use uncompressed (0) or compressed (1) JBIG data. +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. (WORK IN PROGRESS). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2hiperc\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome HIPERC stream from a Postscript document, +examine it, and then print it using nc(1) or netcat(1): + +.RS +.nf +foo2hiperc-wrapper testpage.ps > testpage.hc +hipercdecode < testpage.hc +nc 192.168.1.NNN 9100 < testpage.hc +.fi +.RE +.P +Create a color HIPERC stream from a Postscript document: + +.RS +.nf +foo2hiperc-wrapper -c testpage.ps > testpage.hc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2hiperc-wrapper +.SH SEE ALSO +.BR foo2hiperc (1), +.BR hipercdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLHC}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2hiperc-wrapper.in b/foo2hiperc-wrapper.in new file mode 100755 index 0000000..adcc98d --- /dev/null +++ b/foo2hiperc-wrapper.in @@ -0,0 +1,750 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2hiperc-wrapper.in,v 1.34 2013/12/01 20:25:17 rick Exp $' + +# +# Printer Notes: +# +# Oki Data C301dn -z0 +# Oki Data C310dn -z0 +# Oki Data C3100 -z0 +# Oki Data C3200 -z0 +# Oki Data C3300 -z0 +# Oki Data C3400 -z0 +# Oki Data C5100 -z0 +# Oki Data C5250 -z0 +# Oki Data C5500 -z0 +# Oki Data C5600 -z0 +# Oki Data C5800 -z0 +# Olivetti d-Color P160W -z0 +# Oki C810 -z1 uses A3/tabloid paper! +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2hiperc +PATH=$PATH:/sw/bin:/opt/local/bin +PATH=$PATH:. + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 0=auto 1=tray1 2=tray2 3=multi 4=manual + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] +-z model Model: 0=no A3 (usual), 1=A3 (C810 etc.) [$MODEL] +-Z compressed Use uncompressed (0) or compressed (1) data [0] + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=0 +COPIES=1 +PAPER=2 +RES=600x600 +SOURCE=0 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE=default +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +NUP_ORIENT= +COMPRESSED= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + DEFAULTCOLORMODE=10 + ;; +8.1*) + DEFAULTCOLORMODE=10 + QUALITY=1 + ;; +*) DEFAULTCOLORMODE=10 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Z:Vh?" opt +do + case $opt in + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + Z) COMPRESSED="-Z $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2hiperc -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate model code +# +case "$MODEL" in +0|1) ;; +*) error "Unknown model code $MODEL";; +esac + +# +# Validate media code +# +case "$MEDIA" in +0|plain) MEDIA=0;; +1|labels) MEDIA=1;; +2|transparency) MEDIA=2;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|tray1) SOURCE=1;; +2|tray2) SOURCE=2;; +3|multi) SOURCE=3;; +4|manual) SOURCE=4;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +300x300) ;; +600x600) ;; +1200x600) ;; +1200x1200) ;; +600x1200) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 300x300) ulx=`expr $ulx / 4`; uly=`expr $uly / 2`;; + 600x600) ulx=`expr $ulx / 2`;; + 600x1200) ulx=`expr $ulx / 2`; uly=`expr $uly \* 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 300x300) lrx=`expr $lrx / 4`; lry=`expr $lry / 2`;; + 600x600) lrx=`expr $lrx / 2`;; + 600x1200) lrx=`expr $lrx / 2`; lry=`expr $lry \* 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=21; paper=letter; + set_clipping 2 100 2 100 + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=21; paper=letter; + set_clipping 2 100 2 100 + ;; +1|a4|A4) PAPER=1; paper=a4; XDIM="9920"; YDIM="7016" + set_clipping 150 100 150 100 + ;; +2|letter) PAPER=2; paper=letter; XDIM="10200"; YDIM="6600" + set_clipping 150 100 150 100 + ;; +3|legal) PAPER=3; paper=legal; XDIM="10200"; YDIM="8400" + set_clipping 150 100 150 100 + ;; +5|a5|A5) PAPER=5; paper=a5; XDIM="6992"; YDIM="4960" + set_clipping 150 100 150 100 + ;; +6|b5jis|B5jis) PAPER=6; paper=b5; XDIM="8598"; YDIM="6070" + set_clipping 150 100 150 100 + ;; +7|a6|A6) PAPER=7; paper=a6; XDIM="4960"; YDIM="3496" + set_clipping 150 100 150 100 + ;; +8|envMonarch) PAPER=8; paper=envMonarch;XDIM="4650"; YDIM="4500" + set_clipping 150 100 150 100 + ;; +9|envDL) PAPER=9; paper=envDL; XDIM="5200"; YDIM="5200" + set_clipping 150 100 150 100 + ;; +10|envC5) PAPER=10; paper=envC5; XDIM="7650"; YDIM="5408" + set_clipping 150 100 150 100 + ;; +11|"env#10") PAPER=11; paper=env10; XDIM="4950"; YDIM="5700" + set_clipping 150 100 150 100 + ;; +12|executive) PAPER=12; paper=executive; XDIM="8700"; YDIM="6300" + set_clipping 150 100 150 100 + ;; +13|"env#9") PAPER=13; paper=env9; XDIM="4496"; YDIM="5324" + set_clipping 150 100 150 100 + ;; +14|legal135) PAPER=14; paper=legal135; XDIM="10200"; YDIM="8100" + set_clipping 150 100 150 100 + ;; +15|a3|A3) PAPER=15; paper=a3; XDIM="19842"; YDIM="7016" + set_clipping 150 100 150 100 + ;; +16|ledger|tabloid) + PAPER=16; paper=tabloid; XDIM="20400"; YDIM="6600" + set_clipping 150 100 150 100 + ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +300x300) XDIM=`expr $XDIM / 4`; YDIM=`expr $YDIM / 2`;; +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +1200x1200) YDIM=`expr $YDIM \* 2`;; +600x1200) XDIM=`expr $XDIM / 2`; YDIM=`expr $YDIM \* 2`;; +esac + +ROTATE90=0 +case "$MODEL" in +1) # A3 or 11x17 printer + case "$paper" in + a3) # A3, do not rotate + ;; + ledger|tabloid) # ledger, do not rotate + ;; + *) # Rotate all others + ROTATE90=1 + tmp=$XDIM + XDIM=$YDIM + YDIM=$tmp + case "$RES" in + 600x600) YDIMpoints=`dc -e "6k $YDIM 600 / 72 *p"`;; + 1200x600) YDIMpoints=`dc -e "6k $YDIM 1200 / 72 *p"`;; + 2400x600) YDIMpoints=`dc -e "6k $YDIM 2400 / 72 *p"`;; + esac + esac + ;; +esac + +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none | none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac + case "$GAMMAFILE" in + default) GAMMAFILE=samclp300-0.icm;; + esac +fi + +CRDBASE="$PREFIX/share/foo2hiperc/crd" +if false; then + case "$MODEL" in + 0) model=CLP-300;; + 1) model=CLP-600;; + esac + case "$RES" in + 600x600) SCREEN=$model-600x600cms2;; + 1200x600) SCREEN=$model-1200x600cms2;; + 1200x1200) SCREEN=$model-1200x1200cms2;; + esac +fi + +PSTOPS_OPTS="-n" +if [ $ROTATE90 = 1 ]; then + case $paper in + a3) ;; + ledger) ;; + tabloid) ;; + *) PSTOPS_OPTS="$PSTOPS_OPTS -h $YDIMpoints -r";; + esac +fi + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none | none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac + ;; +1|crd) + # CRD + GAMMAFILE="" + GAMMAFILE="$GAMMAFILE $CRDBASE/${model}cms" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2hiperc -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD $COMPRESSED -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2hiperc -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD $COMPRESSED" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE + [ -f "$TMPFILE2" ] && rm -f $TMPFILE2 +fi + +exit 0 diff --git a/foo2hiperc.1in b/foo2hiperc.1in new file mode 100644 index 0000000..6496984 --- /dev/null +++ b/foo2hiperc.1in @@ -0,0 +1,180 @@ +'\" t +.TH foo2hiperc 1 "${MODpage}" "foo2hiperc ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2hiperc \- Convert Ghostscript pbmraw or bitcmyk format into a +HIPERC printer stream +.SH SYNOPSIS +.B foo2hiperc +.RI [ options "] <" pbmraw-file " >" hiperc-file +.sp 1 +.B foo2hiperc +.RI [ options "] <" bitcmyk-file " >" hiperc-file +.sp 1 +.B foo2hiperc +.RI [ options "] <" pksmraw-file " >" hiperc-file +.SH DESCRIPTION +.B foo2hiperc +converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome +or color HIPERC streams, +for driving the +Oki C310dn, C3100, C3200, C3300n, C3400n, C5100n, C5500n, C5600n, and the C5800n +HIPERC printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [5100x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media HIPERC +_ +plain 0 +labels 1 +transparency 2 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [2]. +.TS +box; +| n l | n l. +1 A4 2 letter +3 legal - - +5 A5 6 B5jis +7 A6 8 env Monarch +9 env DL 10 env C5 +11 env #10 12 executive +13 env #9 14 legal 13.5" +15 A3 16 tabloid/ledger +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [600x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [0]. +.TS +| n l | n l. +0 auto select +1 tray1 2 tray2 +3 multi 4 manual +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2hiperc\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the HIPERC stream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.BI \-Z\0 compressed +Use uncompressed (0) or compressed (1) JBIG data. +.SS Debugging Options +These options are used for debugging \fBfoo2hiperc\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white HIPERC stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zm +.fi +.RE +.P +Create a color HIPERC stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2hiperc +.SH SEE ALSO +.BR foo2hiperc-wrapper (1), +.BR hipercdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLHC}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2hiperc.c b/foo2hiperc.c new file mode 100644 index 0000000..2a8fe7e --- /dev/null +++ b/foo2hiperc.c @@ -0,0 +1,1719 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics ZJ-stream format. There +is some information about the ZJS format at http://ddk.zeno.com. + +With this utility, you can print to some HP printers, such as these: + - Oki C310dn, C3100, C3200, C3300n, C3400n, C5100n, C5500n + +AUTHORS +This program began life as Robert Szalai's 'pbmtozjs' program. It +also uses Markus Kuhn's jbig-kit compression library (included, but +also available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +The program was overhauled by Rick Richardson to limit data chunk size +to 65536 bytes, add command line options, add color support, +and other miscellaneous features. + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2hiperc.c,v 1.36 2017/03/20 16:35:04 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#ifdef linux + #include +#endif +#include "jbig.h" +#include "hiperc.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 600; +int ResY = 600; +int Bpp = 1; +int PaperCode = 2; //DMPAPER_LETTER; +int PageWidth = 600 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_PLAIN; +char *Username = NULL; +char *Filename = NULL; +int Mode = 1; + #define MODE_MONO 1 + #define MODE_COLOR 2 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 16; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; +int RealWidth; +int EconoMode = 0; +int Compressed = 0; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; + +long JbgOptions[5] = +{ + /* Order */ + 0, //JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPBON, + /* L0 */ + 256, + /* MX */ + 16, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2hiperc [options] hiperc-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome HIPERC stream,\n" +" for driving the Oki C310, C3100 to C5800 color laser printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2hiperc -r600x600 -g5100x6600 -p1 >testpage.zm\n" +"\n" +" foo2hiperc [options] hiperc-file\n" +" foo2hiperc [options] hiperc-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color HIPERC stream,\n" +" for driving the Oki C310, C3100 to C5800 color laser printers\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2hiperc -r600x600 -g5100x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 0=plain 1=labels 2=transparency\n" +"-p paper Paper code to send to printer [%d]\n" +" 1=A4, 2=letter, 3=legal, 5=A5, 6=B5, 7=A6, 8=envMonarch,\n" +" 9=envDL, 10=envC5, 11=env#10, 12=executive, 13=env#9,\n" +" 14=legal135, 15=A3, 16=tabloid/ledger\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 0=auto 1=tray1 2=tray2 3=multi 4=manual\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +"-Z compressed Use uncompressed (0) or compressed (1) data [%d]\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , ExtraPad + , Compressed + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 0x80000; // Printer does strange things otherwise. + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +void +start_page_compressed(int nbie, int w, int h, int plane, unsigned char *bih, + FILE *ofp) +{ + int h256 = ((h + 255) / 256) * 256; + DWORD rec[13]; + int rc; + + rec[0] = be32(52); //reclen=52 + rec[1] = be32(0); //rectype=0 + + rec[2] = be32(16); //block0: len=16 + //rec[3] = be32( (1<<24) + (plane<<16) + (128<<8) + 17); //block0: data + if (ResX == 300) + rec[3] = be32( (nbie<<24) + (plane<<16) + (128<<8) + 0); + else if (ResY == 1200) + rec[3] = be32( (nbie<<24) + (plane<<16) + (128<<8) + 33); + else + rec[3] = be32( (nbie<<24) + (plane<<16) + (128<<8) + 17); + rec[4] = be32(w); //block0: width + rec[5] = be32(0); //block0: data + rec[6] = be32(0x10000000); //block0: data + + rec[7] = be32(20); //block1: len=20 + rc = fwrite(rec, 32, 1, ofp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); + + ((DWORD *) bih)[2] = be32(h256); + rc = fwrite(bih, 20, 1, ofp); + if (rc == 0) error(1, "fwrite(2): rc == 0!\n"); +} + +void +write_plane_compressed(int nbie, unsigned char *buf, int w, int h, int plane, + FILE *ofp) +{ + int y; + int ns = 256; + + for (y = 0; y < h; y += ns) + { + struct jbg_enc_state se; + BIE_CHAIN *chain; + BIE_CHAIN *current; + unsigned char *bitmaps[1]; + int lines = (h-y) > ns ? ns : (h-y); + int chainlen; + DWORD rec[5]; + int rc; + + bitmaps[0] = buf + y * ((w+7)/8); + chain = NULL; + JbgOptions[2] = (lines < ns) ? lines : ns; + + jbg_enc_init(&se, w, lines, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + if (chain->len != 20) + error(1,"Program error: missing BIH at start of chain\n"); + if (y == 0) + start_page_compressed(nbie, w, h, plane, chain->data, ofp); + + chainlen = 0; + for (current = chain->next; current; current = current->next) + chainlen += current->len; + + rec[0] = be32(chainlen + 20); //reclen + rec[1] = be32(1); //rectype=1 + + rec[2] = be32(4); //block0: len=4 + rec[3] = be32(plane << 24); //block0: black + + rec[4] = be32(chainlen); //block1: len + rc = fwrite(rec, 20, 1, ofp); + if (rc == 0) error(1, "fwrite(3): rc == 0!\n"); + for (current = chain->next; current; current = current->next) + { + rc = fwrite(current->data, 1, current->len, ofp); + if (rc == 0) error(1, "fwrite(4): rc == 0!\n"); + } + } +} + +int +write_plane(int pn, BIE_CHAIN **root, FILE *ofp) +{ + BIE_CHAIN *current = *root; + // BIE_CHAIN *next; + // int len; + int w, h; + int stripe = 0; + + debug(3, "Write Plane %d\n", pn); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + + start_page_compressed(1, w, h, pn-1, current->data, ofp); + + for (current = (*root)->next; current && current->len; + current = current->next) + { + DWORD rec[5]; + int blklen = current->len; + unsigned char *buf = current->data; + int plane = pn - 1; + int y = 0; + int rc; + + // len = current->len; + // next = current->next; + ++stripe; + + rec[0] = be32(blklen + 20); //reclen + rec[1] = be32(1); //rectype=1 + + rec[2] = be32(4); //block0: len=4 + rec[3] = be32(plane << 24); //block0: black + + rec[4] = be32(blklen); //block1: len + rc = fwrite(rec, 20, 1, ofp); + if (rc == 0) error(1, "fwrite(5): rc == 0!\n"); + rc = fwrite(buf + y*(w/8), 1, blklen, ofp); + if (rc == 0) error(1, "fwrite(6): rc == 0!\n"); + } + free_chain(*root); + + return 0; +} + +void +end_page(FILE *ofp) +{ + DWORD rec[2]; + static int pageno = 0; + int rc; + + rec[0] = be32(8); //reclen=8 + rec[1] = be32(255); //rectype=255 + rc = fwrite(rec, 8, 1, ofp); + if (rc == 0) error(1, "fwrite(7): rc == 0!\n"); + + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +start_page_uncompressed(int nbie, int w, int h, int plane, FILE *ofp) +{ + DWORD rec[13]; + int h256 = ((h + 255) / 256) * 256; + int rc; + + rec[0] = be32(52); //reclen=52 + rec[1] = be32(0); //rectype=0 + + rec[2] = be32(16); //block0: len=16 + if (ResX == 300) + rec[3] = be32( (nbie<<24) + (plane<<16) + 0); //block0: data + else if (ResY == 1200) + rec[3] = be32( (nbie<<24) + (plane<<16) + 33); //block0: data + else + rec[3] = be32( (nbie<<24) + (plane<<16) + 17); //block0: data + rec[4] = be32(w); //block0: width + rec[5] = be32(0); //block0: data + if (Duplex == DMDUPLEX_OFF) + rec[6] = be32(0); //block0: data + else + rec[6] = be32( (PageNum & 1) ? 0x100 : 0x200); //block0: data + + rec[7] = be32(20); //block1: len=20 + rec[8] = be32(0x30303130); //block1: "0010" + rec[9] = be32(w); //block1: width + rec[10] = be32(h256); //block1: height + rec[11] = be32(256); //block1: rows + rec[12] = be32(0); //block1: data + rc = fwrite(rec, 52, 1, ofp); + if (rc == 0) error(1, "fwrite(8): rc == 0!\n"); +} + +void +write_plane_uncompressed(unsigned char *buf, int w, int h, int plane, FILE *ofp) +{ + int h256 = ((h + 255) / 256) * 256; + int w256 = 256 * w/8; + int x, y; + int blklen; + DWORD rec[5]; + int rc; + + for (y = 0; y < h; y += 256) + { + if ((y+256) <= h) + blklen = 256 * w/8; + else + blklen = (h - y) * w/8; + rec[0] = be32(w256 + 20); //reclen + rec[1] = be32(1); //rectype=1 + + rec[2] = be32(4); //block0: len=4 + rec[3] = be32(plane << 24); //block0: black + + rec[4] = be32(w256); //block1: len + rc = fwrite(rec, 20, 1, ofp); + if (rc == 0) error(1, "fwrite(9): rc == 0!\n"); + rc = fwrite(buf + y*(w/8), 1, blklen, ofp); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + } + + // Pad to 256 lines... + for (y = h; y < h256; ++y) + for (x = 0; x < w/8; ++x) + fputc(0, ofp); +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + +// start_page(root, nbie, ofp); + + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root2) + write_plane(2, root2, ofp); + if (root3) + write_plane(3, root3, ofp); + if (root4) + write_plane(4, root4, ofp); + + end_page(ofp); + return 0; +} + +void +start_doc(FILE *ofp) +{ + time_t now; + struct tm *tmp; + char datetime[256+1]; + char *device_uri; + char *strmedia[] = + { + "PLAIN", "LABELS", "TRANSPARENCY" + }; + char *strpaper[] = + { + /*0*/ "CUSTOM", "A4", "LETTER", "LEGAL", "LEGAL13", + /*5*/ "A5", "B5", "A6", "MONARCH", "DL", + /*10*/ "C5", "COM10", "EXECUTIVE", "COM9", "LEGAL135", + /*15*/ "A3", "TABLOID" + }; + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "NORMAL" + + fprintf(ofp, "\033%%-12345X@PJL\r\n"); + fprintf(ofp, "@PJL RDYMSG DISPLAY = \"%s\"\r\n", + Username ? Username : "Unknown"); + fprintf(ofp, "@PJL SET OKIJOBACCOUNTJOB USERID=\"%s\" JOBNAME=\"%s\"\r\n", + Username ? Username : "Unknown", + Filename ? Filename : "Unknown" + ); + fprintf(ofp, "@PJL SET OKIAUXJOBINFO DATA=\"DocumentName=%s\"\r\n", + Filename ? Filename : "Unknown" + ); + + #ifdef linux + { + struct utsname u; + + uname(&u); + fprintf(ofp, "@PJL SET OKIAUXJOBINFO DATA=\"ComputerName=%s\"\r\n", + u.nodename); + } + #endif + + now = time(NULL); + tmp = localtime(&now); + strftime(datetime, sizeof(datetime), "00:00:00 %Y/%m/%d", tmp); + fprintf(ofp, "@PJL SET OKIAUXJOBINFO DATA=\"ReceptionTime=%s\"\r\n", + datetime); + + device_uri = getenv("DEVICE_URI"); + if (device_uri) + fprintf(ofp, "@PJL SET OKIAUXJOBINFO DATA=\"PortName=%s\"\r\n", + device_uri); + + if (SourceCode == DMBIN_AUTO) + fprintf(ofp, "@PJL SET OKIAUTOTRAYSWITCH=ON\r\n"); + else + fprintf(ofp, "@PJL SET OKIAUTOTRAYSWITCH=OFF\r\n"); + + fprintf(ofp, "@PJL SET OKIPAPERSIZECHECK=ENABLE\r\n"); + switch (ResX) + { + case 300: fprintf(ofp, "@PJL SET RESOLUTION=300\r\n"); break; + case 600: fprintf(ofp, "@PJL SET RESOLUTION=600\r\n"); break; + default: error(1, "Illegal X resolution\n"); break; + } + switch (ResY) + { + case 300: + case 600: break; + case 1200: fprintf(ofp, "@PJL SET RESOLUTION=V1200\r\n"); break; + } + + fprintf(ofp, "@PJL SET PAPER=%s\r\n", STRARY(PaperCode, strpaper)); + fprintf(ofp, "@PJL SET OKITRAYSEQUENCE=PAPERFEEDTRAY\r\n"); + + switch (SourceCode) + { + case DMBIN_AUTO: + case DMBIN_TRAY1: + fprintf(ofp, "@PJL SET OKIPAPERFEED=TRAY1\r\n"); + break; + case DMBIN_TRAY2: + fprintf(ofp, "@PJL SET OKIPAPERFEED=TRAY2\r\n"); + break; + case DMBIN_MULTI: + fprintf(ofp, "@PJL SET OKIPAPERFEED=FRONTTRAY\r\n"); + break; + case DMBIN_MANUAL: + fprintf(ofp, "@PJL SET OKIPAPERFEED=FRONTTRAY\r\n"); + fprintf(ofp, "@PJL SET MANUALFEED=ON\r\n"); + break; + } + + fprintf(ofp, "@PJL SET OKIMEDIATYPE = %s\r\n", STRARY(MediaCode, strmedia)); + + fprintf(ofp, "@PJL SET LPARM:PCL OKIPRINTMARGIN=INCH1D6\r\n"); + + fprintf(ofp, "@PJL SET COPIES=%d\r\n", Copies); + fprintf(ofp, "@PJL SET QTY=1\r\n"); + fprintf(ofp, "@PJL SET HIPERCEFFECTIVEBLOCKSIZE=%d\r\n", + PageWidth * PageHeight / 8); + + switch (Duplex) + { + case DMDUPLEX_LONGEDGE: + case DMDUPLEX_MANUALLONG: + fprintf(ofp, "@PJL SET DUPLEX=ON\r\n"); + //fprintf(ofp, "@PJL SET BINDING=LONGEDGE\r\n"); + break; + case DMDUPLEX_SHORTEDGE: + case DMDUPLEX_MANUALSHORT: + fprintf(ofp, "@PJL SET DUPLEX=ON\r\n"); + //fprintf(ofp, "@PJL SET BINDING=SHORTEDGE\r\n"); + break; + } + fprintf(ofp, "@PJL ENTER LANGUAGE=HIPERC\n"); +} + +void +end_doc(FILE *ofp) +{ + //fprintf(ofp, "%c", 9); + fprintf(ofp, "\033%%-12345X@PJL\r\n"); + fprintf(ofp, "@PJL EOJ NAME = \"End \"\n"); + fprintf(ofp, "\033%%-12345X"); +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + bpl = (bpl + 15) & ~15; + debug(1, "w=%d, bpl=%d, rawbpl=%d\n", w, bpl, rawbpl); + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl, bpl16; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + w = (w + 127) & ~127; + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + debug(1, "w = %d, bpl = %d, bpl16 = %d\n", w, bpl, bpl16); + + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl16 * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, RealWidth, h); + + if (Compressed) + { + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + } + else + { + if (Color2Mono) + { + i = Color2Mono - 1; + start_page_uncompressed(1, w, h, i, ofp); + write_plane_uncompressed(plane[i], w, h, i, ofp); + } + else if (AnyColor) + { + for (i = 0; i < 4; ++i) + start_page_uncompressed(4, w, h, i, ofp); + for (i = 0; i < 4; ++i) + write_plane_uncompressed(plane[i], w, h, i, ofp); + } + else + { + start_page_uncompressed(1, w, h, 3, ofp); + write_plane_uncompressed(plane[3], w, h, 3, ofp); + } + end_page(ofp); + } + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + w = (w + 127) & ~127; + debug(1, "w = %d\n", w); + + if (Compressed) + { + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + } + else + { + if (Color2Mono) + { + i = Color2Mono - 1; + start_page_uncompressed(1, w, h, i, ofp); + write_plane_uncompressed(plane[i], w, h, i, ofp); + } + else if (AnyColor) + { + for (i = 0; i < 4; ++i) + start_page_uncompressed(4, w, h, i, ofp); + for (i = 0; i < 4; ++i) + write_plane_uncompressed(plane[i], w, h, i, ofp); + } + else + { + start_page_uncompressed(1, w, h, 3, ofp); + write_plane_uncompressed(plane[3], w, h, 3, ofp); + } + end_page(ofp); + } + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + // BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + // struct jbg_enc_state se; + + RealWidth = w; + w = (w + 127) & ~127; + + if (SaveToner) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + *bitmaps = buf; + + if (Compressed) + { + // start_page_compressed(1, w, h, 3, ofp); + + write_plane_compressed(1, buf, w, h, 3, ofp); + + end_page(ofp); +#if 0 + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); +#endif + } + else + { + start_page_uncompressed(1, w, h, 3, ofp); + + write_plane_uncompressed(buf, w, h, 3, ofp); + + end_page(ofp); + } + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + if (Duplex == DMDUPLEX_MANUALLONG && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if ((PageNum & 1) == 0 && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int bpl16; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + bpl16 = (bpl + 15) & ~15; + debug(1, "bpl=%d bpl16=%d\n", bpl, bpl16); + + plane[i] = malloc(bpl16 * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl16, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl16*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int i, j; + + while ( (c = getopt(argc, argv, + "cd:g:n:m:p:r:s:tu:l:L:ABPJ:S:U:X:Z:D:V?h")) != EOF) + switch (c) + { + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'Z': Compressed = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + if (getenv("ccc")) + Compressed = 1; + + Bpp = ResX / 600; + //ResX = 600; + if (0 && SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + + switch (Duplex) + { + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + // Handle odd page count + if ( (PageNum & 1) == 1) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + debug(1, "EvenPage: %d %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e); + + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2hp.1in b/foo2hp.1in new file mode 100644 index 0000000..d037311 --- /dev/null +++ b/foo2hp.1in @@ -0,0 +1,204 @@ +'\" t +.TH foo2hp 1 "${MODpage}" "foo2hp ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2hp \- Convert Ghostscript pbmraw or bitcmyk format into a +ZJS printer stream +.SH SYNOPSIS +.B foo2hp +.RI [ options "] <" pbmraw-file " >" zjs-file +.sp 1 +.B foo2hp +.RI [ options "] <" bitcmyk-file " >" zjs-file +.sp 1 +.B foo2hp +.RI [ options "] <" cups-file " >" zjs-file +.SH DESCRIPTION +.B foo2hp +converts Ghostscript pbmraw, bitcmyk, or cups output formats to monochrome +or color ZJS streams, +for driving the Hewlett-Packard 2600n color laser printer +and other Zenographics-based printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-b\0 bits +Bits per plane if autodetect doesn't work (1 or 2) [1]. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l +l n. +_ +Media HPLJ 2600n +_ +plain 1 +preprinted 514 +letterhead 513 +transparency 2 +prepunched 515 +labels 265 +bond 260 +recycled 516 +color 512 +tough 276 +envelope 267 +light 258 +heavy 262 +cardstock 261 +lightglossy 268 +glossy 269 +heavyglossy 270 +cover 277 +photo 278 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 9 A4 +5 legal 11 A5 +7 executive 13 B5jis +20 env #10 27 env DL +28 env C5 34 env B5 +37 env Monarch +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [600x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [7]. +.TS +| n l | n l. +1 tray 2 7 auto +2 tray 1 +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2hp\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-O\0 c,m,y,k +Alignment of CMYK in rows. The default is 0,0,0,0. +.TP +.BI \-P +Do not send START_PLANE codes on monochrome output. May be +needed by some black and white only printers, such as the +HP LaserJet 1000. +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.BI \-X\0 padlen +Add extra zero padding to the end of BID segments. The default is +16 bytes. +.SS Debugging Options +These options are used for debugging \fBfoo2hp\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white ZJS stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zm +.fi +.RE +.P +Create a color ZJS stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2hp +.SH SEE ALSO +.BR foo2hp2600-wrapper (1), +.BR zjsdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLHP}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2hp.c b/foo2hp.c new file mode 100644 index 0000000..297635d --- /dev/null +++ b/foo2hp.c @@ -0,0 +1,1832 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics ZJ-stream format. There +is some information about the ZJS format at http://ddk.zeno.com. + +With this utility, you can print to some HP, such as these: + - HP LaserJet 2600n mono or color + - HP LaserJet 1600 mono or color + - HP LaserJet CP1215 mono or color + +AUTHORS +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2hp.c,v 1.48 2011/06/09 13:58:50 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include "jbig.h" +#include "zjs.h" +#include "cups.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 600; +int ResY = 600; +int Bpp = 1; +int PaperCode = DMPAPER_LETTER; +int PageWidth = 600 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_STANDARD; +char *Username = NULL; +char *Filename = NULL; +int Mode = 0; + #define MODE_MONO 1 + #define MODE_COLOR 2 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 0; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +int CMYK_Offset[4] = {0, 0, 0, 0}; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; + +long JbgOptions[5] = +{ + /* Order */ + JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPDON | JBG_TPBON | JBG_DPON, + /* L0 */ + 128, + /* MX */ + 16, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2hp [options] zjs-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome ZJS stream,\n" +" for driving the Hewlett-Packard 2600n color laser printer\n" +" and other Zenographics-based black and white printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2hp -r600x600 -g5100x6600 -p1 >testpage.zm\n" +"\n" +" foo2hp [options] zjs-file\n" +" foo2hp [options] zjs-file\n" +"\n" +" Convert Ghostscript bitcmyk or cups format to a color ZJS stream,\n" +" for driving the Hewlett-Packard 2600n color laser printer\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2hp -r600x600 -g5100x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-b bits Bits per plane if autodetect doesn't work (1 or 2) [%d]\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge,\n" +//" 4=manual longedge, 5=manual shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 1=plain 514=preprinted 513=letterhead 2=transparency\n" +" 515=prepunched 265=labels 260=bond 516=recycled\n" +" 512=color 276=tough 267=envelope 258=light 262=heavy\n" +" 261=cardstock 268=lightglossy 269=glossy\n" +" 270=heavyglossy 277=cover 278=photo\n" +"-p paper Paper code to send to printer [%d]\n" +" 1=letter, 5=legal 7=executive 9=A4 11=A5 13=B5jis\n" +" 20=env#10, 27=envDL 28=envC5 34=envB5 37=envMonarch\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=tray2 2=tray1 7=auto\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-O c,m,y,k Alignment of CMYK in rows [%d,%d,%d,%d]\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Bpp + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , CMYK_Offset[0], CMYK_Offset[1], CMYK_Offset[2], CMYK_Offset[3] + , ExtraPad + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +/* + * Mirror24: bits 01234567 become 10325476 + */ +unsigned char Mirror24[256] = +{ + 0, 2, 1, 3, 8, 10, 9, 11, 4, 6, 5, 7, 12, 14, 13, 15, + 32, 34, 33, 35, 40, 42, 41, 43, 36, 38, 37, 39, 44, 46, 45, 47, + 16, 18, 17, 19, 24, 26, 25, 27, 20, 22, 21, 23, 28, 30, 29, 31, + 48, 50, 49, 51, 56, 58, 57, 59, 52, 54, 53, 55, 60, 62, 61, 63, + 128,130,129,131,136,138,137,139,132,134,133,135,140,142,141,143, + 160,162,161,163,168,170,169,171,164,166,165,167,172,174,173,175, + 144,146,145,147,152,154,153,155,148,150,149,151,156,158,157,159, + 176,178,177,179,184,186,185,187,180,182,181,183,188,190,189,191, + 64, 66, 65, 67, 72, 74, 73, 75, 68, 70, 69, 71, 76, 78, 77, 79, + 96, 98, 97, 99,104,106,105,107,100,102,101,103,108,110,109,111, + 80, 82, 81, 83, 88, 90, 89, 91, 84, 86, 85, 87, 92, 94, 93, 95, + 112,114,113,115,120,122,121,123,116,118,117,119,124,126,125,127, + 192,194,193,195,200,202,201,203,196,198,197,199,204,206,205,207, + 224,226,225,227,232,234,233,235,228,230,229,231,236,238,237,239, + 208,210,209,211,216,218,217,219,212,214,213,215,220,222,221,223, + 240,242,241,243,248,250,249,251,244,246,245,247,252,254,253,255, +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +static void +chunk_write_rsvd(unsigned long type, unsigned int rsvd, + unsigned long items, unsigned long size, FILE *fp) +{ + ZJ_HEADER chunk; + int rc; + + chunk.type = be32(type); + chunk.items = be32(items); + chunk.size = be32(sizeof(ZJ_HEADER) + size); + chunk.reserved = be16(rsvd); + chunk.signature = 0x5a5a; + rc = fwrite(&chunk, 1, sizeof(ZJ_HEADER), fp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); +} + +static void +chunk_write(unsigned long type, unsigned long items, unsigned long size, + FILE *fp) +{ + chunk_write_rsvd(type, 0, items, size, fp); +} + +static void +item_uint32_write(unsigned short item, unsigned long value, FILE *fp) +{ + ZJ_ITEM_UINT32 item_uint32; + int rc; + + item_uint32.header.size = be32(sizeof(ZJ_ITEM_UINT32)); + item_uint32.header.item = be16(item); + item_uint32.header.type = ZJIT_UINT32; + item_uint32.header.param = 0; + item_uint32.value = be32(value); + rc = fwrite(&item_uint32, 1, sizeof(ZJ_ITEM_UINT32), fp); + if (rc == 0) error(1, "fwrite(2): rc == 0!\n"); +} + +static int +item_str_write(unsigned short item, char *str, FILE *fp) +{ + int lenpadded; + ZJ_ITEM_HEADER hdr; + int rc; + + lenpadded = 4 * ((strlen(str)+1 + 3) / 4); + + hdr.size = be32(sizeof(hdr) + lenpadded); + hdr.item = be16(item); + hdr.type = ZJIT_STRING; + hdr.param = 0; + if (fp) + { + rc = fwrite(&hdr, sizeof(hdr), 1, fp); + if (rc == 0) error(1, "fwrite(3): rc == 0!\n"); + rc = fwrite(str, lenpadded, 1, fp); + if (rc == 0) error(1, "fwrite(4): rc == 0!\n"); + } + return (sizeof(hdr) + lenpadded); +} + +static int +item_bytelut_write(unsigned short item, int size, unsigned char *p, FILE *fp) +{ + int lenpadded; + ZJ_ITEM_HEADER hdr; + DWORD val; + int rc; + + lenpadded = 4 * ((size + 3) / 4); + + hdr.size = be32(sizeof(hdr) + 4 + lenpadded); + hdr.item = be16(item); + hdr.type = ZJIT_BYTELUT; + hdr.param = 0; + if (fp) + { + val = be32(size); + rc = fwrite(&hdr, sizeof(hdr), 1, fp); + if (rc == 0) error(1, "fwrite(5): rc == 0!\n"); + rc = fwrite(&val, 4, 1, fp); + if (rc == 0) error(1, "fwrite(6): rc == 0!\n"); + rc = fwrite(p, lenpadded, 1, fp); + if (rc == 0) error(1, "fwrite(7): rc == 0!\n"); + } + return (sizeof(hdr) + 4 + lenpadded); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +int +write_bitmap_plane(int planeNum, int eof, int incry, BIE_CHAIN **root, FILE *fp) +{ + BIE_CHAIN *current = *root; + BIE_CHAIN *next; + int i, len, pad_len; + #define PADTO 4 + + debug(3, "Write Plane %d\n", planeNum); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + if (planeNum) + { + int size = 0; + + for (current = *root; current && current->len; current = current->next) + { + if (current == *root) + {} + //size = current->len; + else + { + len = current->len; + next = current->next; + if (!next || !next->len) + pad_len = ExtraPad + PADTO * ((len+PADTO-1)/PADTO) - len; + else + pad_len = 0; + size += len + pad_len; + } + } + if (eof) + { + debug(3, "Write Plane %d %d\n", planeNum, eof); + chunk_write_rsvd(ZJT_2600N, 0x24, + 3, size + 3*sizeof(ZJ_ITEM_UINT32), fp); + item_uint32_write(ZJI_PLANE, planeNum, fp); + item_uint32_write(ZJI_INCRY, incry, fp); + item_uint32_write(0x67, 1, fp); + } + else + { + chunk_write_rsvd(ZJT_2600N, 0xc, + 1, size + 1*sizeof(ZJ_ITEM_UINT32), fp); + item_uint32_write(ZJI_PLANE, planeNum, fp); + } + } + + for (current = *root; current && current->len; current = current->next) + { + if (current == *root) + { + } + else + { + len = current->len; + next = current->next; + if (!next || !next->len) + pad_len = ExtraPad + PADTO * ((len+PADTO-1)/PADTO) - len; + else + pad_len = 0; + //chunk_write(ZJT_JBIG_BID, 0, len + pad_len, fp); + fwrite(current->data, 1, len, fp); + for (i = 0; i < pad_len; i++ ) + putc(0, fp); + } + } + + free_chain(*root); + + return 0; +} + +void +start_bitmap_page(int w, int h, int nbie, FILE *ofp) +{ + static int pageno = 0; + int nitems; + + nitems = 13; + chunk_write_rsvd(ZJT_START_PAGE, 0x9c, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), ofp); + item_uint32_write(ZJI_PLANE, nbie, ofp); + item_uint32_write(ZJI_DMPAPER, PaperCode, ofp); + item_uint32_write(ZJI_DMCOPIES, Copies, ofp); + item_uint32_write(ZJI_DMDEFAULTSOURCE, SourceCode, ofp); + item_uint32_write(ZJI_DMMEDIATYPE, MediaCode, ofp); + item_uint32_write(ZJI_NBIE, nbie, ofp); + item_uint32_write(ZJI_RESOLUTION_X, ResX, ofp); + item_uint32_write(ZJI_RESOLUTION_Y, ResY, ofp); + item_uint32_write(ZJI_RASTER_X, w*Bpp, ofp); + item_uint32_write(ZJI_RASTER_Y, h, ofp); + item_uint32_write(ZJI_VIDEO_BPP, Bpp, ofp); + item_uint32_write(ZJI_VIDEO_X, w, ofp); + item_uint32_write(ZJI_VIDEO_Y, h, ofp); + // RES_X == ResX*Bpp, VIDEO_X == w; HP has a bug!!!! + + //item_uint32_write(ZJI_OFFSET_X, LogicalOffsetX, ofp); + //item_uint32_write(ZJI_OFFSET_Y, LogicalOffsetY, ofp); + ++pageno; + //item_uint32_write(ZJI_MINOLTA_PAGE_NUMBER, pageno, ofp); + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(int np, FILE *ofp) +{ + int nitems; + + nitems = 8; + chunk_write_rsvd(ZJT_END_PAGE, 0x60, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), ofp); + item_uint32_write(0x8200, (np>1) ? 1 : 0, ofp); + item_uint32_write(0x8201, (np>1) ? 1 : 0, ofp); + item_uint32_write(0x8202, (np>1) ? 1 : 0, ofp); + item_uint32_write(0x8203, 1, ofp); + item_uint32_write(0x8204, (np>1) ? 1 : 0, ofp); + item_uint32_write(0x8205, (np>1) ? 1 : 0, ofp); + item_uint32_write(0x8206, (np>1) ? 1 : 0, ofp); + item_uint32_write(0x8207, 1, ofp); +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 65536; // Printer does strange things otherwise. + int i, state; + unsigned char ch; + + // Delete everything after ff 02 + state = 0; + for (i = 0; i < len; ++i) + { + ch = start[i]; + switch (state) + { + case 0: + if (ch == 0xff) state = 0xff; + break; + case 0xff: + if (ch == 0x02) { len = i + 1; goto out; } + if (state == 0xff) state = 0; + break; + } + } +out: + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +int +write_bitmap_page(int w, int h, int np, unsigned char *bitmaps[4], FILE *ofp) +{ + int x, y; + int p; + int size; + int i; + DWORD bih[5]; + int w16; + + start_bitmap_page(w, h, np, ofp); + if (Bpp == 2) + w16 = (w + 63) & ~63; + else + w16 = (w + 127) & ~127; + debug(2, "w16 = %d\n", w16); + + for (p = 0; p < np; ++p) + { + int nitems; + + nitems = 7; + size = nitems * sizeof(ZJ_ITEM_UINT32); + ++nitems; + bih[0] = 1 << 8; + bih[1] = w16*Bpp; + bih[2] = 100; + bih[3] = 128; + bih[4] = (16 << 24) | ((JBG_ILEAVE|JBG_SMID) << 8) | + ((JBG_LRLTWO | JBG_TPDON | JBG_TPBON | JBG_DPON) << 0); + for (i = 0; i < 5; ++i) + bih[i] = be32(bih[i]); + size += item_bytelut_write(0, 20, (unsigned char *) bih, NULL); + + chunk_write_rsvd(ZJT_2600N, 0x74, nitems, size, ofp); + item_uint32_write(ZJI_BITMAP_TYPE, 1, ofp); + item_uint32_write(ZJI_BITMAP_PIXELS, w16*Bpp, ofp); + item_uint32_write(ZJI_BITMAP_STRIDE, w16*Bpp, ofp); + item_uint32_write(ZJI_INCRY, 100, ofp); + item_uint32_write(ZJI_BITMAP_BPP, 1, ofp); + item_uint32_write(ZJI_VIDEO_BPP, Bpp, ofp); + item_uint32_write(ZJI_PLANE, (np==1) ? 4 : p+1, ofp); + item_bytelut_write(ZJI_JBIG_BIH, 20, (unsigned char *) bih, ofp); + + if (Bpp == 2) + { + for (y = 0; y < h; ++y) + for (x = 0; x < w16*Bpp/8; ++x) + bitmaps[p][y*w16*Bpp/8 + x] + = Mirror24[ bitmaps[p][y*w16*Bpp/8 + x] ]; + } + } + + for (y = 0; y < h; y += 100) + { + for (p = 0; p < np; ++p) + { + struct jbg_enc_state se; + BIE_CHAIN *chain = NULL; + int len, eof; + + len = h - y; + if (len > 100) + len = 100; + eof = (y+100) >= h; + jbg_enc_init(&se, w16*Bpp, len, 1, &bitmaps[p], + output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_bitmap_plane((np==1) ? 4 : p+1, eof, len, &chain, ofp); + bitmaps[p] += (100*w16*Bpp + 7) / 8; + } + } + + end_page(np, ofp); + return 0; +} + +void +start_doc(FILE *fp) +{ + char header[4] = "JZJZ"; // Big-endian data + int nitems; + int size; + int rc; + + rc = fwrite(header, 1, sizeof(header), fp); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + + nitems = 3; + size = nitems * sizeof(ZJ_ITEM_UINT32); + if (Username) + { + ++nitems; + size += item_str_write(0, Username, NULL); + } + if (Filename) + { + ++nitems; + size += item_str_write(0, Filename, NULL); + } + + chunk_write_rsvd(ZJT_START_DOC, 0x24, nitems, size, fp); + item_uint32_write(ZJI_DMCOLLATE, 0, fp); + item_uint32_write(ZJI_DMDUPLEX, Duplex, fp); + item_uint32_write(ZJI_PAGECOUNT, 0, fp); + + if (Username) + item_str_write(ZJI_MINOLTA_USERNAME, Username, fp); + if (Filename) + item_str_write(ZJI_MINOLTA_FILENAME, Filename, fp); +} + +void +end_doc(FILE *fp) +{ + int nitems; + + nitems = 0; + chunk_write(ZJT_END_DOC , nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); +} + +void +load_tray2(FILE *fp) +{ + int nitems; + + nitems = 0; + chunk_write(ZJT_2600N_PAUSE, nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + bpl = (bpl + 15) & ~15; + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * (h + abs(CMYK_Offset[i])) ); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + int i; + int bpl = (w + 7) / 8; + int bpl16 = (bpl + 15) & ~15; + unsigned char *plane[4], *bitmaps[4]; + + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl16 * (h + abs(CMYK_Offset[i])) ); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + debug(1, "malloc plane[%d] = %x\n", i, plane[i]); + } + + cmyk_planes(plane, raw, w, h); + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + bitmaps[i] = plane[i] + CMYK_Offset[i] * bpl16; + } + + if (Color2Mono) + write_bitmap_page(w, h, 1, &bitmaps[Color2Mono-1], ofp); + else if (AnyColor) + write_bitmap_page(w, h, 4, bitmaps, ofp); + else + write_bitmap_page(w, h, 1, &bitmaps[3], ofp); + + for (i = 0; i < 4; ++i) + { + debug(1, "free plane[%d] = %x\n", i, plane[i]); + free(plane[i]); + } + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + int i, j; + unsigned char *bitmaps[4]; + + int w16; + int bpl; + + if (Bpp == 2) + w16 = (w + 63) & ~63; + else + w16 = (w + 127) & ~127; + + // bytes per line + bpl = (w16 * Bpp + 7) / 8; + + if (AnyColor && (AllIsBlack || BlackClears)) + { + for (i = 0; i < h * bpl; ++i) + { + for (j = 0; j < 8; j += Bpp) + { + unsigned char mask = (Bpp == 2 ? 0x03 : 0x01) << j; + + if ((BlackClears && (plane[3][i] & mask) == mask) || + (AllIsBlack && + (plane[0][i] & plane[1][i] & plane[2][i] & mask) == mask)) + { + plane[0][i] &= ~mask; + plane[1][i] &= ~mask; + plane[2][i] &= ~mask; + plane[3][i] |= mask; + } + } + } + } + + + for (i = 0; i < 4; ++i) + { + if (CMYK_Offset[i]) + { + unsigned char *tmp = malloc(h * bpl); + if (!tmp) error(3, "Cannot allocate space for bitmap\n"); + debug(1, "malloc bitmaps[%d] = %x\n", i, tmp); + + if (CMYK_Offset[i] < 0) + { + memcpy(tmp, plane[i] - CMYK_Offset[i] * bpl, + (h + CMYK_Offset[i]) * bpl); + memset(tmp + (h + CMYK_Offset[i]) * bpl, 0, + -CMYK_Offset[i] * bpl); + } + else + { + memcpy(tmp + (CMYK_Offset[i] * bpl), plane[i], + (h - CMYK_Offset[i]) * bpl); + memset(tmp, 0, CMYK_Offset[i] * bpl); + } + + free(plane[i]); + plane[i] = tmp; + } + bitmaps[i] = plane[i]; + } + + if (Color2Mono) + write_bitmap_page(w, h, 1, &bitmaps[Color2Mono-1], ofp); + else if (AnyColor) + write_bitmap_page(w, h, 4, bitmaps, ofp); + else + write_bitmap_page(w, h, 1, &bitmaps[3], ofp); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + unsigned char *bitmaps[1]; + + if (SaveToner && Bpp == 1) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + bitmaps[0] = buf; + + write_bitmap_page(w, h, 1, bitmaps, ofp); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + if (Duplex == DMDUPLEX_MANUALLONG && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if ((PageNum & 1) == 0 && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int bpl16; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + bpl16 = (bpl + 15) & ~15; + plane[i] = malloc(bpl16 * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl16, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl16*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + mode = getc(in); + if (mode == 't' || (mode >= '2' && mode <='5') ) + { + ungetc(mode, in); + cups_pages(in, stdout); + } + else if (Mode == MODE_COLOR) + { + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int rc; + int i, j; + + while ( (c = getopt(argc, argv, + "b:cd:g:n:m:p:r:s:tu:l:L:ABO:PJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'b': Bpp = atoi(optarg); + if (Bpp != 1 && Bpp != 2) + error(1, "Illegal value '%s' for -b\n", optarg); + break; + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'O': + rc = sscanf(optarg, "%d,%d,%d,%d", + &CMYK_Offset[0], &CMYK_Offset[1], + &CMYK_Offset[2], &CMYK_Offset[3]); + if (rc != 4) + error(1, "Alignment error '%s' for -O c,m,y,k\n", + optarg); + break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + start_doc(stdout); + + switch (Duplex) + { + case DMDUPLEX_LONGEDGE: + case DMDUPLEX_SHORTEDGE: + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + // Handle odd page count + if ( (PageNum & 1) == 1) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + // Manual Pause + load_tray2(stdout); + + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + debug(1, "EvenPage: %d %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e); + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2hp2600-wrapper.1in b/foo2hp2600-wrapper.1in new file mode 100644 index 0000000..a71617d --- /dev/null +++ b/foo2hp2600-wrapper.1in @@ -0,0 +1,241 @@ +'\" t +.TH foo2hp2600-wrapper 1 "${MODpage}" "foo2hp2600-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2hp2600-wrapper \- Convert Postscript into a ZJS printer stream +.SH SYNOPSIS +.B foo2hp2600-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2hp2600-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2hp\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to Zenographics ZjStream printer format +for driving the Hewlett-Packard 2600n color laser printer +and other Zenographics-based printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-b\0 bits +Number of bits per plane. 1 or 2. [1]. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l +l n. +_ +Media HPLJ 2600n +_ +plain 1 +preprinted 514 +letterhead 513 +transparency 2 +prepunched 515 +labels 265 +bond 260 +recycled 516 +color 512 +tough 276 +envelope 267 +light 258 +heavy 262 +cardstock 261 +lightglossy 268 +glossy 269 +heavyglossy 270 +cover 277 +photo 278 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 9 A4 +5 legal 11 A5 +7 executive 13 B5jis +20 env #10 27 env DL +28 env C5 34 env B5 +37 env Monarch +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [7]. +.TS +| n l | n l. +1 tray 2 4 manual/tray 1 +2 tray 3 7 auto +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2hp\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the ZjStream. +\fBfoo2hp2600-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-O\0 parm=val +Alignment of CMYK. \fIparm\fP is c, m, y, or k. +\fIval\fP is in rows. Multiple options are allowed. +The default is "-Oc=0 -Om=0 -Oy=0 -Ok=0". +.TP +.BI \-P +Do not send START_PLANE codes on monochrome output. May be +needed by some monochrome-only printers, such as the +HP LaserJet 1000. +.TP +.BI \-X\0 padlen +Add extra zero padding to the end of BID segments. The default is +16 bytes. Padding 16 bytes of zeroes +is needed for older ZjStream printers, such as the Minolta 2200DL +and HP LaserJet 1000, and seems harmless to newer ones, such as +the Minolta 2300DL. So the default should be good for all cases. +.TP +.BI \-z\0 model +Model: Model: 0=HP CLJ 1600/2600n; 1=HP CLJ CP1215 +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. If \fIprofile.icm\fP is none.icm, then prepare for ordering a +ICM custom printer profile (i.e. from www.ICCFactory.com). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2hp\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome ZjStream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2hp2600-wrapper testpage.ps > testpage.zm +zjsdecode < testpage.zm +lpr -P raw testpage.zm +.fi +.RE +.P +Create a color ZjStream stream from a Postscript document: + +.RS +.nf +foo2hp2600-wrapper -c testpage.ps > testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2hp2600-wrapper +.SH SEE ALSO +.BR foo2hp (1), +.BR zjsdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLHP}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2hp2600-wrapper.in b/foo2hp2600-wrapper.in new file mode 100755 index 0000000..c63e183 --- /dev/null +++ b/foo2hp2600-wrapper.in @@ -0,0 +1,819 @@ +#!/bin/sh + +#* Copyright (C) 2005-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2hp2600-wrapper.in,v 1.77 2011/01/20 00:59:57 rick Exp $' + +# +# Printer Notes: +# +# HP Color LaserJet 1600: -z0 +# HP Color LaserJet 2600n: -z0 +# HP Color LaserJet CP1215: -z1 +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2hp +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=tray2, 2=tray3, 4=manual/tray1, 7=auto + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] +-z model Model: 0=HP CLJ 1600/2600n; 1=HP CLJ CP1215 [$MODEL] +-O parm=val Alignment of CMYK. "parm" is c,m,y, or k. "val" is in rows. + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# Portable version of 'which' +# +pathfind() { + if [ "$1" = -p ]; then + optp=1 + shift + else + optp=0 + fi + OLDIFS="$IFS" + IFS=: + for p in $PATH; do + if [ -x "$p/$*" ]; then + if [ $optp = 1 ]; then + echo "$p/$*" + fi + IFS="$OLDIFS" + return 0 + fi + done + IFS="$OLDIFS" + return 1 +} + +# +# Returns true if $1 is 32-bit binary +# +is32() { + if pathfind file; then + path=`pathfind -p "$*"` + is32=`file -L "$path" | grep 32-bit` + if [ "$is32" = "" ]; then + return 1 + else + return 0 + fi + else + return 1 + fi +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +BPP=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=1 +COPIES=1 +PAPER=1 +RES=600x600 +SOURCE=7 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE=default +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +NUP_ORIENT= +OFF_C=0 +OFF_M=0 +OFF_Y=0 +OFF_K=0 +GSDEV=-sDEVICE=pbmraw +SEGFAULT=0 +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) + DEFAULTCOLORMODE=10 + ;; +8.1*) + # Buggy 8.14/8.15 in Ubuntu + DEFAULTCOLORMODE=10 + if is32 $GSBIN; then + GAMMAFILE=km2430_2.icm + else + GAMMAFILE=hpclj2600n-0.icm + SEGFAULT=1 + fi + QUALITY=1 + ;; +*) + DEFAULTCOLORMODE=10 + ;; +esac + +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PO:X:Vh?-" opt +do + case $opt in + b) BPP="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + O) case "$OPTARG" in + c=*|C=*) OFF_C=`echo "$OPTARG" | sed "s/^..//"`;; + m=*|M=*) OFF_M=`echo "$OPTARG" | sed "s/^..//"`;; + y=*|Y=*) OFF_Y=`echo "$OPTARG" | sed "s/^..//"`;; + k=*|K=*) OFF_K=`echo "$OPTARG" | sed "s/^..//"`;; + *) error "Not [cmyk]=NUM!";; + esac + ;; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + -) + echo aaa + echo "$OPTARG"; + ;; + V) echo "$VERSION"; foo2hp -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + + +# +# Select the ghostscript device to use +# +case "$BPP" in +1) if [ "" = "$COLOR" ]; then + GSDEV=-sDEVICE=pbmraw + else + GSDEV=-sDEVICE=bitcmyk + fi + case "$GAMMAFILE" in + default) + case "$MODEL" in + 0) + if [ $SEGFAULT = 0 ]; then + GAMMAFILE=hpclj2600n-1.icm + else + GAMMAFILE=hpclj2600n-0.icm + fi + ;; + 1) + GAMMAFILE=hp1215-argyll-0.icm + ;; + esac + ;; + none) GAMMAFILE=;; + esac + ;; +2) if [ "" = "$COLOR" ]; + then + # GSDEV=-sDEVICE=pgmraw + # error "2-bpp monochrome is not yet supported" + GSDEV="-sDEVICE=cups -dcupsColorSpace=3 -dcupsBitsPerColor=2" + GSDEV="$GSDEV -dcupsColorOrder=2" + else + GSDEV="-sDEVICE=cups -dcupsColorSpace=6 -dcupsBitsPerColor=2" + GSDEV="$GSDEV -dcupsColorOrder=2" + fi + if [ $GSBIN = "gs.foo" ]; then + GSBIN=gs + fi + + case "$GAMMAFILE" in + default) + case "$MODEL" in + 0) + if is32 $GSBIN; then + GAMMAFILE=km2430_2.icm + GAMMAFILE=hpclj2600n-1.icm + else + GAMMAFILE= + fi + ;; + 1) + GAMMAFILE=hp1215-argyll-0.icm + ;; + esac + ;; + none) GAMMAFILE=;; + esac + ;; +*) error "Illegal number of bits per plane ($BPP)";; +esac + +# +# Validate model code +# +case "$MODEL" in +0|1) ;; +*) error "Unknown model code $MODEL";; +esac + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate media code +# +case "$MEDIA" in +1|plain) MEDIA=1;; +514|preprinted) MEDIA=514;; +513|letterhead) MEDIA=513;; +2|transparency) MEDIA=2;; +515|prepunched) MEDIA=515;; +265|labels) MEDIA=265;; +260|bond) MEDIA=260;; +516|recycled) MEDIA=516;; +512|color) MEDIA=512;; +276|tough) MEDIA=276;; +267|envelope) MEDIA=267;; +258|light) MEDIA=258;; +262|heavy) MEDIA=262;; +261|cardstock) MEDIA=261;; +268|lightglossy) MEDIA=268;; +269|glossy) MEDIA=269;; +270|heavyglossy) MEDIA=270;; +277|cover) MEDIA=277;; +278|photo) MEDIA=278;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|tray2) SOURCE=1;; +4|tray1) SOURCE=4;; +7|auto) SOURCE=7;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +2400x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=1; paper=letter; + set_clipping 2 80 2 80 + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=1; paper=letter; + set_clipping 2 80 2 80 + ;; +1|letter) PAPER=1; paper=letter; XDIM="10200"; YDIM="6600" + set_clipping 172 80 172 80 + ;; +5|legal) PAPER=5; paper=legal; XDIM="10200"; YDIM="8400" + set_clipping 172 80 172 80 + ;; +7|executive) PAPER=7; paper=executive; XDIM="8700"; YDIM="6300" + set_clipping 174 78 174 78 + ;; +9|a4|A4) PAPER=9; paper=a4; XDIM="9920"; YDIM="7016" + set_clipping 176 84 176 84 + ;; +11|a5|A5) PAPER=11; paper=a5; XDIM="6992"; YDIM="4960" + set_clipping 176 80 176 80 + ;; +13|b5|B5|b5jis) PAPER=13; paper=b5; XDIM="8598"; YDIM="6070" + set_clipping 172 83 171 83 + ;; +20|"env#10") PAPER=20; paper=env10; XDIM="4950"; YDIM="5700" + set_clipping 171 78 171 78 + ;; +27|envDL) PAPER=27; paper=envDL; XDIM="5200"; YDIM="5200" + set_clipping 176 84 176 84 + ;; +28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" + set_clipping 170 80 169 80 + ;; +34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" + set_clipping 174 74 174 74 + ;; +37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" + set_clipping 174 78 173 78 + ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac +fi + +CRDBASE="$PREFIX/share/foo2zjs/crd" +PSFILES="$PREFIX/share/foo2hp/psfiles" +case "$RES" in + 600x600) SCREEN=screen1200.ps;; + 1200x600) SCREEN=screen1200.ps;; + 2400x600) SCREEN=screen2400.ps;; +esac + +PSTOPS_OPTS="-n" + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + : #GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + : #GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +# CUPS also does grief by adding its own PS code to the input file. +# We take care of that with the sed command. Thus, Well Tempered +# Screening now works! +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null 2>&1) 3>&1 \ +| foo2hp -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + $COLOR -b$BPP $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ + -O$OFF_C,$OFF_M,$OFF_Y,$OFF_K -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2hp -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE $COLOR -b$BPP $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER -O$OFF_C,$OFF_M,$OFF_Y,$OFF_K $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE +fi + +exit 0 diff --git a/foo2lava-wrapper.1in b/foo2lava-wrapper.1in new file mode 100644 index 0000000..f02d899 --- /dev/null +++ b/foo2lava-wrapper.1in @@ -0,0 +1,235 @@ +'\" t +.TH foo2lava-wrapper 1 "${MODpage}" "foo2lava-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2lava-wrapper \- Convert Postscript into a LAVAFLOW or OPL printer stream +.SH SYNOPSIS +.B foo2lava-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2lava-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2lava\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to Zenographics LAVAFLOW printer format +for driving +the Konica Minolta magicolor 1600W color laser printer, +the Konica Minolta magicolor 1680MF/1690MF AIO printer, +the Konica Minolta magicolor 2480/2490 MF AIO printer, +the Konica Minolta magicolor 2530 DL network color laser printer, +and other Zenographics-based LAVAFLOW printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-C\0 colormode +Color correction mode [0]. +.TS +n l . +1 Photos (using m2300w CRDs) +2 Photos and text (using m2300w CRDs) +3 Graphics and text (using m2300w CRDs) +10 ICM color profile (using -G *.icm file) +.TE +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media 2530DL +_ +plain 0 +transparency 4 +thick stock 20 +envelope 22 +letterhead 23 +postcard 25 +labels 26 +recycled 27 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [2]. +.TS +box; +| n l | n l. +1 executive 25 A5 +2 letter 26 A4 +3 legal 45 B5jis +80 env Monarch 65 B5iso +81 env #10 90 env DL +91 env C5 92 env B5 +835 4x6" photo 837 10x15cm photo +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [255]. +.TS +| n l | n l. +1 Tray 1 255 auto +4 Tray 2 +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2lava\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the LAVAFLOW stream. +\fBfoo2lava-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-z\0 model +Model. The default is [0]. +.TS +l l l. +model protocol Description +0 LAVAFLOW magicolor 2490 MF +0 LAVAFLOW magicolor 2530 DL +1 OPL magicolor 2480 MF +2 LAVAFLOW magicolor 1600W +2 LAVAFLOW magicolor 1680MF +2 LAVAFLOW magicolor 1690MF +.TE +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. (WORK IN PROGRESS). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2lava\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome LAVAFLOW stream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2lava-wrapper testpage.ps > testpage.zm +lavadecode < testpage.zm +lpr -P raw testpage.zm +.fi +.RE +.P +Create a color LAVAFLOW stream from a Postscript document: + +.RS +.nf +foo2lava-wrapper -c testpage.ps > testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2lava-wrapper +.SH SEE ALSO +.BR foo2lava (1), +.BR lavadecode (1) +.BR opldecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2lava-wrapper.in b/foo2lava-wrapper.in new file mode 100755 index 0000000..3f0ba6a --- /dev/null +++ b/foo2lava-wrapper.in @@ -0,0 +1,760 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2lava-wrapper.in,v 1.48 2014/06/27 14:34:46 rick Exp $' + +# +# Printer Notes: +# +# LAVAFLOW: +# Konica Minolta magicolor 2530 DL - -z0 +# Konica Minolta magicolor 2490 MF - -z0 +# Xerox Phaser 6115MFP - -z0 +# Konica Minolta magicolor 1600W - -z2 +# Konica Minolta magicolor 1680MF - -z2 +# Konica Minolta magicolor 1690MF - -z2 +# Oki C110 - -z2 +# Xerox Phaser 6121MFP - -z2 +# +# OPL: +# Konica Minolta 2480 MF - -z1 +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2lava +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "foo2lava-wrapper $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=upper, 2=lower, 4=manual, 7=auto + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] +-z model Model: 0=2530DL or 2=1600W (LAVAFLOW) or 1=2480MF (OPL) [0] + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.14, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.05) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=0 +COPIES=1 +PAPER=2 +RES=1200x600 +SOURCE=255 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE=default +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +NUP_ORIENT= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + DEFAULTCOLORMODE=2 + DEFAULTCOLORMODE=10 + ;; +8.1*) + QUALITY=1 + DEFAULTCOLORMODE=10 + ;; +*) DEFAULTCOLORMODE=2 + DEFAULTCOLORMODE=10 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Vh?" opt +do + case $opt in + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2lava -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + + +# +# Select the ghostscript device to use +# +if [ "" = "$COLOR" ]; then + GSDEV=-sDEVICE=pbmraw +else + GSDEV=-sDEVICE=bitcmyk +fi +case "$GAMMAFILE" in +default) + if [ $MODEL = 0 ]; then + GAMMAFILE=km2530-jconner-d50.icm + else + GAMMAFILE=km-1600-rgb-392-bpp1.icm + fi + ;; +none) GAMMAFILE=;; +esac + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate model code +# +case "$MODEL" in +0|1|2) ;; +*) error "Unknown model code $MODEL";; +esac + +# +# Validate media code +# +case "$MEDIA" in +0|plain) MEDIA=0; if [ $MODEL = 1 ]; then MEDIA=plain; fi;; +4|transparency) MEDIA=4; if [ $MODEL = 1 ]; then MEDIA=transparency; fi;; +20|thickstock) MEDIA=20; if [ $MODEL = 1 ]; then MEDIA=cardstock; fi;; +22|envelope) MEDIA=22; if [ $MODEL = 1 ]; then MEDIA=envelope; fi;; +23|letterhead) MEDIA=23; if [ $MODEL = 1 ]; then MEDIA=stationery-letterhead; fi;; +25|postcard) MEDIA=25; if [ $MODEL = 1 ]; then MEDIA=photographic-matte; fi;; +26|labels) MEDIA=26; if [ $MODEL = 1 ]; then MEDIA=labels; fi;; +27|recycled) MEDIA=27; if [ $MODEL = 1 ]; then MEDIA=plain; fi;; +28|glossy) MEDIA=28; if [ $MODEL = 1 ]; then MEDIA=photographic-glossy; fi;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|tray1) SOURCE=1;; +4|tray2) SOURCE=4;; +255|auto) SOURCE=255;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +2400x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + xmm=`dc -e "$XDIM 25.4 * 36 + 72/p"` + XDIM=`dc -e "$XDIM 1200* 72/p"` + ymm=`dc -e "$YDIM 25.4 * 36 + 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=101; paper=letter; + MEDIA=20 + set_clipping 2 100 2 100 + if [ $MODEL = 1 ]; then PAPER=custom_size_${xmm}x${ymm}mm; fi + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + xmm=`dc -e "$XDIM 25.4 * 36 + 72/p"` + XDIM=`dc -e "$XDIM 1200* 72/p"` + ymm=`dc -e "$YDIM 25.4 * 36 + 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=101; paper=letter; + MEDIA=20 + set_clipping 2 100 2 100 + if [ $MODEL = 1 ]; then PAPER=custom_size_${xmm}x${ymm}mm; fi + ;; +1|executive) PAPER=1; paper=executive; XDIM="8700"; YDIM="6300" + set_clipping 206 110 206 110 + if [ $MODEL = 1 ]; then PAPER=na_executive_7.25x10.5in; fi + ;; +2|letter) PAPER=2; paper=letter; XDIM="10200"; YDIM="6600" + set_clipping 204 100 204 100 + if [ $MODEL = 1 ]; then PAPER=na_letter_8.5x11in; fi + ;; +3|legal) PAPER=3; paper=legal; XDIM="10200"; YDIM="8400" + set_clipping 204 104 204 104 + if [ $MODEL = 1 ]; then PAPER=na_legal_8.5x14in; fi + ;; +25|a5|A5) PAPER=25; paper=a5; XDIM="6992"; YDIM="4960" + set_clipping 216 112 216 112 + if [ $MODEL = 1 ]; then PAPER=iso_a5_148x210mm; fi + ;; +26|a4|A4) PAPER=26; paper=a4; XDIM="9920"; YDIM="7016" + set_clipping 208 100 208 100 + if [ $MODEL = 1 ]; then PAPER=iso_a4_210x297mm; fi + ;; +45|b5jis|B5jis) PAPER=45; paper=b5; XDIM="8598"; YDIM="6070" + set_clipping 204 107 202 107 + if [ $MODEL = 1 ]; then PAPER=jis_b5_182x257mm; fi + ;; +65|b5iso|B5iso) PAPER=65; paper=b5; XDIM="8314"; YDIM="5906" + set_clipping 206 105 204 105 + ;; +80|envMonarch) PAPER=80; paper=envMonarch;XDIM="4650"; YDIM="4500" + set_clipping 214 106 212 106 + if [ $MODEL = 1 ]; then PAPER=na_monarch_3.875x7.5in; fi + ;; +81|"env#10") PAPER=81; paper=env10; XDIM="4950"; YDIM="5700" + set_clipping 204 114 202 114 + if [ $MODEL = 1 ]; then PAPER=na_number-10_4.125x9.5in; fi + ;; +90|envDL) PAPER=90; paper=envDL; XDIM="5200"; YDIM="5200" + set_clipping 216 104 216 104 + if [ $MODEL = 1 ]; then PAPER=iso_dl_110x220mm; fi + ;; +91|envC5) PAPER=91; paper=envC5; XDIM="7650"; YDIM="5408" + set_clipping 210 112 208 112 + if [ $MODEL = 1 ]; then PAPER=iso_c5_162x229mm; fi + ;; +92|envC6) PAPER=92; paper=envC6; XDIM="5386"; YDIM="3826" + set_clipping 214 105 212 105 + if [ $MODEL = 1 ]; then PAPER=iso_c6_114x162mm; fi + ;; +835|photo4x6) PAPER=835; paper=photo4x6; XDIM="4800"; YDIM="3600" + set_clipping 224 104 224 104 + ;; +837|photo10x15) PAPER=837; paper=photo10x15; XDIM="4818"; YDIM="3590" + # Actually, 102x152 + set_clipping 201 115 201 115 + ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac +fi + +CRDBASE="$PREFIX/share/foo2zjs/crd" +case "$RES" in + 600x600) SCREEN=screen1200.ps;; + 1200x600) SCREEN=screen1200.ps;; + 2400x600) SCREEN=screen2400.ps;; +esac + +PSTOPS_OPTS="-n" + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac + ;; +1|photo) + # Photo + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr125,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +2|graphics) + # Photo and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kh.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +3|text) + # Graphic and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,50-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kx.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +4|tonersave) + # Reduced toner + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,0-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + : #GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + : #GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2lava -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2lava -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE +fi + +exit 0 diff --git a/foo2lava.1in b/foo2lava.1in new file mode 100644 index 0000000..2328ae5 --- /dev/null +++ b/foo2lava.1in @@ -0,0 +1,193 @@ +'\" t +.TH foo2lava 1 "${MODpage}" "foo2lava ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2lava \- Convert Ghostscript pbmraw or bitcmyk format into a +LAVAFLOW or a OPL printer stream +.SH SYNOPSIS +.B foo2lava +.RI [ options "] <" pbmraw-file " >" lava-file +.sp 1 +.B foo2lava +.RI [ options "] <" bitcmyk-file " >" lava-file +.sp 1 +.B foo2lava +.RI [ options "] <" pksmraw-file " >" lava-file +.SH DESCRIPTION +.B foo2lava +converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome +or color LAVAFLOW or OPL streams, +for driving the Konica Minolta magicolor 2530 DL network color laser printer, +the Konica Minolta magicolor 2480/2480 MF AIO printer, +and other Zenographics-based LAVAFLOW printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media 2530DL +_ +plain 0 +transparency 4 +thick stock 20 +envelope 22 +letterhead 23 +postcard 25 +labels 26 +recycled 27 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [2]. +.TS +box; +| n l | n l. +1 executive 25 A5 +2 letter 26 A4 +3 legal 45 B5jis +80 env Monarch 65 B5iso +81 env #10 90 env DL +91 env C5 92 env C6 +835 4x6" photo 837 10x15cm photo +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [255]. +.TS +| n l | n l. +1 Tray 1 255 auto +4 Tray 2 +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2lava\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the LAVAFLOW stream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.BI \-z\0 model +Model. The default is [0]. +.TS +l l l. +model protocol Description +0 LAVAFLOW magicolor 2490 MF +0 LAVAFLOW magicolor 2530 DL +1 OPL magicolor 2480 MF +2 LAVAFLOW magicolor 1600W +2 LAVAFLOW magicolor 1680MF +2 LAVAFLOW magicolor 1690MF +.TE +.SS Debugging Options +These options are used for debugging \fBfoo2lava\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white LAVAFLOW stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zm +.fi +.RE +.P +Create a color LAVAFLOW stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2lava +.SH SEE ALSO +.BR foo2lava-wrapper (1), +.BR lavadecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2lava.c b/foo2lava.c new file mode 100644 index 0000000..dbaef38 --- /dev/null +++ b/foo2lava.c @@ -0,0 +1,1703 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics LAVAFLOW format. + +With this utility, you can print to some HP and Minolta/QMS printers, +such as these: + Model 0: + - Konica Minolta magicolor 2490 MF B/W and color + - Konica Minolta magicolor 2530 DL B/W and color + - Xerox Phaser 6115MFP B/W and color + + Model 1: + - Konica Minolta magicolor 2480 MF B/W and color + NOTE: Copies is unimplented! + + Model 2: + - Konica Minolta magicolor 1600W B/W and color + - Konica Minolta magicolor 1680MF B/W and color + - Konica Minolta magicolor 1690MF B/W and color + - Konica Minolta magicolor 4690MF B/W and color + - Oki C110 B/W and color + - Xerox Phaser 6121MFP B/W and color + +AUTHORS +It also uses Markus Kuhn's jbig-kit compression library (included, but +also available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2lava.c,v 1.40 2014/06/27 14:34:46 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#ifdef linux + #include +#endif +#include "jbig.h" + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +/* + * Command line options + */ +int Debug = 0; +int ResX = 1200; +int ResY = 600; +int Bpp = 1; +int PaperCode = 1; +char *PaperStr = "na_letter_8.5x11in"; +int PageWidth = 1200 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = 1; +int SourceCode = 255; +int MediaCode = 0; +char *MediaStr = "plain"; +char *Username = NULL; +char *Filename = NULL; +int Mode = 0; + #define MODE_MONO 1 + #define MODE_COLOR 2 +int Model = 0; + #define MODEL_2530DL 0 + #define MODEL_2480MF 1 + #define MODEL_1600W 2 + #define MODEL_LAST 2 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 16; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; +int RealWidth; +int EconoMode = 0; +int BihW; +int BihH; +int Dots[4]; +int TotalDots; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; +off_t SeekMedia; + +long JbgOptions[5] = +{ + /* Order */ + JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPDON | JBG_TPBON | JBG_DPON, + /* L0 */ + 128, + /* MX */ + 0, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2lava [options] lava-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome LAVAFLOW stream,\n" +" for driving the Konica Minolta magicolor 2530 DL network color laser\n" +" printer and other LAVAFLOW-based black and white printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zm\n" +"\n" +" foo2lava [options] lava-file\n" +" foo2lava [options] lava-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color LAVAFLOW\n" +" stream, for driving the Konica Minolta magicolor 2530 DL network\n" +" color laser printer.\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +" 4=manual longedge, 5=manual shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 1=standard 4=transparency 20=thick stock 22=envelope\n" +" 23=letterhead 25=postcard 26=labels 27=recycled\n" +" 28=glossy\n" +"-p paper Paper code to send to printer [%d]\n" +" 1=executive 2=letter 3=legal 25=A5 26=A4 45=B5jis\n" +" 65=B5iso 80=envMonarch 81=env#10 90=envDL 91=envC5\n" +" 92=envC6 835=4x6\" 837=10x15cm\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=tray 1 (multipurpose) 4=tray 2 255=auto\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +"-z model Model: 0=2530DL, 2=1600W (LAVAFLOW), 1=2480MF (OPL) [%d]\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , ExtraPad + , Model + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +int BlackOnes[256] = +{ + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ +unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +int +write_plane(int planeNum, BIE_CHAIN **root, FILE *fp) +{ + BIE_CHAIN *current = *root; + BIE_CHAIN *next; + int len; + + debug(3, "Write Plane %d\n", planeNum); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + if (Model == MODEL_2480MF) + { + int w, h, x = 0; + + switch (planeNum) + { + case 1: x = 0x00FFFF; break; + case 2: x = 0xFF00FF; break; + case 3: x = 0xFFFF00; break; + } + fprintf(fp, "RasterObject.Planes=%06X,0,0,0,0,0,0;", x); + + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + fprintf(fp, "RasterObject.Width=%d;", w); + fprintf(fp, "RasterObject.Height=%d;", h); + } + + for (current = *root; current && current->len; current = current->next) + { + if (current == *root) + { + switch (Model) + { + case MODEL_1600W: + case MODEL_2530DL: + fprintf(fp, "\033*b20V"); + fwrite(current->data, 1, current->len, fp); + break; + case MODEL_2480MF: + fprintf(fp, "RasterObject.Data#%d=", (int) current->len); + fwrite(current->data, 1, current->len, fp); + fprintf(fp, ";"); + break; + } + } + else + { + int i; + int pad; + #define PAD 32 + + len = current->len; + next = current->next; + if (!next || !next->len) + pad = PAD * ((len+PAD-1)/PAD) - len; + else + pad = 0; + switch (Model) + { + case MODEL_1600W: + case MODEL_2530DL: + fprintf(fp, "\033*b%d%s", len + pad, next ? "V" : "W"); + fwrite(current->data, 1, len, fp); + for (i = 0; i < pad; i++) + putc(0, fp); + break; + case MODEL_2480MF: + fprintf(fp, "RasterObject.Data#%d=", len + pad); + fwrite(current->data, 1, len, fp); + for (i = 0; i < pad; i++) + putc(0, fp); + fprintf(fp, ";"); + break; + } + } + } + + free_chain(*root); + + if (Model == MODEL_2530DL || Model == MODEL_1600W) + { + switch (planeNum) + { + case 0: case 4: + fprintf(fp, "\033*x%dK", Dots[3]); + fprintf(fp, "\033*x%dW", TotalDots - Dots[3]); + break; + case 1: + fprintf(fp, "\033*x%dC", Dots[0]); + fprintf(fp, "\033*x%dZ", TotalDots - Dots[0]); + break; + case 2: + fprintf(fp, "\033*x%dM", Dots[1]); + fprintf(fp, "\033*x%dV", TotalDots - Dots[1]); + break; + case 3: + fprintf(fp, "\033*x%dY", Dots[2]); + fprintf(fp, "\033*x%dU", TotalDots - Dots[2]); + break; + } + } + + return 0; +} + +void +start_page(BIE_CHAIN **root, int nbie, FILE *ofp) +{ + BIE_CHAIN *current = *root; + unsigned long w, h; + int i, np; + static int pageno = 0; + + /* error handling */ + if (!current) + error(1, "There is no JBIG!\n"); + if (!current->next) + error(1, "There is no or wrong JBIG header!\n"); + if (current->len != 20 ) + error(1,"wrong BIH length\n"); + + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + TotalDots = w*h; + + switch (Model) + { + case MODEL_1600W: + case MODEL_2530DL: + fprintf(ofp, "\033&l%dO", 0); + fprintf(ofp, "\033*r%dU", + (Mode == MODE_COLOR && nbie == 4) ? -1004 : 1); + fprintf(ofp, "\033*g%dW", + (Mode == MODE_COLOR && nbie == 4) ? 26 : 8); + putc(2, ofp); + putc(nbie, ofp); + np = (Mode == MODE_COLOR && nbie == 4) ? 4 : 1; + for (i = 0; i < np; ++i) + { + putc(ResX>>8, ofp); + putc(ResX, ofp); + putc(ResY>>8, ofp); + putc(ResY, ofp); + putc(0, ofp); + //putc(Mode == MODE_COLOR ? 2 : 0, ofp); // Number of bpc + putc(2, ofp); + } + fprintf(ofp, "\033*b%dM", 1234); + fprintf(ofp, "\033&l%dA", PaperCode); + if (PaperCode == 101) + { + fprintf(ofp, "\033&f%dG", PageHeight * 720 / ResY); // Custom Y + fprintf(ofp, "\033&f%dF", PageWidth * 720 / ResX); // Custom X + } + fprintf(ofp, "\033&l%dH", SourceCode); + fprintf(ofp, "\033&l%dM", MediaCode); + fprintf(ofp, "\033&l%dE", 0); + fprintf(ofp, "\033*r%dS", (int) w); + fprintf(ofp, "\033*r%dT", (int) h); + fprintf(ofp, "\033&l%dU", 0); + fprintf(ofp, "\033&l%dZ", 0); + fprintf(ofp, "\033*p%dX", ResX / 6); + fprintf(ofp, "\033*p%dY", ResX / 6); + + fprintf(ofp, "\033*r1A"); + break; + case MODEL_2480MF: + fprintf(ofp, "MediaSize=%s;", PaperStr); + fprintf(ofp, "MediaType=%s;", MediaStr); + fprintf(ofp, "MediaInputTrayCheck=top;"); + fprintf(ofp, "RasterObject.BitsPerPixel=1;"); + break; + } + + if ((PageNum & 1) == 0 && EvenPages) + SeekMedia = ftell(EvenPages) - 4; + + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(FILE *ofp) +{ + switch (Model) + { + case MODEL_1600W: + case MODEL_2530DL: + fprintf(ofp, "\033*rC"); + if (0) + fprintf(ofp, "\f"); // Eject page + else + fprintf(ofp, "\033&l0H"); // Eject page + break; + case MODEL_2480MF: + fprintf(ofp, "Event=EndOfPage;"); + break; + } +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + + start_page(root, nbie, ofp); + + switch (Model) + { + case MODEL_1600W: + case MODEL_2530DL: + if (root3) write_plane(3, root3, ofp); + if (root2) write_plane(2, root2, ofp); + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root4) write_plane(4, root4, ofp); + break; + case MODEL_2480MF: + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root2) write_plane(2, root2, ofp); + if (root3) write_plane(3, root3, ofp); + if (root4) write_plane(4, root4, ofp); + break; + } + + end_page(ofp); + return 0; +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 65536; // Printer does strange things otherwise. + + if (Model == MODEL_2480MF) + size = 32768; + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +void +start_doc(FILE *fp) +{ + char buf[64]; + time_t now; + struct tm *tmp; + + switch (Model) + { + case MODEL_1600W: + case MODEL_2530DL: + now = time(NULL); + tmp = localtime(&now); + strftime(buf, sizeof(buf), "%m/%d/%Y", tmp); + + fprintf(fp, "\033%%-12345X@PJL JOB NAME=\"%s\"\n", + Filename ? Filename : "stdin"); + fprintf(fp, "\033%%-12345X@PJL JOB USERNAME=\"%s\"\n", + Username ? Username : ""); + fprintf(fp, "\033%%-12345X@PJL JOB TIMESTAMP=\"%s\"\n", buf); + #ifdef linux + { + struct utsname u; + + u.release[0] = 0; + uname(&u); + + fprintf(fp, "\033%%-12345X@PJL JOB OSINFO=\"Linux/%s\"\n", + u.release); + } + #else + fprintf(fp, "\033%%-12345X@PJL JOB OSINFO=\"%s\"\n", "Unknown"); + #endif + fprintf(fp, "\033%%-12345X@PJL ENTER LANGUAGE=LAVAFLOW\n"); + fprintf(fp, "\033E"); + fprintf(fp, "\033&l%dS", Duplex-1); + fprintf(fp, "\033&l%dG", 0); + fprintf(fp, "\033&u%dD", ResX); + fprintf(fp, "\033&l%dX", Copies); + fprintf(fp, "\033&x%dX", 1); + break; + case MODEL_2480MF: + fprintf(fp, "Event=StartOfJob;"); + fprintf(fp, "OSVersion=Linux;"); + fprintf(fp, "DrvVersion=2.0.1410.0;"); + fprintf(fp, "Resolution=%dx%d;", ResX, ResY); + fprintf(fp, "RasterObject.Compression=JBIG;"); + fprintf(fp, "Sides=%sSided;", (Duplex-1) ? "Two" : "One"); + break; + } +} + +void +end_doc(FILE *fp) +{ + switch (Model) + { + case MODEL_1600W: + case MODEL_2530DL: + fprintf(fp, "\033E"); + fprintf(fp, "\033%%-12345X"); + break; + case MODEL_2480MF: + fprintf(fp, "Event=EndOfJob;"); + break; + } +} + +void +load_tray2(FILE *fp) +{ + //int nitems; + + //nitems = 0; + //chunk_write(ZJT_2600N_PAUSE, nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); +} + +int +compute_image_dots(int w, int h, unsigned char *bitmap) +{ + int dots = 0; + int x, y, bpl; + + bpl = (w + 7) / 8; + for (y = 0; y < h; ++y) + for (x = 0; x < bpl; ++x) + dots += BlackOnes[ bitmap[y*bpl + x] ]; + return dots; +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl = (w + 7) / 8; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, w, h); + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + Dots[i] = compute_image_dots(w, h, plane[i]); + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + Dots[i] = compute_image_dots(w, h, plane[i]); + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + struct jbg_enc_state se; + int x, y; + int bpl, bpl16; + + RealWidth = w; + //if (Model == MODEL_HP1020) + //w = (w + 127) & ~127; + + Dots[3] = 0; + bpl = (w + 7) / 8; + //if (Model == MODEL_2300DL) + bpl16 = bpl; + //else + //bpl16 = (bpl + 15) & ~15; + + if (SaveToner) + { + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + Dots[3] = compute_image_dots(w, h, buf); + + *bitmaps = buf; + + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if ((PageNum & 1) == 0 && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + plane[i] = malloc(bpl * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int i, j; + + while ( (c = getopt(argc, argv, + "cd:g:n:m:p:r:s:tu:l:z:L:ABPJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': if (isalpha(optarg[0])) + MediaStr = optarg; + else + MediaCode = atoi(optarg); + break; + case 'n': Copies = atoi(optarg); break; + case 'p': if (strstr(optarg,"in") || strstr(optarg, "mm")) + PaperStr = optarg; + else + PaperCode = atoi(optarg); + break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'z': Model = atoi(optarg); + if (Model < 0 || Model > MODEL_LAST) + error(1, "Illegal value '%s' for -z\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + if (0)//Model == MODEL_HP1020) + { + Bpp = ResX / 600; + ResX = 600; + if (SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + } + + switch (Duplex) + { + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + int media; + int rc; + + // Handle odd page count + if ( (PageNum & 1) == 1) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + /* + * Manual Pause + */ + if (0)//Model == MODEL_HP1020) + load_tray2(stdout); + + fseek(EvenPages, SeekMedia, 0L); + //media = be32(DMMEDIA_LETTERHEAD); + rc = fwrite(&media, 1, sizeof(4), EvenPages); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); + + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + debug(1, "EvenPage: %d %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e); + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2oak-wrapper.1in b/foo2oak-wrapper.1in new file mode 100644 index 0000000..435dae3 --- /dev/null +++ b/foo2oak-wrapper.1in @@ -0,0 +1,227 @@ +'\" t +.TH foo2oak-wrapper 1 "${MODpage}" "foo2oak-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2oak-wrapper \- Convert Postscript into an OAKT printer stream +.SH SYNOPSIS +.B foo2oak-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2oak-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2oak\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to Oak Technology OAKT printer format +for driving the HP Color LaserJet 1500 laser printer, +Kyocera KM-1636/KM-2035 copiers, +and other OAKT-based printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-b\0 bits +Number of bits per plane (1 or 2) [1]. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l l +l n n. +_ +Media HP CLJ 1500 KM-1635 + -z0 -z1 +_ +autoselect 0 0 +plain 1 1 +preprinted 2 2 +letterhead 3 3 +transparency 4 4 +prepunched 5 5 +labels 6 6 +bond 7 7 +recycled 8 8 +color 9 9 +cardstock 10 10 +envelope 11 11 +light 13 na +tough 14 na +vellum na 15 +rough na 16 +thick na 19 +highqual na 20 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 3 ledger +5 legal 6 statement +7 executive 8 A3 +9 A4 11 A5 +12 B4 13 B5jis +14 folio 19 env9 +20 env10 27 envDL +28 envC5 30 envC4 +37 envMonarch 257 A6 +258 B6 259 B5iso +260 env6 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [600x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [7]. +.TS +| n l | n l. +1 tray1 2 tray2 +4 manual 7 auto +.TE +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2oak\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the OAKT stream. +\fBfoo2oak-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-z\0 model +Model is 0 for the HP Color LaserJet 1500, +and 1 for the Kyocera KM-1635/KM-2035 copiers. The default is 0. +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. (WORK IN PROGRESS). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2oak\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome OAKT stream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2oak-wrapper testpage.ps > testpage.oak +oakdecode < testpage.oak +lpr -P raw testpage.oak +.fi +.RE +.P +Create a color OAKT stream from a Postscript document: + +.RS +.nf +foo2oak-wrapper -c testpage.ps > testpage.oak +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2oak-wrapper +.SH SEE ALSO +.BR foo2oak (1), +.BR oak (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLOAK}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2oak-wrapper.in b/foo2oak-wrapper.in new file mode 100755 index 0000000..033eade --- /dev/null +++ b/foo2oak-wrapper.in @@ -0,0 +1,732 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2oak-wrapper.in,v 1.60 2011/08/07 16:49:30 rick Exp $' + +# +# Printer Notes: +# +# HP Color LaserJet 1500: -z0 (mirror bytes) +# +# Kyocera Mita KM-1635: -z1 (rotate 90) +# Kyocera Mita KM-2035: -z1 (rotate 90) +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2oak +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=tray1, 2=tray2, 4=manual, 7=auto + Code numbers may vary with printer model. +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-z model Model: 0=HP CLJ 1500, 1=KM-1635/KM-2035 [$MODEL] + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +BPP=1 +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=1 +COPIES=1 +PAPER=1 +RES=600x600 +SOURCE=7 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +COLOR2MONO= +GAMMAFILE=default +INTENT=0 +GSOPTS= +NUP_ORIENT= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + ;; +8.1*) + DEFAULTCOLORMODE=10 + QUALITY=1 + ;; +*) DEFAULTCOLORMODE=10 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:z:ABS:D:G:I:Vh?" opt +do + case $opt in + b) BPP=$OPTARG;; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2oak -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +# Select the ghostscript device to use +# +case "$BPP" in +1) if [ "" = "$COLOR" ]; then + GSDEV=-sDEVICE=pbmraw + else + GSDEV=-sDEVICE=bitcmyk + fi + ;; +2) if [ "" = "$COLOR" ]; + then + GSDEV=-sDEVICE=pgmraw + else + GSDEV="-sDEVICE=cups -dcupsColorSpace=6 -dcupsBitsPerColor=2" + fi + ;; +*) error "Illegal number of bits per plane ($BPP)";; +esac + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate model code +# +case "$MODEL" in +0) MIRROR=1; ROTATE90=0;; +1) MIRROR=0; ROTATE90=1;; +*) error "Unknown model code $MODEL";; +esac + +# +# Validate media code +# +case "$MEDIA" in +0|auto) MEDIA=0;; +1|plain) MEDIA=1;; +2|preprinted) MEDIA=2;; +3|letterhead) MEDIA=3;; +4|transparency) MEDIA=4;; +5|prepunched) MEDIA=5;; +6|labels) MEDIA=6;; +7|bond) MEDIA=7;; +8|recylcled) MEDIA=8;; +9|color) MEDIA=9;; +10|cardstock) MEDIA=10;; +11|heavy) MEDIA=11;; +12|envelope) MEDIA=12;; +13|light) MEDIA=13;; +14|tough) MEDIA=14;; + +15|vellum) MEDIA=15;; +16|rough) MEDIA=16;; +19|thick) MEDIA=19;; +20|highqual) MEDIA=20;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|tray1) SOURCE=1;; +2|tray2) SOURCE=2;; +4|manual|mp) SOURCE=4;; +7|auto) SOURCE=7;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +2400x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=296; paper=letter; + set_clipping 2 100 2 100 + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=296; paper=letter; + set_clipping 2 100 2 100 + ;; +1|letter) PAPER=1; paper=letter; XDIM="10200"; YDIM="6600" + set_clipping 140 100 140 100 + ;; +3|ledger) PAPER=3; paper=ledger; XDIM="20400"; YDIM="6600" + set_clipping 140 100 140 100 + ;; +5|legal) PAPER=5; paper=legal; XDIM="10200"; YDIM="8400" + set_clipping 140 100 140 100 + ;; +6|statement) PAPER=6; paper=statement; XDIM="6600"; YDIM="5100" + set_clipping 140 100 140 100 + ;; +7|executive) PAPER=7; paper=executive; XDIM="8700"; YDIM="6300" + set_clipping 140 100 140 100 + ;; +8|a3|A3) PAPER=8; paper=a3; XDIM="19842"; YDIM="7014" + set_clipping 160 100 160 100 + ;; +9|a4|A4) PAPER=9; paper=a4; XDIM="9920"; YDIM="7014" + set_clipping 160 100 160 100 + ;; +11|a5|A5) PAPER=11; paper=a5; XDIM="6992"; YDIM="4960" + set_clipping 140 100 140 100 + ;; +12|b4|B4) PAPER=12; paper=b4; XDIM="12142"; YDIM="8598" + set_clipping 140 100 140 100 + ;; +13|b5jis|B5jis) PAPER=13; paper=b5; XDIM="8598"; YDIM="6070" + set_clipping 140 100 140 100 + ;; +14|folio|Folio) PAPER=14; paper=folio; XDIM="9922"; YDIM="7796" + set_clipping 140 100 140 100 + ;; +19|env9|"env#9") + PAPER=19; paper=env9; XDIM="4650"; YDIM="5362" + set_clipping 140 100 140 100 + ;; +20|env10|"env#10") + PAPER=20; paper=env10; XDIM="4950"; YDIM="5700" + set_clipping 140 100 140 100 + ;; +27|envDL) PAPER=27; paper=envDL; XDIM="5200"; YDIM="5200" + set_clipping 140 100 140 100 + ;; +28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" + set_clipping 140 100 140 100 + ;; +30|envC4) PAPER=30; paper=envC4; XDIM="10818"; YDIM="7654" + set_clipping 140 100 140 100 + ;; +#34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" +# set_clipping 140 100 140 100 +# ;; +37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" + set_clipping 140 100 140 100 + ;; +257|a6|A6) PAPER=257; paper=a6; XDIM="4961"; YDIM="3496" + set_clipping 140 100 140 100 + ;; +258|b6|B6) PAPER=258; paper=b6; XDIM="6048"; YDIM="4300" + set_clipping 140 100 140 100 + ;; +259|b5iso|B5iso) + PAPER=259; paper=b5iso; XDIM="8516"; YDIM="5906" + set_clipping 140 100 140 100 + ;; +260|env6|"env#6") + PAPER=260; paper=env6; XDIM="4356"; YDIM="3900" + set_clipping 140 100 140 100 + ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +if [ $ROTATE90 = 1 ]; then + tmp=$XDIM + XDIM=$YDIM + YDIM=$tmp + case "$RES" in + 600x600) YDIMpoints=`dc -e "6k $YDIM 600 / 72 *p"`;; + 1200x600) YDIMpoints=`dc -e "6k $YDIM 1200 / 72 *p"`;; + 2400x600) YDIMpoints=`dc -e "6k $YDIM 2400 / 72 *p"`;; + esac +fi +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none | none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac + case "$GAMMAFILE" in + default) GAMMAFILE=hpclj2500rgb.icm;; + esac +fi + +PSTOPS_OPTS="-n" +if [ $ROTATE90 = 1 ]; then + case $paper in + a3) ;; + ledger) ;; + *) PSTOPS_OPTS="$PSTOPS_OPTS -h $YDIMpoints -r";; + esac +fi + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none | none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null 2>/dev/null) 3>&1 \ +| foo2oak -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + -z$MODEL -M$MIRROR $COLOR -b$BPP $CLIP_UL $CLIP_LR $CLIP_LOG \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2oak -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL -M$MIRROR $COLOR -b$BPP \ +$CLIP_UL $CLIP_LR $CLIP_LOG \ +$BC $AIB $COLOR2MONO" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE +fi + +exit 0 diff --git a/foo2oak.1in b/foo2oak.1in new file mode 100644 index 0000000..1a1c863 --- /dev/null +++ b/foo2oak.1in @@ -0,0 +1,200 @@ +'\" t +.TH foo2oak 1 "${MODpage}" "foo2oak ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2oak \- Convert Ghostscript pbmraw, pgmraw or bitcmyk format into an +OAKT printer stream +.SH SYNOPSIS +.B foo2oak +.RI [ options "] <" pbmraw-file " >" OAKT-file +.sp 1 +.B foo2oak +.RI [ options "] <" pgmraw-file " >" OAKT-file +.sp 1 +.B foo2oak +.RI [ options "] <" bitcmyk-file " >" OAKT-file +.SH DESCRIPTION +.B foo2oak +converts Ghostscript pbmraw or bitcmyk output formats to monochrome +or color OAKT streams, +for driving the HP Color LaserJet 1500 laser printer, +Kyocera KM-1636/KM-2035 copiers, +and other OAKT-based printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l +l n. +_ +Media Code +_ +autoselect 0 +plain 1 +preprinted 2 +letterhead 3 +transparency 4 +prepunched 5 +labels 6 +bond 7 +recycled 8 +color 9 +cardstock 10 +envelope 11 +light 13 +tough 14 +vellum 15 +rough 16 +thick 19 +highqual 20 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 3 ledger +5 legal 6 statement +7 executive 8 A3 +9 A4 11 A5 +12 B4 13 B5jis +14 folio 19 env9 +20 env10 27 envDL +28 envC5 30 envC4 +37 envMonarch 257 A6 +258 B6 259 B5iso +260 env6 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [600x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [7]. +.TS +| n l | n l. +1 tray1 2 tray2 +4 manual 7 auto +.TE +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2oak\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the OAKT stream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.BI \-M\0 mirror +Mirror bytes. Mirror is 0 for Kyocera KM-1635/KM-2035 and 1 for the +HP Color LaserJet 1500. The default is 1. +.TP +.BI \-z\0 model +Model is 0 for the HP Color LaserJet 1500, +and 1 for the Kyocera KM-1635/KM-2035 copiers. +The default is 0. +.SS Debugging Options +These options are used for debugging \fBfoo2oak\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white OAKT stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak +.fi +.RE +.P +Create a color OAKT stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2oak +.SH SEE ALSO +.BR foo2oak-wrapper (1), +.BR oakdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLOAK}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2oak.c b/foo2oak.c new file mode 100644 index 0000000..0a40d1e --- /dev/null +++ b/foo2oak.c @@ -0,0 +1,2011 @@ +/* + +GENERAL +This program converts pbm (B/W) images, 2-bit pgm (grayscale), and +1-bit- or 2-bit-per-pixel cmyk images (all produced by ghostscript) +to Oak Technolgies JBIG format. + +With this utility, you can print to some HP printers, such as these: + - HP LaserJet 1500 + - Kyocera Mita KM-1635: -z1 (rotate 90) + - Kyocera Mita KM-2035: -z1 (rotate 90) + +BUGS AND DEFICIENCIES + - Needs to do color correction + - Needs to support a better input color file format which includes + explicit page boundary indications. + +EXAMPLES + +AUTHORS +Rick Richardson. It also uses Markus Kuhn's jbig-kit compression +library (included, but also available at +http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + + +# ./usb_printerid /dev/usb/lp0 +GET_DEVICE_ID string: +MFG:Hewlett-Packard;CMD:OAKRAS,DW-PCL;MDL:hp color LaserJet +1500;CLS:PRINTER;DES:Hewlett-Packard color LaserJet +1500;MEM:16MB;1284.4DL:4d,4e,1;MSZ:10000000;FDT:0;CAL:00020811213C568F02060C1825446BA800030914203F5B9901040C151E3E60AD; +Status: 0x18 + +*/ + +/* + * TODO: Handle 2 bit mono and color output + */ + +static char Version[] = "$Id: foo2oak.c,v 1.69 2011/11/08 20:25:27 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include "jbig.h" +#include "oak.h" + +/* + * Command line options + */ +int Debug = 0; +int ZeroTime = 0; +int ResX = 600; +int ResY = 600; +int Bpp = 1; +int PaperCode = OAK_PAPER_LETTER; +int PageWidth = 600 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = 1; + #define DUPLEX_NONE 1 + #define DUPLEX_LONG_EDGE 2 + #define DUPLEX_SHORT_EDGE 3 + +int SourceCode = OAK_SOURCE_AUTO; +int MediaCode = OAK_MEDIA_AUTO; +char *Username = NULL; +char *Filename = NULL; +int Mode = 0; + #define MODE_MONO 1 + #define MODE_COLOR 2 +int Model = 0; + #define MODEL_HP1500 0 + #define MODEL_KM1635 1 + #define MODEL_LAST 1 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; + +int IsCUPS = 0; +int Mirror = 1; + +/* + * I now believe this is a YMCK printer as far as plane output ordering goes. + */ +#define PL_C 2 +#define PL_M 1 +#define PL_Y 0 +#define PL_K 3 + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2oak [options] OAKT-file\n" +"\n" +" Convert Ghostscript pbm format to a 1-bpp monochrome OAKT stream,\n" +" for driving the HP LaserJet 1500 color laser printer\n" +" and other OAKT-based black and white printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak\n" +"\n" +" foo2oak [options] OAKT-file\n" +"\n" +" Convert Ghostscript pgm format to a 2-bpp monochrome OAKT stream,\n" +" for driving the HP LaserJet 1500 color laser printer\n" +" and other OAKT-based black and white printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r600x600 -sDEVICE=pgmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak\n" +"\n" +" foo2oak [options] OAKT-file\n" +"\n" +" Convert Ghostscript bitcmyk format to a 1-bpp color OAKT stream,\n" +" for driving the HP LaserJet 1500 color laser printer.\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak\n" +"\n" +"Normal Options:\n" +"-b bits Bits per plane if autodetect doesn't work (1 or 2) [%d]\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 0=auto 1=plain 2=preprinted 3=letterhead 4=transparency\n" +" 5=prepunched 6=labels 7=bond 8=recycled 9=color\n" +" 10=cardstock 11=heavy 12=envelope 13=light 14=tough\n" +" 15=vellum 16=rough 19=thick 20=highqual\n" +"-p paper Paper code to send to printer [%d]\n" +" 1=letter, 3=ledger, 5=legal, 6=statement, 7=executive,\n" +" 8=A3, 9=A4, 11=A5, 12=B4, 13=B5jis, 14=folio, 19=env9,\n" +" 20=env10, 27=envDL, 28=envC5, 30=envC4, 37=envMonarch,\n" +" 257=A6, 258=B6, 259=B5iso, 260=env6\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=tray1 2=tray2 4=manual 7=auto\n" +" Code numbers may vary with printer model\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-M mirror Mirror bytes (0=KM-1635/KM-2035, 1=HP CLJ 1500) [%d]\n" +"-z model Model [%d]\n" +" 0=HP-1500, 1=KM-1635/2035\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" %d=Cyan, %d=Magenta, %d=Yellow, %d=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , Bpp + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , Mirror + , Model + , PL_C, PL_M, PL_Y, PL_K + , Debug + , Version + ); + + exit(1); +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +int +parse_xy(char *str, int *xp, int *yp) +{ + char *p; + + if (!str || str[0] == 0) return -1; + + *xp = strtoul(str, &p, 10); + if (str == p) return -2; + while (*p && (*p < '0' || *p > '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +/* + * bit mirroring arrays + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +void +mirror_bytes(unsigned char *sp, int bpl, unsigned char *mirror) +{ + unsigned char *ep = sp + bpl - 1; + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 65536; // Printer does strange things otherwise. + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +int +oak_record(FILE *fp, int type, void *payload, int paylen) +{ + OAK_HDR hdr; + static char pad[] = "PAD_PAD_PAD_PAD_"; + static int pageno = 0; + int rc; + + memcpy(hdr.magic, OAK_HDR_MAGIC, sizeof(hdr.magic)); + hdr.type = type; + hdr.len = (sizeof(hdr) + paylen + 15) & ~0x0f; + + rc = fwrite(&hdr, 1, sizeof(hdr), fp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); + if (payload && paylen) + { + rc = fwrite(payload, 1, paylen, fp); + if (rc == 0) error(1, "fwrite(2): rc == 0!\n"); + } + if (hdr.len - (sizeof(hdr) + paylen)) + { + rc = fwrite(pad, 1, hdr.len - (sizeof(hdr) + paylen), fp); + if (rc == 0) error(1, "fwrite(3): rc == 0!\n"); + } + + if (type == OAK_TYPE_START_PAGE) + { + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); + } + + return 0; +} + +void +start_doc(FILE *fp) +{ + OAK_OTHER recother; + OAK_TIME rectime; + OAK_FILENAME recfile; + OAK_DUPLEX recduplex; + OAK_DRIVER recdriver; + time_t now; + struct tm *tm; + + if (Model == MODEL_KM1635) + { + memset(&recdriver, 0, sizeof(recdriver)); + strncpy(recdriver.string, Version+5, 36); + oak_record(fp, OAK_TYPE_DRIVER, &recdriver, sizeof(recdriver)); + } + memset(&recother, 0, sizeof(recother)); + recother.unk = 1; // TODO + strcpy(recother.string, "OTHER"); // TODO: Username???? + oak_record(fp, OAK_TYPE_OTHER, &recother, sizeof(recother)); + + memset(&rectime, 0, sizeof(rectime)); + time(&now); + if (ZeroTime) + now = 0; + strcpy(rectime.datetime, ctime(&now)); + rectime.time_t = now; + tm = localtime(&now); + rectime.year = tm->tm_year + 1900; + rectime.tm_mon = tm->tm_mon; + rectime.tm_mday = tm->tm_mday; + rectime.tm_hour = tm->tm_hour; + rectime.tm_min = tm->tm_min; + rectime.tm_sec = tm->tm_sec; + oak_record(fp, OAK_TYPE_TIME, &rectime, sizeof(rectime)); + + memset(&recfile, 0, sizeof(recfile)); + strcpy(recfile.string, Filename ? Filename : "stdin"); + oak_record(fp, OAK_TYPE_FILENAME, &recfile, sizeof(recfile)); + + memset(&recduplex, 0, sizeof(recduplex)); + recduplex.duplex = (Duplex > DUPLEX_NONE) ? 1 : 0; + recduplex.short_edge = (Duplex == DUPLEX_SHORT_EDGE) ? 1 : 0; + oak_record(fp, OAK_TYPE_DUPLEX, &recduplex, sizeof(recduplex)); +} + +void +end_doc(FILE *fp) +{ + oak_record(fp, OAK_TYPE_END_DOC, NULL, 0); +} + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w + 1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[PL_K][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[PL_K][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[PL_C][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[PL_M][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[PL_Y][y*bpl + x/8] |= mask[x&7]; + } + } + else + { + if (byte & 0x80) plane[PL_C][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[PL_M][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[PL_Y][y*bpl + x/8] |= mask[x&7]; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[PL_K][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[PL_K][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[PL_C][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[PL_M][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[PL_Y][y*bpl + x/8] |= mask[x&7]; + } + } + else + { + if (byte & 0x8) plane[PL_C][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[PL_M][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[PL_Y][y*bpl + x/8] |= mask[x&7]; + } + } + } +} + +void +pgm_subplanes(unsigned char *subplane[2], unsigned char *raw, int w, int h) +{ + int bpl = (w + 7) / 8; + int x, y; + unsigned char byte; + unsigned char ormask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + unsigned char andmask[8] = { 0x7f, ~64, ~32, ~16, ~8, ~4, ~2, ~1 }; + double *carry0, *carry1, *carrytmp; + double sum; + static int dir = 1; + int xs, xe; +static int cnt[4]; +int tot = 0; + + // TODO: convert this to scaled integer arithmetic + + carry0 = (double *) calloc((w+2), sizeof(*carry0)); + if (!carry0) + error(1, "Could not allocate space for carries\n"); + carry1 = (double *) calloc((w+2), sizeof(*carry0)); + if (!carry1) + error(1, "Could not allocate space for carries\n"); + ++carry0; ++carry1; + for (y = 0; y < h; ++y) + { + if (dir > 0) + { dir = -1; xs = w-1; xe = -1; } + else + { dir = 1; xs = 0; xe = w; } + for (x = xs; x != xe; x += dir) + { + byte = 255 - raw[y*w + x]; + sum = byte + carry0[x]; + +++tot; + if (byte == 255 || sum >= 255) + { // Full black +++cnt[2]; + byte = 255; + subplane[1][y*bpl + x/8] |= ormask[x&7]; + subplane[0][y*bpl + x/8] &= andmask[x&7]; + } + else if (sum >= (70.0/100)*255) + { // Dark gray +++cnt[3]; + byte = 255; + subplane[1][y*bpl + x/8] |= ormask[x&7]; + subplane[0][y*bpl + x/8] |= ormask[x&7]; + } + else if (sum > 0) + { // Light gray +++cnt[1]; + byte = (40.0/100)*255; + subplane[1][y*bpl + x/8] &= andmask[x&7]; + subplane[0][y*bpl + x/8] |= ormask[x&7]; + } + else + { // Full white +++cnt[0]; + byte = 0; + subplane[1][y*bpl + x/8] &= andmask[x&7]; + subplane[0][y*bpl + x/8] &= andmask[x&7]; + } + + // Compute the carry that must be distributed + sum -= byte; + carry0[x+dir] += (sum*7)/16.0; + carry1[x-dir] += (sum*3)/16.0; + carry1[x ] += (sum*5)/16.0; + carry1[x+dir] += (sum*1)/16.0; + } + // Advance carry buffers + carrytmp = carry0; carry0 = carry1; carry1 = carrytmp; + memset(carry1-1, 0, (w+2) * sizeof(*carry1)); + } +debug(1, "%d %d %d %d %d\n", tot, cnt[3], cnt[2], cnt[1], cnt[0]); + + free(--carry0); free(--carry1); +} + +void +cups_planes(unsigned char *plane[4][2], unsigned char *raw, int w, int h) +{ + int bpl = (w + 7) / 8; + int i, sub; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + // Whitewash all planes + for (i = 0; i < 4; ++i) + for (sub = 0; sub < 2; ++sub) + memset(plane[i][sub], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*w + x]; + + if (aib && (byte & 0xfc) == 0xfc) + { + plane[PL_K][1][y*bpl + x/8] |= mask[x&7]; + plane[PL_K][0][y*bpl + x/8] |= mask[x&7]; + } + else if (bc && (byte & 0x03) == 0x03) + { + plane[PL_K][1][y*bpl + x/8] |= mask[x&7]; + plane[PL_K][0][y*bpl + x/8] |= mask[x&7]; + } + else + { + if (byte & 128) plane[PL_C][1][y*bpl + x/8] |= mask[x&7]; + if (byte & 64) plane[PL_C][0][y*bpl + x/8] |= mask[x&7]; + if (byte & 32) plane[PL_M][1][y*bpl + x/8] |= mask[x&7]; + if (byte & 16) plane[PL_M][0][y*bpl + x/8] |= mask[x&7]; + if (byte & 8) plane[PL_Y][1][y*bpl + x/8] |= mask[x&7]; + if (byte & 4) plane[PL_Y][0][y*bpl + x/8] |= mask[x&7]; + if (byte & 2) plane[PL_K][1][y*bpl + x/8] |= mask[x&7]; + if (byte & 1) plane[PL_K][0][y*bpl + x/8] |= mask[x&7]; + } + } + } +} + +long JbgOptions[5] = +{ + /* Order */ + JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPDON | JBG_TPBON, + /* L0 */ + 128, + /* MX */ + 16, + /* MY */ + 0 +}; + +void +iswap32(void *p) +{ + char *cp = (char *) p; + char tmp; + tmp = cp[0]; + cp[0] = cp[3]; + cp[3] = tmp; + tmp = cp[1]; + cp[1] = cp[2]; + cp[2] = tmp; +} + +static void +fill_image_plane_unknown(OAK_IMAGE_PLANE *ip) +{ + int i; + + for (i = 0; i < 16; ++i) + ip->unk[i] = i; +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + WORD endpage_arg; + DWORD source_arg; + OAK_MEDIA recmedia; + OAK_COPIES reccopies; + OAK_PAPER recpaper; + OAK_IMAGE_MONO recmono; + OAK_IMAGE_COLOR reccolor; + + int p, p0, p3; + int y; + int bpl = (w+7)/8; + unsigned char *plane[4]; + + debug(1, "cmyk_page: w=%d, h=%d, bitbpl=%d\n", w, h, bpl); + + if (Color2Mono) + p0 = p3 = Color2Mono - 1; + else + { p0 = 0; p3 = 3; } + for (p = p0; p <= p3 ; ++p) + { + plane[p] = malloc(bpl * h); + if (!plane[p]) error(3, "Cannot allocate space for bit plane\n"); + } + + cmyk_planes(plane, raw, w, h); + + oak_record(ofp, OAK_TYPE_START_PAGE, NULL, 0); + + // TODO: page parms + source_arg = SourceCode; + oak_record(ofp, OAK_TYPE_SOURCE, &source_arg, sizeof(source_arg)); + + recmedia.media = MediaCode; + recmedia.unk8[0] = 2; // TODO + recmedia.unk8[1] = 0; // TODO + recmedia.unk8[2] = 0; // TODO + memset(recmedia.string, ' ', sizeof(recmedia.string)); + strcpy(recmedia.string, ""); // TODO + oak_record(ofp, OAK_TYPE_MEDIA, &recmedia, sizeof(recmedia)); + + reccopies.copies = Copies; + reccopies.duplex = Duplex - 1; + oak_record(ofp, OAK_TYPE_COPIES, &reccopies, sizeof(reccopies)); + + recpaper.paper = PaperCode; + if (Model == MODEL_KM1635) + { + recpaper.w1200 = PageWidth * 600 / ResX; + recpaper.h1200 = PageHeight * 600 / ResY; + switch (PaperCode) + { + case 1: case 9: case 13: recpaper.unk = 1; break; + default: recpaper.unk = 0; break; + } + } + else + { + recpaper.w1200 = PageWidth * 1200 / ResX; + recpaper.h1200 = PageHeight * 1200 / ResY; + recpaper.unk = 0; // TODO + } + oak_record(ofp, OAK_TYPE_PAPER, &recpaper, sizeof(recpaper)); + + // image header (32/33) + if (p0 == p3) + { + recmono.plane.unk0 = 0; + recmono.plane.unk1 = 0; + recmono.plane.w = w; // TODO + recmono.plane.h = h; // TODO + recmono.plane.resx = ResX; + recmono.plane.resy = ResY; + recmono.plane.nbits = 1; + fill_image_plane_unknown(&recmono.plane); + oak_record(ofp, OAK_TYPE_IMAGE_MONO, &recmono, sizeof(recmono)); + } + else + { + for (p = p0; p <= p3; ++p) + { + reccolor.plane[p].unk0 = 0; + reccolor.plane[p].unk1 = 0; + reccolor.plane[p].w = w; // TODO + reccolor.plane[p].h = h; // TODO + reccolor.plane[p].resx = ResX; + reccolor.plane[p].resy = ResY; + reccolor.plane[p].nbits = 1; + fill_image_plane_unknown(&reccolor.plane[p]); + } + oak_record(ofp, OAK_TYPE_IMAGE_COLOR, &reccolor, sizeof(reccolor)); + } + + oak_record(ofp, OAK_TYPE_START_IMAGE, NULL, 0); + + // + // Mirror the bits in the image + // + // TODO: combine this operation with cmyk_planes + // + if (Mirror) + for (p = p0; p <= p3; ++p) + for (y = 0; y < h; ++y) + mirror_bytes(plane[p] + y*bpl, bpl, Mirror1); + + // + // Output the image stripes + // + #define N 256 + for (y = 0; y < h; y += N) + { + struct jbg_enc_state se; + unsigned char *bitmaps[1]; + BIE_CHAIN *chain; + BIE_CHAIN *current; + OAK_IMAGE_DATA recdata; + int chainlen; + int padlen; + static char pad[] = "PAD_PAD_PAD_PAD_"; + int rc; + + int lines = (h-y) > N ? N : (h-y); + + for (p = p0; p <= p3; ++p) + { + bitmaps[0] = plane[p] + y * ((w+7)/8); + chain = NULL; + + memset(&recdata.bih, 0, sizeof(recdata.bih)); + recdata.datalen = 0; + recdata.padlen = 0; + recdata.unk1C = 0; // TODO + recdata.y = y; + recdata.plane = p; + recdata.subplane = 0; + + if (lines < N) + JbgOptions[2] = lines; + else + JbgOptions[2] = N; + jbg_enc_init(&se, w, lines, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + if (chain->len != 20) + error(1, "Program error: missing BIH at start of chain\n"); + chainlen = 0; + for (current = chain->next; current; current = current->next) + chainlen += current->len; + + // Copy in the BIH + memcpy(&recdata.bih, chain->data, sizeof(recdata.bih)); + + // Oak is little-endian, but JBIG-kit is big-endian + iswap32(&recdata.bih.xd); + iswap32(&recdata.bih.yd); + iswap32(&recdata.bih.l0); + + recdata.datalen = chainlen; + recdata.padlen = (recdata.datalen + 15) & ~0x0f; + oak_record(ofp, OAK_TYPE_IMAGE_DATA, &recdata, sizeof(recdata)); + for (current = chain->next; current; current = current->next) + { + rc = fwrite(current->data, 1, current->len, ofp); + if (rc == 0) error(1, "fwrite(4): rc == 0!\n"); + } + padlen = recdata.padlen - recdata.datalen; + if (padlen) + { + rc = fwrite(pad, 1, padlen, ofp); + if (rc == 0) + error(1, "fwrite(5): padlen=%d rc == 0!\n", padlen); + } + + free_chain(chain); + } + } + + for (p = p0; p <= p3; ++p) + free(plane[p]); + + oak_record(ofp, OAK_TYPE_END_IMAGE, NULL, 0); + + endpage_arg = 1; // Color + oak_record(ofp, OAK_TYPE_END_PAGE, &endpage_arg, sizeof(endpage_arg)); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + WORD endpage_arg; + DWORD source_arg; + OAK_MEDIA recmedia; + OAK_COPIES reccopies; + OAK_PAPER recpaper; + OAK_IMAGE_MONO recmono; + + int y; + int bpl = (w+7)/8; + + oak_record(ofp, OAK_TYPE_START_PAGE, NULL, 0); + + // TODO: page parms + source_arg = SourceCode; + oak_record(ofp, OAK_TYPE_SOURCE, &source_arg, sizeof(source_arg)); + + recmedia.media = MediaCode; + recmedia.unk8[0] = 2; // TODO + recmedia.unk8[1] = 0; // TODO + recmedia.unk8[2] = 0; // TODO + memset(recmedia.string, ' ', sizeof(recmedia.string)); + strcpy(recmedia.string, ""); // TODO + oak_record(ofp, OAK_TYPE_MEDIA, &recmedia, sizeof(recmedia)); + + reccopies.copies = Copies; + reccopies.duplex = Duplex - 1; + oak_record(ofp, OAK_TYPE_COPIES, &reccopies, sizeof(reccopies)); + + recpaper.paper = PaperCode; + if (Model == MODEL_KM1635) + { + recpaper.w1200 = PageWidth * 600 / ResX; + recpaper.h1200 = PageHeight * 600 / ResY; + switch (PaperCode) + { + case 1: case 9: case 13: recpaper.unk = 1; break; + default: recpaper.unk = 0; break; + } + } + else + { + recpaper.w1200 = PageWidth * 1200 / ResX; + recpaper.h1200 = PageHeight * 1200 / ResY; + recpaper.unk = 0; // TODO + } + oak_record(ofp, OAK_TYPE_PAPER, &recpaper, sizeof(recpaper)); + + // image header (32/33) + recmono.plane.unk0 = 0; + recmono.plane.unk1 = 1; + recmono.plane.w = w; // TODO + recmono.plane.h = h; // TODO + recmono.plane.resx = ResX; + recmono.plane.resy = ResY; + recmono.plane.nbits = 1; + fill_image_plane_unknown(&recmono.plane); + oak_record(ofp, OAK_TYPE_IMAGE_MONO, &recmono, sizeof(recmono)); + + oak_record(ofp, OAK_TYPE_START_IMAGE, NULL, 0); + + // + // Mirror the bits in the image + // + if (Mirror) + for (y = 0; y < h; ++y) + mirror_bytes(buf + y*bpl, bpl, Mirror1); + + // + // Output the image stripes + // + #define N 256 + for (y = 0; y < h; y += N) + { + struct jbg_enc_state se; + unsigned char *bitmaps[1]; + BIE_CHAIN *chain; + BIE_CHAIN *current; + OAK_IMAGE_DATA recdata; + int chainlen; + int padlen; + static char pad[] = "PAD_PAD_PAD_PAD_"; + int rc; + + int lines = (h-y) > N ? N : (h-y); + + bitmaps[0] = buf + y * ((w+7)/8); + chain = NULL; + + memset(&recdata.bih, 0, sizeof(recdata.bih)); + recdata.datalen = 0; + recdata.padlen = 0; + recdata.unk1C = 0; // TODO + recdata.y = y; + if (Model == MODEL_KM1635) + recdata.plane = 0; //K + else + recdata.plane = 3; //K + recdata.subplane = 0; + + if (lines < N) + JbgOptions[2] = lines; + else + JbgOptions[2] = N; + jbg_enc_init(&se, w, lines, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + if (chain->len != 20) + error(1, "Program error: missing BIH at start of chain\n"); + chainlen = 0; + for (current = chain->next; current; current = current->next) + chainlen += current->len; + + // Copy in the BIH + memcpy(&recdata.bih, chain->data, sizeof(recdata.bih)); + + // Oak is little-endian, but JBIG-kit is big-endian + iswap32(&recdata.bih.xd); + iswap32(&recdata.bih.yd); + iswap32(&recdata.bih.l0); + + recdata.datalen = chainlen; + recdata.padlen = (recdata.datalen + 15) & ~0x0f; + oak_record(ofp, OAK_TYPE_IMAGE_DATA, &recdata, sizeof(recdata)); + for (current = chain->next; current; current = current->next) + { + rc = fwrite(current->data, 1, current->len, ofp); + if (rc == 0) error(1, "fwrite(7): rc == 0!\n"); + } + padlen = recdata.padlen - recdata.datalen; + if (padlen) + { + rc = fwrite(pad, 1, padlen, ofp); + if (rc == 0) error(1, "fwrite(8): rc == 0!\n"); + } + free_chain(chain); + } + + oak_record(ofp, OAK_TYPE_END_IMAGE, NULL, 0); + + endpage_arg = 0; // Mono + oak_record(ofp, OAK_TYPE_END_PAGE, &endpage_arg, sizeof(endpage_arg)); + + return 0; +} + +int +pgm_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + WORD endpage_arg; + DWORD source_arg; + OAK_MEDIA recmedia; + OAK_COPIES reccopies; + OAK_PAPER recpaper; + OAK_IMAGE_MONO recmono; + + int sub; + int y; + int bpl = (w+7)/8; + unsigned char *subplane[2]; + + for (sub = 0; sub < 2 ; ++sub) + { + subplane[sub] = malloc(bpl * h); + if (!subplane[sub]) error(3, "Cannot allocate space for subplane\n"); + } + + pgm_subplanes(subplane, raw, w, h); + + oak_record(ofp, OAK_TYPE_START_PAGE, NULL, 0); + + // TODO: page parms + source_arg = SourceCode; + oak_record(ofp, OAK_TYPE_SOURCE, &source_arg, sizeof(source_arg)); + + recmedia.media = MediaCode; + recmedia.unk8[0] = 2; // TODO + recmedia.unk8[1] = 0; // TODO + recmedia.unk8[2] = 0; // TODO + memset(recmedia.string, ' ', sizeof(recmedia.string)); + strcpy(recmedia.string, ""); // TODO + oak_record(ofp, OAK_TYPE_MEDIA, &recmedia, sizeof(recmedia)); + + reccopies.copies = Copies; + reccopies.duplex = Duplex - 1; + oak_record(ofp, OAK_TYPE_COPIES, &reccopies, sizeof(reccopies)); + + recpaper.paper = PaperCode; + if (Model == MODEL_KM1635) + { + recpaper.w1200 = PageWidth * 600 / ResX; + recpaper.h1200 = PageHeight * 600 / ResY; + switch (PaperCode) + { + case 1: case 9: case 13: recpaper.unk = 1; break; + default: recpaper.unk = 0; break; + } + } + else + { + recpaper.w1200 = PageWidth * 1200 / ResX; + recpaper.h1200 = PageHeight * 1200 / ResY; + recpaper.unk = 0; // TODO + } + oak_record(ofp, OAK_TYPE_PAPER, &recpaper, sizeof(recpaper)); + + // image header (32/33) + recmono.plane.unk0 = 0; + recmono.plane.unk1 = 0; + recmono.plane.w = w; + recmono.plane.h = h; + recmono.plane.resx = ResX; + recmono.plane.resy = ResY; + recmono.plane.nbits = 2; + fill_image_plane_unknown(&recmono.plane); + oak_record(ofp, OAK_TYPE_IMAGE_MONO, &recmono, sizeof(recmono)); + + oak_record(ofp, OAK_TYPE_START_IMAGE, NULL, 0); + + // + // Mirror the bits in the image + // + // TODO: combine this operation with pgm_subplanes + // + if (Mirror) + for (sub = 0; sub < 2; ++sub) + for (y = 0; y < h; ++y) + mirror_bytes(subplane[sub] + y*bpl, bpl, Mirror1); + + // + // Output the image stripes + // + #define N 256 + for (y = 0; y < h; y += N) + { + struct jbg_enc_state se; + unsigned char *bitmaps[1]; + BIE_CHAIN *chain; + BIE_CHAIN *current; + OAK_IMAGE_DATA recdata; + int chainlen; + int padlen; + static char pad[] = "PAD_PAD_PAD_PAD_"; + int rc; + + int lines = (h-y) > N ? N : (h-y); + + for (sub = 0; sub < 2; ++sub) + { + bitmaps[0] = subplane[sub] + y * ((w+7)/8); + chain = NULL; + + memset(&recdata.bih, 0, sizeof(recdata.bih)); + recdata.datalen = 0; + recdata.padlen = 0; + recdata.unk1C = 0; // TODO + recdata.y = y; + recdata.plane = 3; //K + recdata.subplane = sub; + + if (lines < N) + JbgOptions[2] = lines; + else + JbgOptions[2] = N; + jbg_enc_init(&se, w, lines, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + if (chain->len != 20) + error(1, "Program error: missing BIH at start of chain\n"); + chainlen = 0; + for (current = chain->next; current; current = current->next) + chainlen += current->len; + + // Copy in the BIH + memcpy(&recdata.bih, chain->data, sizeof(recdata.bih)); + + // Oak is little-endian, but JBIG-kit is big-endian + iswap32(&recdata.bih.xd); + iswap32(&recdata.bih.yd); + iswap32(&recdata.bih.l0); + + recdata.datalen = chainlen; + recdata.padlen = (recdata.datalen + 15) & ~0x0f; + oak_record(ofp, OAK_TYPE_IMAGE_DATA, &recdata, sizeof(recdata)); + for (current = chain->next; current; current = current->next) + { + rc = fwrite(current->data, 1, current->len, ofp); + if (rc == 0) error(1, "fwrite(9): rc == 0!\n"); + } + padlen = recdata.padlen - recdata.datalen; + if (padlen) + { + rc = fwrite(pad, 1, padlen, ofp); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + } + + free_chain(chain); + } + } + + for (sub = 0; sub < 2; ++sub) + free(subplane[sub]); + + oak_record(ofp, OAK_TYPE_END_IMAGE, NULL, 0); + + endpage_arg = 0; + oak_record(ofp, OAK_TYPE_END_PAGE, &endpage_arg, sizeof(endpage_arg)); + + return 0; +} + +int +cups_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + WORD endpage_arg; + DWORD source_arg; + OAK_MEDIA recmedia; + OAK_COPIES reccopies; + OAK_PAPER recpaper; + OAK_IMAGE_MONO recmono; + OAK_IMAGE_COLOR reccolor; + + int p, p0, p3; + int sub; + int y; + int bpl = (w+7)/8; + unsigned char *plane[4][2]; + + if (Color2Mono) + p0 = p3 = Color2Mono - 1; + else + { p0 = 0; p3 = 3; } + for (p = p0; p <= p3 ; ++p) + { + for (sub = 0; sub < 2 ; ++sub) + { + plane[p][sub] = malloc(bpl * h); + if (!plane[p][sub]) + error(3, "Cannot allocate space for bit plane\n"); + } + } + + cups_planes(plane, raw, w, h); + + oak_record(ofp, OAK_TYPE_START_PAGE, NULL, 0); + + // TODO: page parms + source_arg = SourceCode; + oak_record(ofp, OAK_TYPE_SOURCE, &source_arg, sizeof(source_arg)); + + recmedia.media = MediaCode; + recmedia.unk8[0] = 2; // TODO + recmedia.unk8[1] = 0; // TODO + recmedia.unk8[2] = 0; // TODO + memset(recmedia.string, ' ', sizeof(recmedia.string)); + strcpy(recmedia.string, ""); // TODO + oak_record(ofp, OAK_TYPE_MEDIA, &recmedia, sizeof(recmedia)); + + reccopies.copies = Copies; + reccopies.duplex = Duplex - 1; + oak_record(ofp, OAK_TYPE_COPIES, &reccopies, sizeof(reccopies)); + + recpaper.paper = PaperCode; + if (Model == MODEL_KM1635) + { + recpaper.w1200 = PageWidth * 600 / ResX; + recpaper.h1200 = PageHeight * 600 / ResY; + switch (PaperCode) + { + case 1: case 9: case 13: recpaper.unk = 1; break; + default: recpaper.unk = 0; break; + } + } + else + { + recpaper.w1200 = PageWidth * 1200 / ResX; + recpaper.h1200 = PageHeight * 1200 / ResY; + recpaper.unk = 0; // TODO + } + oak_record(ofp, OAK_TYPE_PAPER, &recpaper, sizeof(recpaper)); + + // image header (32/33) + if (p0 == p3) + { + recmono.plane.unk0 = 0; + recmono.plane.unk1 = 0; + recmono.plane.w = w; // TODO + recmono.plane.h = h; // TODO + recmono.plane.resx = ResX; + recmono.plane.resy = ResY; + recmono.plane.nbits = 2; + fill_image_plane_unknown(&recmono.plane); + oak_record(ofp, OAK_TYPE_IMAGE_MONO, &recmono, sizeof(recmono)); + } + else + { + for (p = p0; p <= p3; ++p) + { + reccolor.plane[p].unk0 = 0; + reccolor.plane[p].unk1 = 0; + reccolor.plane[p].w = w; // TODO + reccolor.plane[p].h = h; // TODO + reccolor.plane[p].resx = ResX; + reccolor.plane[p].resy = ResY; + reccolor.plane[p].nbits = 2; + fill_image_plane_unknown(&reccolor.plane[p]); + } + oak_record(ofp, OAK_TYPE_IMAGE_COLOR, &reccolor, sizeof(reccolor)); + } + + oak_record(ofp, OAK_TYPE_START_IMAGE, NULL, 0); + + // + // Mirror the bits in the image + // + // TODO: combine this operation with cups_planes + // + if (Mirror) + for (p = p0; p <= p3; ++p) + for (sub = 0; sub < 2; ++sub) + for (y = 0; y < h; ++y) + mirror_bytes(plane[p][sub] + y*bpl, bpl, Mirror1); + + // + // Output the image stripes + // + #define N 256 + for (y = 0; y < h; y += N) + { + struct jbg_enc_state se; + unsigned char *bitmaps[1]; + BIE_CHAIN *chain; + BIE_CHAIN *current; + OAK_IMAGE_DATA recdata; + int chainlen; + int padlen; + static char pad[] = "PAD_PAD_PAD_PAD_"; + int rc; + + int lines = (h-y) > N ? N : (h-y); + + for (p = p0; p <= p3; ++p) + { + for (sub = 0; sub < 2; ++sub) + { + bitmaps[0] = plane[p][sub] + y * ((w+7)/8); + chain = NULL; + + memset(&recdata.bih, 0, sizeof(recdata.bih)); + recdata.datalen = 0; + recdata.padlen = 0; + recdata.unk1C = 0; // TODO + recdata.y = y; + recdata.plane = p; + recdata.subplane = sub; + + if (lines < N) + JbgOptions[2] = lines; + else + JbgOptions[2] = N; + jbg_enc_init(&se, w, lines, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + if (chain->len != 20) + error(1, "Program error: missing BIH at start of chain\n"); + chainlen = 0; + for (current = chain->next; current; current = current->next) + chainlen += current->len; + + // Copy in the BIH + memcpy(&recdata.bih, chain->data, sizeof(recdata.bih)); + + // Oak is little-endian, but JBIG-kit is big-endian + iswap32(&recdata.bih.xd); + iswap32(&recdata.bih.yd); + iswap32(&recdata.bih.l0); + + recdata.datalen = chainlen; + recdata.padlen = (recdata.datalen + 15) & ~0x0f; + oak_record(ofp, OAK_TYPE_IMAGE_DATA, &recdata, sizeof(recdata)); + for (current = chain->next; current; current = current->next) + { + rc = fwrite(current->data, 1, current->len, ofp); + if (rc == 0) error(1, "fwrite(11): rc == 0!\n"); + } + padlen = recdata.padlen - recdata.datalen; + rc = fwrite(pad, 1, padlen, ofp); + if (rc == 0) error(1, "fwrite(12): rc == 0!\n"); + + free_chain(chain); + } + } + } + + for (p = p0; p <= p3; ++p) + for (sub = 0; sub < 2; ++sub) + free(plane[p][sub]); + + oak_record(ofp, OAK_TYPE_END_IMAGE, NULL, 0); + + endpage_arg = 0; + oak_record(ofp, OAK_TYPE_END_PAGE, &endpage_arg, sizeof(endpage_arg)); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + debug(1, "read_and_clip_image: rawBpl=%d, rightBpl=%d, pixelsePerByte=%d\n", + rawBpl, rightBpl, pixelsPerByte); + debug(1, "read_and_clip_image: bpl=%d, h=%d\n", bpl, h); + debug(1, "read_and_clip_image: clipleft=%d data=%d clipright=%d\n", + UpperLeftX/pixelsPerByte, bpl, rightBpl - bpl); + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, ifp); + if (rc == EOF) + goto done; + + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +#if 0 + #include +#else + static int + isdigit(int c) + { + return (c >= '0' && c <= '9'); + } +#endif + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int c1, c2; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + int first = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + if (first) + first = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + break; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + rawW = getint(ifp); + rawH = getint(ifp); + skip_to_nl(ifp); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Can't allocate page buffer\n"); + + rc = read_and_clip_image(buf, rawBpl, rightBpl, 8, bpl, h, ifp); + if (rc == EOF) + error(1, "Premature EOF(pbm) on input stream\n"); + + pbm_page(buf, w, h, ofp); + + free(buf); + } + return (0); +} + +int +pgm_pages(FILE *ifp, FILE *ofp, int first) +{ + unsigned char *buf; + int c1, c2; + int rawW, rawH, maxVal; + int rawBpl, rightBpl; + int w, h, bpl; + int rc; + + for (;;) + { + if (first) + first = 0; // P5 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + break; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '5') + error(1, "Not a pgmraw data stream\n"); + } + + skip_to_nl(ifp); + + rawW = getint(ifp); + rawH = getint(ifp); + maxVal = getint(ifp); + skip_to_nl(ifp); + if (maxVal != 255) + error(1, "Don't know how to handle pgm maxVal '%d'\n", maxVal); + + rawBpl = rawW; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = w; + rightBpl = rawW - UpperLeftX; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Can't allocate page buffer\n"); + + rc = read_and_clip_image(buf, rawBpl, rightBpl, 1, bpl, h, ifp); + if (rc == EOF) + error(1, "Premature EOF(pgm) on input stream\n"); + + pgm_page(buf, w, h, ofp); + + free(buf); + } + return (0); +} + +int +cups_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int bpc; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + char hdr[512]; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + // 00000000: 74 53 61 52 00 00 00 00 00 00 00 00 00 00 00 00 | tSaR + // 00000170: 00 00 00 00 00 00 00 00 ec 13 00 00 c8 19 00 00 + // 00000180: 00 00 00 00 02 00 00 00 02 00 00 00 ec 13 00 00 + + if (fread(hdr, 4, 1, ifp) != 1) + error(1, "Preamture EOF reading magic number\n"); + if (memcmp(hdr, "tSaR", 4) != 0 && memcmp(hdr, "RaSt", 4) != 0) + error(1, "Illegal magic number\n"); + if (fread(hdr, 0x178-4, 1, ifp) != 1) + error(1, "Preamture EOF skipping start of CUPS header\n"); + + if (fread(&rawW, 4, 1, ifp) != 1) + error(1, "Preamture EOF reading width\n"); + if (fread(&rawH, 4, 1, ifp) != 1) + error(1, "Preamture EOF reading height\n"); + + if (fread(&hdr, 4, 1, ifp) != 1) + error(1, "Preamture EOF skipping mediaType\n"); + + if (fread(&bpc, 4, 1, ifp) != 1) + error(1, "Preamture EOF reading height\n"); + if (bpc != 2) + error(1, "Illegal number of bits per color (%d)\n", bpc); + + if (fread(&hdr, 4, 1, ifp) != 1) + error(1, "Preamture EOF skipping bitPerPixel\n"); + + if (fread(&rawBpl, 4, 1, ifp) != 1) + error(1, "Preamture EOF reading height\n"); + + if (fread(&hdr, 6*4, 1, ifp) != 1) + error(1, "Preamture EOF skipping end of CUPS header\n"); + + debug(1, "%d x %d, %d\n", rawW, rawH, rawBpl); + + // We only clip multiples of 1 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 0; + UpperLeftX &= ~0; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 0) / 1; + rightBpl = (rawW - UpperLeftX + 0) / 1; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 1, bpl, h, ifp); + if (rc == EOF) + goto done; + + cups_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +void +do_one(FILE *in) +{ + int mode; + + mode = getc(in); + if (mode == 't') + { + ungetc(mode, in); + cups_pages(in, stdout); + } + else if (mode != 'P' || Mode == MODE_COLOR) + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else if (mode == '5') + pgm_pages(in, stdout, 1); + else + error(1, "Not a bitcmyk, cups, pbm, or pgm file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + + while ( (c = getopt(argc, argv, + "b:cd:g:n:m:p:r:s:u:l:z:L:ABJ:M:S:U:D:V?h")) != EOF) + switch (c) + { + case 'b': Bpp = atoi(optarg); + if (Bpp != 1 && Bpp != 2) + error(1, "Illegal value '%s' for -b\n", optarg); + break; + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); + if (Duplex < 1 || Duplex > 3) + error(1, "Illegal value '%s' for -d\n", optarg); + break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'z': Model = atoi(optarg); + if (Model < 0 || Model > MODEL_LAST) + error(1, "Illegal value '%s' for -z\n", optarg); + break; + case 'M': Mirror = atoi(optarg); break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'D': Debug = atoi(optarg); + if (Debug == 12345678) + { + // Hack to force time to zero for regression tests + ZeroTime = 1; + Debug = 0; + } + break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + if (Model == MODEL_KM1635) + { + JbgOptions[0] = 8; + JbgOptions[1] = JBG_DELAY_AT | JBG_LRLTWO | JBG_TPBON; + JbgOptions[3] = 32; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + int i; + + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + end_doc(stdout); + exit(0); +} diff --git a/foo2qpdl-wrapper.1in b/foo2qpdl-wrapper.1in new file mode 100644 index 0000000..7e476c1 --- /dev/null +++ b/foo2qpdl-wrapper.1in @@ -0,0 +1,240 @@ +'\" t +.TH foo2qpdl-wrapper 1 "${MODpage}" "foo2qpdl-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2qpdl-wrapper \- Convert Postscript into a QPDL printer stream +.SH SYNOPSIS +.B foo2qpdl-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2qpdl-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2qpdl\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to Samsung/Xerox QPDL printer format +for driving the +Samsung CLP-300, CLX-2160, CLX-3160, CLP-315, CLX-3175, CLP-600, CLP-610, +CLP-620, CLP-360, CLP-365, +and Xerox Phaser 6110 +QPDL printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-C\0 colormode +Color correction mode [0]. +.TS +n l . +1 CRD +10 ICM color profile (using -G *.icm file) +.TE +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media QPDL +_ +plain 0 +thick 1 +thin 2 +bond 3 +color 4 +card 5 +labels 6 +envelope 7 +preprinted 8 +cotton 9 +recycled 10 +transparency 11 +archive 12 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [0]. +.TS +box; +| n l | n l. +0 letter 1 legal +2 A4 3 executive +6 env #10 7 env Monarch +8 env C5 9 env DL +11 B5jis 12 B5iso +16 A5 17 A6 +23 env C6 24 folio +25 env 6.75 26 env #9 +28 oficio +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [255]. +.TS +| n l | n l. +1 auto 2 manual +3 multi 4 tray1 +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2qpdl\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the QPDL stream. +\fBfoo2qpdl-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-z\0 model +Printer model. Model 0 is the default. +.TS +l l. +model Description +0 CLP-300, CLX-2160, CLX-3160 +1 CLP-600 +2 CLP-310, CLP-315, CLP-610, CLX-3175 +3 CLP-620, CLP-360, CLP-365 +.TE +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-a\0 parm=val +Color Adjust. \fIparm\fP is b, c, s, cr, mg, yb for +brightness, contrast, saturation, cyan-red balance, magenta-green balance, +and yellow-blue balance. +\fIval\fP is 0 to 100. Multiple options are allowed. +The default is "-ab=50 -ac=50 -as=50 -acr=50 -amg=50 -ayb=50". +This only works when the -z3 (e.g. CLP-365) model is set! +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. (WORK IN PROGRESS). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2qpdl\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome QPDL stream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2qpdl-wrapper testpage.ps > testpage.zm +qpdldecode < testpage.zm +lpr -P raw testpage.zm +.fi +.RE +.P +Create a color QPDL stream from a Postscript document: + +.RS +.nf +foo2qpdl-wrapper -c testpage.ps > testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2qpdl-wrapper +.SH SEE ALSO +.BR foo2qpdl (1), +.BR qpdldecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLQPDL}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2qpdl-wrapper.in b/foo2qpdl-wrapper.in new file mode 100755 index 0000000..2d9993b --- /dev/null +++ b/foo2qpdl-wrapper.in @@ -0,0 +1,756 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2qpdl-wrapper.in,v 1.57 2014/01/27 02:34:29 rick Exp $' + +# +# Printer Notes: +# +# Samsung CLP-300: -z0, ICM +# Samsung CLP-310: -z2, ICM +# Samsung CLP-315: -z2, ICM +# Samsung CLP-325: -z2, ICM alpha +# Samsung CLP-365: -z3, ICM alpha +# Samsung CLP-600: -z1, CRD, need ICM for black text +# Samsung CLP-610: -z2, CRD, need ICM for black text +# Samsung CLP-620: -z3, CRD, need ICM for black text +# Samsung CLX-2160: -z0, ICM +# Samsung CLX-3160: -z0, ICM +# Samsung CLX-3175: -z2, ICM +# Samsung CLX-3185: -z2, ICM alpha +# Xerox Phaser 6110: -z0, ICM +# Xerox Phaser 6110MFP: -z0, ICM +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2qpdl +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=upper, 2=lower, 4=manual, 7=auto + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] +-z model Printer Model [$MODEL] + 0=CLP-300, CLX-2160, CLX-3160 + 1=CLP-600 + 2=CLP-310, CLP-315, CLP-610, CLX-3175 + 3=CLP-620, CLP-360, CLP-365 + +Color Tweaking Options: +-a parm=val Color Adjust. "parm" is b,c,s,cr,mg,yb. "val" is 0-100 +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=0 +COPIES=1 +PAPER=0 +RES=1200x600 +SOURCE=1 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE=default +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +NUP_ORIENT= +CA_B=50 #Color Adjust Brightness +CA_C=50 #Color Adjust Contrast +CA_S=50 #Color Adjust Saturation +CA_CR=50 #Color Adjust Cyan-Red Balance +CA_MG=50 #Color Adjust Magenta-Green Balance +CA_YB=50 #Color Adjust Yellow-Blue Balance +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + DEFAULTCOLORMODE=1 + ;; +8.1*) + DEFAULTCOLORMODE=1 + QUALITY=1 + ;; +*) DEFAULTCOLORMODE=1 + ;; +esac +while getopts "1:23456789o:a:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Vh?" opt +do + case $opt in + a) case "$OPTARG" in + b=*|B=*) CA_B=`echo "$OPTARG" | sed "s/^..//"`;; + c=*|C=*) CA_C=`echo "$OPTARG" | sed "s/^..//"`;; + s=*|S=*) CA_S=`echo "$OPTARG" | sed "s/^..//"`;; + cr=*|CR=*) CA_CR=`echo "$OPTARG" | sed "s/^...//"`;; + mg=*|MG=*) CA_MG=`echo "$OPTARG" | sed "s/^...//"`;; + yb=*|YB=*) CA_YB=`echo "$OPTARG" | sed "s/^...//"`;; + *) error "-a is not (b, c, s, cr, mg, yb)=NUM!";; + esac + ;; + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2qpdl -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate model code +# +case "$MODEL" in +0|1|2|3) ;; +*) error "Unknown model code $MODEL";; +esac + +# +# Validate media code +# +case "$MEDIA" in +0|plain) MEDIA=0;; +1|thick) MEDIA=1;; +2|thin) MEDIA=2;; +3|bond) MEDIA=3;; +4|color) MEDIA=4;; +5|card) MEDIA=5;; +6|labels) MEDIA=6;; +7|envelope) MEDIA=7;; +8|preprinted) MEDIA=8;; +9|cotton) MEDIA=9;; +10|recycled) MEDIA=10;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|auto) SOURCE=1;; +2|manual) SOURCE=2;; +3|multi) SOURCE=3;; +4|tray1) SOURCE=4;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +1200x1200) ;; +2400x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=21; paper=letter; + # Doesn't work on a real printer - smudges. + # set_clipping 2 100 2 100 + set_clipping 150 100 150 100 + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=21; paper=letter; + # Doesn't work on a real printer - smudges. + # set_clipping 2 100 2 100 + set_clipping 150 100 150 100 + ;; +0|letter) PAPER=0; paper=letter; XDIM="10200"; YDIM="6600" + set_clipping 150 100 150 100 + ;; +1|legal) PAPER=1; paper=legal; XDIM="10200"; YDIM="8400" + set_clipping 150 100 150 100 + ;; +3|executive) PAPER=3; paper=executive; XDIM="8700"; YDIM="6300" + set_clipping 150 100 150 100 + ;; +2|a4|A4) PAPER=2; paper=a4; XDIM="9920"; YDIM="7016" + set_clipping 150 100 150 100 + ;; +16|a5|A5) PAPER=16; paper=a5; XDIM="6992"; YDIM="4960" + set_clipping 168 100 168 100 # modulo 256 + ;; +11|b5jis|B5jis) PAPER=11; paper=b5; XDIM="8598"; YDIM="6070" + set_clipping 138 100 138 100 # modulo 256 + ;; +24|folio) PAPER=24; paper=folio; XDIM="9922"; YDIM="7796" + set_clipping 150 100 150 100 + ;; +26|"env#9") PAPER=26; paper=env9; XDIM="4496"; YDIM="5324" + set_clipping 200 100 200 100 # modulo 256 + ;; +6|"env#10") PAPER=6; paper=env10; XDIM="4950"; YDIM="5700" + set_clipping 171 100 171 100 # modulo 256 + ;; +9|envDL) PAPER=9; paper=envDL; XDIM="5200"; YDIM="5200" + set_clipping 168 100 168 100 # modulo 256 + ;; +8|envC5) PAPER=8; paper=envC5; XDIM="7650"; YDIM="5408" + set_clipping 150 100 150 100 + ;; +23|envC6) PAPER=23; paper=envC6; XDIM="5386"; YDIM="3826" + set_clipping 150 100 150 100 + ;; +12|b5iso|B5iso) PAPER=12; paper=b5; XDIM="8314"; YDIM="5906" + set_clipping 189 100 189 100 # modulo 256 + ;; +7|envMonarch) PAPER=7; paper=envMonarch;XDIM="4650"; YDIM="4500" + set_clipping 150 100 150 100 + ;; +25|env6.75) PAPER=25; paper=env6.75; XDIM="4348"; YDIM="3900" + set_clipping 150 100 150 100 + ;; +17|a6|A6) PAPER=17; paper=a6; XDIM="4960"; YDIM="3496" + set_clipping 176 100 176 100 # modulo 256 + ;; +28|oficio) PAPER=28; paper=a6; XDIM="10200"; YDIM="8100" + set_clipping 150 100 150 100 + ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +1200x1200) YDIM=`expr $YDIM \* 2`;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none | none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac + case "$GAMMAFILE" in + default) GAMMAFILE=samclp300-0.icm;; + esac +fi + +CRDBASE="$PREFIX/share/foo2qpdl/crd" +case "$MODEL" in + 0) model=CLP-300;; + 1) model=CLP-600;; + 2) model=CLP-600;; + 3) model=CLP-600;; +esac +case "$RES" in + 600x600) SCREEN=$model-600x600cms2;; + 1200x600) SCREEN=$model-1200x600cms2;; + 1200x1200) SCREEN=$model-1200x1200cms2;; +esac + +PSTOPS_OPTS="-n" + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none | none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac + ;; +1|crd) + # CRD + GAMMAFILE="" + GAMMAFILE="$GAMMAFILE $CRDBASE/${model}cms" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + # Black text... + TMPFILE2=/tmp/black$$ + cat $CRDBASE/black-text.ps - >$TMPFILE2 + exec <$TMPFILE2 + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2qpdl -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ + -a$CA_B,$CA_C,$CA_S,$CA_CR,$CA_MG,$CA_YB \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2qpdl -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER -a$CA_B,$CA_C,$CA_S,$CA_CR,$CA_MG,$CA_YB \ +$BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE + [ -f "$TMPFILE2" ] && rm -f $TMPFILE2 +fi + +exit 0 diff --git a/foo2qpdl.1in b/foo2qpdl.1in new file mode 100644 index 0000000..bdc209d --- /dev/null +++ b/foo2qpdl.1in @@ -0,0 +1,205 @@ +'\" t +.TH foo2qpdl 1 "${MODpage}" "foo2qpdl ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2qpdl \- Convert Ghostscript pbmraw or bitcmyk format into a +QPDL printer stream +.SH SYNOPSIS +.B foo2qpdl +.RI [ options "] <" pbmraw-file " >" qpdl-file +.sp 1 +.B foo2qpdl +.RI [ options "] <" bitcmyk-file " >" qpdl-file +.sp 1 +.B foo2qpdl +.RI [ options "] <" pksmraw-file " >" qpdl-file +.SH DESCRIPTION +.B foo2qpdl +converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome +or color QPDL streams, +for driving the Samsung CLP-300, CLX-2160, CLP-600, CLX-3160, CLP-610 +CLP-620, CLP-360, CLP-365, +and the Xerox Phaser 6110 +QPDL printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media QPDL +_ +plain 0 +thick 1 +thin 2 +bond 3 +color 4 +card 5 +labels 6 +envelope 7 +preprinted 8 +cotton 9 +recycled 10 +transparency 11 +archive 12 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [0]. +.TS +box; +| n l | n l. +0 letter 1 legal +2 A4 3 executive +6 env #10 7 env Monarch +8 env C5 9 env DL +11 B5jis 12 B5iso +16 A5 17 A6 +23 env C6 24 folio +25 env 6.75 26 env #9 +28 oficio 21 custom +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [255]. +.TS +| n l | n l. +1 auto 2 manual +3 multi 4 tray1 +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2qpdl\fP +for a particular printer. +.TP +.BI \-a\0 b,c,s,cr,mg,yb +Color Adjust: brightness, contrast, saturation, cyan-red balance, +magenta-green balance, and yellow-blue balance from 0 to 100. +The default is 50,50,50,50,50,50. +This only works when the -z3 (e.g. CLP-365) model is set! +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the QPDL stream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.BI \-z\0 model +Printer model. Model 0 is the default. +.TS +l l. +model Description +0 CLP-300, CLX-2160, CLX-3160 +1 CLP-600 +2 CLP-310, CLP-315, CLP-610, CLX-3175 +3 CLP-620, CLP-360, CLP-365 +.TE +.SS Debugging Options +These options are used for debugging \fBfoo2qpdl\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white QPDL stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2qpdl -r1200x600 -g10200x6600 -p0 >testpage.zm +.fi +.RE +.P +Create a color QPDL stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2qpdl -r1200x600 -g10200x6600 -p0 >testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2qpdl +.SH SEE ALSO +.BR foo2qpdl-wrapper (1), +.BR qpdldecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLQPDL}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2qpdl.c b/foo2qpdl.c new file mode 100644 index 0000000..cade6ed --- /dev/null +++ b/foo2qpdl.c @@ -0,0 +1,1856 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics ZJ-stream format. There +is some information about the ZJS format at http://ddk.zeno.com. + +With this utility, you can print to some HP printers, such as these: + - Samsung CLP-300 -z0 + - Samsung CLP-600 -z1 + - Samsung CLP-310 -z2 + - Samsung CLP-315 -z2 + - Samsung CLP-325 -z2 + - Samsung CLP-365 -z3 + - Samsung CLP-610 -z2 + - Samsung CLP-620 -z3 + - Samsung CLX-2160 (printer only) (like CLP-300) + - Samsung CLX-3160 (printer only) (like CLP-300) + - Samsung CLX-3175 (printer only) (like CLP-315) + - Xerox Phaser 6110 (like CLP-300) + - Xerox Phaser 6110MFP (printer only) (like CLP-300) + +AUTHORS +This program began life as Robert Szalai's 'pbmtozjs' program. It +also uses Markus Kuhn's jbig-kit compression library (included, but +also available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +The program was overhauled by Rick Richardson to limit data chunk size +to 65536 bytes, add command line options, add color support, +and other miscellaneous features. + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2qpdl.c,v 1.54 2014/01/27 02:23:29 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#include "jbig.h" +#include "qpdl.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 1200; +int ResY = 600; +int Bpp = 1; +int PaperCode = 0; //DMPAPER_LETTER; + #define DMPAPER_CUSTOM 21 +int PageWidth = 1200 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_PLAIN; +char *Username = NULL; +char *Filename = NULL; +int Mode = 1; + #define MODE_MONO 1 + #define MODE_COLOR 2 +int Model = 0; + #define MODEL_CLP300 0 + #define MODEL_CLP600 1 + #define MODEL_CLP610 2 + #define MODEL_CLP620 3 + #define MODEL_LAST 3 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 16; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; +int RealWidth; +int EconoMode = 0; +int ColorAdjust[6] = { + 50, /* Brightness 0..100 */ + 50, /* Contrast 0..100 */ + 50, /* Saturation 0..100 */ + 50, /* Cyan-Red Balance 0..100 */ + 50, /* Magenta-Green Balance 0..100 */ + 50 /* Yellow-Blue Balance 0..100 */ +}; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; + +long JbgOptions[5] = +{ + /* Order */ + 0, //JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPBON, + /* L0 */ + 256, + /* MX */ + 0, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2qpdl [options] qpdl-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome ZJS stream,\n" +" for driving the HP LaserJet M1005 MFP laser printer.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2qpdl -r1200x600 -g10200x6600 -p1 >testpage.zm\n" +"\n" +" foo2qpdl [options] qpdl-file\n" +" foo2qpdl [options] qpdl-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color ZJS stream,\n" +" for driving the HP LaserJet M1005 MFP color laser printer\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2qpdl -r1200x600 -g10200x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 0=plain, 1=thick, 2=thin. 3=bond, 4=color, 5=card,\n" +" 6=labels, 7=envelope, 8=preprinted, 9=cotton,\n" +" 10=recycled, 11=transparency, 12=archive\n" +"-p paper Paper code [%d]\n" +" 0=letter, 1=legal, A4=2, 3=executive, 6=env#10,\n" +" 7=envMonarch, 8=envC5, 9=envDL, 11=B5jis, 12=B5iso,\n" +" 16=A5, 17=A6, 21=custom, 23=envC6, 24=folio, 25=env6.75,\n" +" 26=env#9, 28=oficio\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=upper 2=lower 4=manual 7=auto\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-a b,c,s,cr,mg,yb Color Adjust from 0 to 100 [50,50,50,50,50,50]\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +"-z model Model [%d]\n" +" 0=CLP-300, CLX-2160, CLX-3160\n" +" 1=CLP-600\n" +" 2=CLP-310/315, CLP-320/325, CLP-610, CLX-3175\n" +" 3=CLP-360/365, CLP-620\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , ExtraPad + , Model + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +static int +write_cksum(void *vbuf, int len, FILE *fp) +{ + int i, cksum; + unsigned char *buf = (unsigned char *) vbuf; + + for (cksum = 0, i = 0; i < len; ++i) + { + cksum += buf[i]; + putc(buf[i], fp); + } + return cksum; +} + +static int +be32_write(FILE *fp, unsigned long value) +{ + value = be32(value); + + return write_cksum(&value, 4, fp); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 0x80000; // Printer does strange things otherwise. + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +int +write_plane(int pn, BIE_CHAIN **root, FILE *ofp) +{ + BIE_CHAIN *current = *root; + BIE_CHAIN *next; + int len; + int w; + int cksum; + int stripe = 0; + + debug(3, "Write Plane %d\n", pn); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + + for (current = (*root)->next; current && current->len; + current = current->next) + { + len = current->len; + next = current->next; + ++stripe; + + fprintf(ofp, "%c", 12); + fprintf(ofp, "%c", stripe); + fprintf(ofp, "%c%c", (char) ((w/8)>>8), (char) (w/8)); + fprintf(ofp, "%c%c", 0, 128); + fprintf(ofp, "%c", pn); + fprintf(ofp, "%c", 0x13); + be32_write(ofp, len+36); + + cksum = be32_write(ofp, 0x39abcdef); + cksum += be32_write(ofp, len); + if (next) + cksum += be32_write(ofp, 0x01000000); + else + cksum += be32_write(ofp, 0x02000000); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + + cksum += write_cksum(current->data, len, ofp); + + be32_write(ofp, cksum); + } + free_chain(*root); + + return 0; +} + +void +start_page_init(FILE *ofp) +{ + int valw, valh; + + /* RECTYPE: 0x0 */ + fprintf(ofp, "%c", 0); + fprintf(ofp, "%c", ResY/100); + fprintf(ofp, "%c%c", Copies>>8, Copies); + fprintf(ofp, "%c", PaperCode); + valw = 300 * PageWidth / ResX; + valh = 300 * PageHeight / ResY; + fprintf(ofp, "%c%c", valw>>8, valw); + fprintf(ofp, "%c%c", valh>>8, valh); + if ((PageNum & 1) == 0 && EvenPages) + fprintf(ofp, "%c", 3); + else + fprintf(ofp, "%c", SourceCode); + fprintf(ofp, "%c", 0); + switch (Duplex) + { + case DMDUPLEX_OFF: + fprintf(ofp, "%c", 0); + fprintf(ofp, "%c", 0); + break; + case DMDUPLEX_LONGEDGE: + case DMDUPLEX_SHORTEDGE: + fprintf(ofp, "%c", 1); + fprintf(ofp, "%c", 0); + break; + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + if ((PageNum & 1) == 0 && EvenPages) + { + fprintf(ofp, "%c", 0); + fprintf(ofp, "%c", 1); + } + else + { + fprintf(ofp, "%c", 0); + fprintf(ofp, "%c", 0); + } + break; + } + fprintf(ofp, "%c", 0); + + switch (Model) + { + case MODEL_CLP610: + fprintf(ofp, "%c", 5); + fprintf(ofp, "%c%c", 1, ResX / 100); + break; + case MODEL_CLP620: + fprintf(ofp, "%c", 5); + fprintf(ofp, "%c%c", Bpp, (ResX/Bpp) / 100); + break; + default: + fprintf(ofp, "%c", 2); + fprintf(ofp, "%c%c", 1, ResX / 100); + break; + } + + switch (Model) + { + case MODEL_CLP610: + case MODEL_CLP620: + /* RECTYPE: 0x13 */ + fprintf(ofp, "%c", 0x13); + fprintf(ofp, "%c%c%c", 0, 0, 0); + fprintf(ofp, "%c%c", 0x23, 0x15); + fprintf(ofp, "%c%c%c%c", 0, 0, 0, 0); + fprintf(ofp, "%c%c%c%c", 0, 0, 0, 0); + fprintf(ofp, "%c", 0); + break; + } +} + +void +start_page(BIE_CHAIN **root, int nbie, FILE *ofp) +{ + BIE_CHAIN *current = *root; + unsigned long w, h; + int i, pn; + int cksum; + static int pageno = 0; + + /* error handling */ + if (!current) + error(1, "There is no JBIG!\n"); + if (!current->next) + error(1, "There is no or wrong JBIG header!\n"); + if (current->len != 20 ) + error(1,"wrong BIH length\n"); + + start_page_init(ofp); + + switch (Model) + { + case MODEL_CLP610: + error(1, "start_page: Model CLP-610 uses start_page_banded!\n"); + break; + case MODEL_CLP620: + error(1, "start_page: Model CLP-620 uses start_page_banded!\n"); + break; + default: + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + if (h == 0) + error(1, "h == 0!\n"); + + // pn goes from 4, 1, 2, 3 + for (pn = 4, i = 0; i < nbie; ++i) + { + /* RECTYPE: 0xC */ + fprintf(ofp, "%c", 12); + fprintf(ofp, "%c", 0); + fprintf(ofp, "%c%c", (char) ((w/8)>>8), (char) (w/8)); + fprintf(ofp, "%c%c", 0, 128); + fprintf(ofp, "%c", pn); + fprintf(ofp, "%c", 0x13); + be32_write(ofp, 20+36); + + cksum = be32_write(ofp, 0x39abcdef); + cksum += be32_write(ofp, 20); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += be32_write(ofp, 0); + cksum += write_cksum(current->data, 20, ofp); + be32_write(ofp, cksum); + if (++pn == 5) pn = 1; + } + break; + } + + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(FILE *ofp) +{ + switch (Model) + { + case MODEL_CLP620: + /* RECTYPE: 0x14 subtype 0x10 */ + fprintf(ofp, "%c", 0x14); + fprintf(ofp, "%c%c%c%c%c%c%c", 0x10, 0x16, 0x04, 0x0f, 0, 0, 0); + break; + } + + /* RECTYPE: 0x1 */ + fprintf(ofp, "%c", 1); + fprintf(ofp, "%c%c", Copies>>8, Copies); //cksum?? +} + +int +width2unk(int w) +{ + int u; + + /* u = (26.0/6655.0) * w + 65; */ + u = (w >> 8) + 65; + return u; +} + +int +write_page_banded(int nbie, unsigned char *bm[4], int w, int h, int pn, + FILE *ofp) +{ + int y; + int firstbih = 1; + int stripe; + static int pageno = 0; + #define NBAND 128 + + start_page_init(ofp); + + switch (Model) + { + case MODEL_CLP620: + h -= NBAND * 0; // Test for clp-360 + break; + } + + for (pn = 0; pn < nbie; ++pn) + { + stripe = 0; + for (y = 0; y < h; y += NBAND) + { + struct jbg_enc_state se; + unsigned char *bitmaps[1]; + BIE_CHAIN *chain; + BIE_CHAIN *current; + int len; + int cksum; + + int lines = (h-y) > NBAND ? NBAND : (h-y); + + bitmaps[0] = bm[pn] + y * ((w+7)/8); + chain = NULL; + + if (lines < NBAND) + JbgOptions[2] = lines; + else + JbgOptions[2] = NBAND; + JbgOptions[1] = JBG_DELAY_AT | JBG_LRLTWO; + jbg_enc_init(&se, w, lines, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + if (chain->len != 20) + error(1, "Program error: missing BIH at start of chain\n"); + + if (firstbih) + { + int rc; + + /* RECTYPE: 0x14 - BIH */ + fprintf(ofp, "%c", 0x14); + rc = fwrite(chain->data, 20, 1, ofp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); + fprintf(ofp, "%c%c%c", 0, 0, 1); + /* UNK: maybe horiz. margin? + * Values: 78 for 3in to 104 for 8.5in + */ + fprintf(ofp, "%c", width2unk(w)); + firstbih = 0; + } + + current = chain->next; + if (!current) + error(1, "No data in chain!\n"); + + len = current->len; + + fprintf(ofp, "%c", 12); + fprintf(ofp, "%c", stripe); + ++stripe; + fprintf(ofp, "%c%c", (char) ((w/8)>>8), (char) (w/8)); + fprintf(ofp, "%c%c", 0, 128); + if (nbie == 1) + fprintf(ofp, "%c", 4); + else + fprintf(ofp, "%c", pn+1); + fprintf(ofp, "%c", 0x15); + be32_write(ofp, len+4); + + cksum = write_cksum(current->data, len, ofp); + + be32_write(ofp, cksum); + free_chain(chain); + } + } + + ++pageno; + end_page(ofp); + + return 0; +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + + start_page(root, nbie, ofp); + + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root2) + write_plane(2, root2, ofp); + if (root3) + write_plane(3, root3, ofp); + if (root4) + write_plane(4, root4, ofp); + + end_page(ofp); + return 0; +} + +void +color_adjust(FILE *ofp) +{ + int i; + + for (i = 0; i < 6; ++i) + if (ColorAdjust[i] != 50) + { + fprintf(ofp, "@PJL SET ESCMSDOCTYPE=STANDARD\r\n"); + fprintf(ofp, "@PJL SET ESCMSCOLORADJUSTMENT=ON\r\n"); + fprintf(ofp, "@PJL SET ESCMSBRIGHTNESS=%d\r\n", ColorAdjust[0]); + fprintf(ofp, "@PJL SET ESCMSCONTRAST=%d\r\n", ColorAdjust[1]); + fprintf(ofp, "@PJL SET ESCMSSATURATION=%d\r\n", ColorAdjust[2]); + fprintf(ofp, "@PJL SET ESCMSCRBALANCE=%d\r\n", ColorAdjust[3]); + fprintf(ofp, "@PJL SET ESCMSMGBALANCE=%d\r\n", ColorAdjust[4]); + fprintf(ofp, "@PJL SET ESCMSYBBALANCE=%d\r\n", ColorAdjust[5]); + return; + } +} + +void +start_doc(FILE *ofp) +{ + time_t now; + struct tm *tmp; + char datetime[14+1]; + char *strmedia[] = + { + "NORMAL", "THICK", "THIN", "BOND", "COLOR", + "CARD", "LABEL", "ENV", "USED", "COTTON", + "RECYCLED", "OHP", "ARCHIVE", + }; + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "NORMAL" + + now = time(NULL); + tmp = localtime(&now); + strftime(datetime, sizeof(datetime), "%Y%m%d", tmp); + + fprintf(ofp, "\033%%-12345X@PJL DEFAULT SERVICEDATE=%s\r\n", datetime); + fprintf(ofp, "@PJL SET USERNAME=\"%s\"\r\n", + Username ? Username : "Unknown"); + fprintf(ofp, "@PJL SET JOBNAME=\"%s\"\r\n", + Filename ? Filename : ""); + fprintf(ofp, "@PJL SET COLORMODE=%s\r\n", + Mode == MODE_MONO ? "MONO" : "COLOR"); + switch (Model) + { + case MODEL_CLP620: + fprintf(ofp, "@PJL SET RESOLUTION=600\r\n"); + fprintf(ofp, "@PJL SET BITSPERPIXEL=%d\r\n", ResX / 600); + color_adjust(ofp); + break; + } + + switch (Duplex) + { + case DMDUPLEX_LONGEDGE: + fprintf(ofp, "@PJL SET DUPLEX=ON\r\n"); + fprintf(ofp, "@PJL SET BINDING=LONGEDGE\r\n"); + break; + case DMDUPLEX_MANUALLONG: + fprintf(ofp, "@PJL SET DUPLEX=MANUAL\r\n"); + fprintf(ofp, "@PJL SET BINDING=LONGEDGE\r\n"); + break; + case DMDUPLEX_SHORTEDGE: + fprintf(ofp, "@PJL SET DUPLEX=ON\r\n"); + fprintf(ofp, "@PJL SET BINDING=SHORTEDGE\r\n"); + break; + case DMDUPLEX_MANUALSHORT: + fprintf(ofp, "@PJL SET DUPLEX=MANUAL\r\n"); + fprintf(ofp, "@PJL SET BINDING=SHORTEDGE\r\n"); + break; + } + fprintf(ofp, "@PJL SET PAPERTYPE = %s\r\n", STRARY(MediaCode, strmedia)); + fprintf(ofp, "@PJL ENTER LANGUAGE = QPDL\r\n"); +} + +void +end_doc(FILE *ofp) +{ + fprintf(ofp, "%c", 9); + fprintf(ofp, "\033%%-12345X"); +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + bpl = (bpl + 15) & ~15; + debug(1, "w=%d, bpl=%d, rawbpl=%d\n", w, bpl, rawbpl); + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl, bpl16; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + unsigned char *bm[4]; + + RealWidth = w; + w = (w + 127) & ~127; + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + debug(1, "w = %d, bpl = %d, bpl16 = %d\n", w, bpl, bpl16); + + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl16 * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, RealWidth, h); + + switch (Model) + { + case MODEL_CLP610: + case MODEL_CLP620: + if (Color2Mono) + { + bm[0] = plane[Color2Mono-1]; + write_page_banded(1, bm, w, h, 3, ofp); + } + else if (AnyColor) + { + bm[0] = plane[0]; + bm[1] = plane[0]; + bm[2] = plane[0]; + bm[3] = plane[0]; + write_page_banded(4, plane, w, h, 3, ofp); + } + else + { + bm[0] = plane[3]; + write_page_banded(1, bm, w, h, 3, ofp); + } + break; + default: + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + h, JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + break; + } + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + unsigned char *bm[4]; + + RealWidth = w; + w = (w + 127) & ~127; + debug(1, "w = %d\n", w); + + switch (Model) + { + case MODEL_CLP610: + case MODEL_CLP620: + if (Color2Mono) + { + bm[0] = plane[Color2Mono-1]; + write_page_banded(1, bm, w, h, 3, ofp); + } + else if (AnyColor) + { + bm[0] = plane[0]; + bm[1] = plane[0]; + bm[2] = plane[0]; + bm[3] = plane[0]; + write_page_banded(4, plane, w, h, 3, ofp); + } + else + { + bm[0] = plane[3]; + write_page_banded(1, bm, w, h, 3, ofp); + } + break; + default: + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + h, JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + break; + } + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + struct jbg_enc_state se; + + RealWidth = w; + w = (w + 127) & ~127; + + if (SaveToner) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + *bitmaps = buf; + + switch (Model) + { + case MODEL_CLP610: + case MODEL_CLP620: + write_page_banded(1, bitmaps, w, h, 3, ofp); + break; + default: + if (0 && PaperCode == DMPAPER_CUSTOM) + h++; + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + h, JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); + break; + } + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + if (PaperCode == DMPAPER_CUSTOM) + w = (w + 0) & ~255; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + #if 0 + if (Duplex == DMDUPLEX_LONGEDGE && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + #endif + if (Duplex == DMDUPLEX_MANUALLONG && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if ((PageNum & 1) == 0 && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int bpl16; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + if (PaperCode == DMPAPER_CUSTOM) + w = (w + 0) & ~255; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + bpl16 = (bpl + 15) & ~15; + debug(1, "bpl=%d bpl16=%d\n", bpl, bpl16); + + plane[i] = malloc(bpl16 * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl16, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl16*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int rc; + int i, j; + + while ( (c = getopt(argc, argv, + "a:cd:g:n:m:p:r:s:tu:l:z:L:ABPJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'a': + rc = sscanf(optarg, "%d,%d,%d,%d,%d,%d", + &ColorAdjust[0], &ColorAdjust[1], + &ColorAdjust[2], &ColorAdjust[3], + &ColorAdjust[4], &ColorAdjust[5]); + if (rc != 6) + error(1, "Color Adjust error: need 6 parms for " + "-a ,,,,,, but got '%s'\n", + optarg); + for (i = 0; i < 6; ++i) + if (ColorAdjust[i] < 0 || ColorAdjust[i] > 100) + error(1, "Color Adjust out of range 0-100 for" + " parameter %d\n", i); + break; + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'z': Model = atoi(optarg); + if (Model < 0 || Model > MODEL_LAST) + error(1, "Illegal value '%s' for -z\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + Bpp = ResX / 600; + //ResX = 600; + if (0 && SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + + switch (Duplex) + { + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + // Handle odd page count + if ( (PageNum & 1) == 1) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + debug(1, "EvenPage: %d %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e); + + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2slx-wrapper.1in b/foo2slx-wrapper.1in new file mode 100644 index 0000000..966ec6f --- /dev/null +++ b/foo2slx-wrapper.1in @@ -0,0 +1,196 @@ +'\" t +.TH foo2slx-wrapper 1 "${MODpage}" "foo2slx-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2slx-wrapper \- Convert Postscript into a SLX printer stream +.SH SYNOPSIS +.B foo2slx-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2slx-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2slx\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to Software Imaging K.K. SLX printer format +for driving the Lexmark C500 network color laser printer +and other SLX-based printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media SLX +_ +plain 0 +transparency 1 +labels 2 +thick1 3 +envelope1 4 +thin 5 +thick2 6 +envelope2 7 +middle 8 +special 9 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [6]. +.TS +box; +| n l | n l. +6 letter 2 A4 +9 legal 4 B5 +8 executive 5 B5iso +10 env #10 11 env DL +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [0]. +.TS +box; +| n l | n l. +0 auto 1 cassette1 +.TE +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2slx\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the ZjStream. +\fBfoo2slx-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. (WORK IN PROGRESS). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2slx\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome ZjStream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2slx-wrapper testpage.ps > testpage.zm +slxdecode < testpage.zm +lpr -P raw testpage.zm +.fi +.RE +.P +Create a color ZjStream stream from a Postscript document: + +.RS +.nf +foo2slx-wrapper -c testpage.ps > testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2slx-wrapper +.SH SEE ALSO +.BR foo2slx (1), +.BR slxdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLSLX}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2slx-wrapper.in b/foo2slx-wrapper.in new file mode 100755 index 0000000..0a3f143 --- /dev/null +++ b/foo2slx-wrapper.in @@ -0,0 +1,728 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2slx-wrapper.in,v 1.22 2011/01/14 23:21:39 rick Exp $' + +# +# Printer Notes: +# +# Lexmark C500 - +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2slx +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 0=auto, 1=cassette1 + Code numbers may vary with printer model. +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=0 +COPIES=1 +PAPER=6 +RES=600x600 +SOURCE=0 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE=default +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +NUP_ORIENT= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + ;; +8.1*) + DEFAULTCOLORMODE=10 + QUALITY=1 + ;; +*) DEFAULTCOLORMODE=10 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Vh?" opt +do + case $opt in + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2slx -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate model code +# +case "$MODEL" in +0|1) ;; +*) error "Unknown model code $MODEL";; +esac + +# +# Validate media code +# +case "$MEDIA" in +0|plain|standard) MEDIA=0;; +1|transparency) MEDIA=1;; +2|labels) MEDIA=2;; +9|special) MEDIA=9;; +5|thin) MEDIA=5;; +8|middle) MEDIA=8;; +3|thick1) MEDIA=3;; +6|thick2) MEDIA=6;; +4|envelope1) MEDIA=4;; +7|envelope2) MEDIA=7;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|cassette1) SOURCE=1;; +0|auto) SOURCE=0;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=255; paper=letter; + MEDIA=4 + set_clipping 2 100 2 100 + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=255; paper=letter; + MEDIA=4 + set_clipping 2 100 2 100 + ;; +6|letter) PAPER=6; paper=letter; XDIM="10200"; YDIM="6600" + case "$MODEL" in + 0) set_clipping 204 102 204 106;; + 1) set_clipping 192 96 192 96;; + # 1) set_clipping 96 96 288 96;; + esac + ;; +2|a4|A4) PAPER=2; paper=a4; XDIM="9920"; YDIM="7016" + case "$MODEL" in + 0) set_clipping 200 100 200 100 ;; + 1) set_clipping 192 96 192 96;; + esac + ;; +13|a5|A5) PAPER=13; paper=a5; XDIM="6992"; YDIM="4960" + case "$MODEL" in + 0) set_clipping 200 100 200 100;; + 1) set_clipping 192 96 192 96;; + esac + ;; +4|b5|B5) PAPER=4; paper=b5; XDIM="8598"; YDIM="6070" + case "$MODEL" in + 0) set_clipping 207 107 207 107;; + 1) set_clipping 192 96 192 96;; + esac + ;; +5|b5iso) PAPER=5; paper=b5iso; XDIM="8220"; YDIM="6024" + case "$MODEL" in + 0) set_clipping 207 107 207 107;; + 1) set_clipping 192 96 192 96;; + esac + ;; +8|executive) PAPER=8; paper=executive; XDIM="8700"; YDIM="6300" + case "$MODEL" in + 0) set_clipping 206 102 206 102;; + 1) set_clipping 192 96 192 96;; + esac + ;; +9|legal) PAPER=9; paper=legal; XDIM="10200"; YDIM="8400" + case "$MODEL" in + 0) set_clipping 204 102 204 106;; + 1) set_clipping 192 96 192 96;; + esac + ;; +10|"env#10") PAPER=10; paper=env10; XDIM="4950"; YDIM="5700" + case "$MODEL" in + 0) set_clipping 171 78 171 78;; + 1) set_clipping 171 78 171 78;; + esac + ;; +11|envDL) PAPER=11; paper=envDL; XDIM="5200"; YDIM="5200" + case "$MODEL" in + 0) set_clipping 176 84 176 84;; + 1) set_clipping 176 84 176 84;; + esac + ;; + +28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" + case "$MODEL" in + 0) set_clipping 170 80 169 80;; + 1) set_clipping 170 80 169 80;; + esac + ;; +34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" + case "$MODEL" in + 0) set_clipping 174 74 174 74;; + 1) set_clipping 174 74 174 74;; + esac + ;; +37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" + case "$MODEL" in + 0) set_clipping 174 78 173 78;; + 1) set_clipping 174 78 173 78;; + esac + ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none | none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac + case "$GAMMAFILE" in + default) GAMMAFILE=lexRPCA2000.icm;; + esac +fi + +CRDBASE="$PREFIX/share/foo2slx/crd" +case "$RES" in + 600x600) SCREEN=screen1200.ps;; + 1200x600) SCREEN=screen1200.ps;; +esac + +PSTOPS_OPTS="-n" + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none | none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac + ;; +1|photo) + # Photo + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr125,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +2|graphics) + # Photo and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kh.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +3|text) + # Graphic and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,50-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kx.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +4|tonersave) + # Reduced toner + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,0-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2slx -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2slx -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE +fi + +exit 0 diff --git a/foo2slx.1in b/foo2slx.1in new file mode 100644 index 0000000..5a431e0 --- /dev/null +++ b/foo2slx.1in @@ -0,0 +1,163 @@ +'\" t +.TH foo2slx 1 "${MODpage}" "foo2slx ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2slx \- Convert Ghostscript pbmraw or bitcmyk format into a +SLX printer stream +.SH SYNOPSIS +.B foo2slx +.RI [ options "] <" pbmraw-file " >" slx-file +.sp 1 +.B foo2slx +.RI [ options "] <" bitcmyk-file " >" slx-file +.sp 1 +.B foo2slx +.RI [ options "] <" pksmraw-file " >" slx-file +.SH DESCRIPTION +.B foo2slx +converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome +or color SLX streams, +for driving the Lexmark C500 network color laser printer +and other SLZ-based printers. The SLX stream is a variant of ZjStream +produced by Software Imaging K.K. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [0]. +.TS +l l l +l n n. +_ +Media SLX +_ +plain 0 +transparency 1 +labels 2 +thick1 3 +envelope1 4 +thin 5 +thick2 6 +envelope2 7 +middle 8 +special 9 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [6]. +.TS +box; +| n l | n l. +6 letter 2 A4 +9 legal 4 B5 +8 executive 5 B5iso +10 env #10 11 env DL +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [0]. +.TS +| n l | n l. +0 auto 1 cassette1 +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2slx\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.SS Debugging Options +These options are used for debugging \fBfoo2slx\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white SLX stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zm +.fi +.RE +.P +Create a color SLX stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2slx +.SH SEE ALSO +.BR foo2slx-wrapper (1), +.BR slxdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLSLX}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2slx.c b/foo2slx.c new file mode 100644 index 0000000..60952b1 --- /dev/null +++ b/foo2slx.c @@ -0,0 +1,1574 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Software Imaging K.K. SLX-stream format. + +With this utility, you can print to some Lexmark printers, such as these: + - Lexmark C500 B/W and Color + +AUTHORS +This program began life as"foo2zjs' and was converted to drive +Lexmark C500 printers. + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2slx.c,v 1.24 2011/06/09 13:02:24 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include "jbig.h" +#include "slx.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 1200; +int ResY = 600; +int Bpp = 1; +int PaperCode = DMPAPER_LETTER; +int PageWidth = 1200 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_STANDARD; +char *Username = NULL; +char *Filename = NULL; +int Mode = 0; + #define MODE_MONO 1 + #define MODE_COLOR 2 +int Model = 0; + #define MODEL_2300DL 0 + #define MODEL_HP1020 1 + #define MODEL_LAST 1 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 0; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; +int RealWidth; +int EconoMode = 0; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; +off_t SeekMedia; + +long JbgOptions[5] = +{ + /* Order */ + // JBG_ILEAVE | JBG_SMID, + 0, + /* Options */ + // JBG_DELAY_AT | JBG_LRLTWO | JBG_TPDON | JBG_TPBON | JBG_DPON, + JBG_DELAY_AT | JBG_TPBON, + /* L0 */ + 128, + /* MX */ + 0, //16, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2slx [options] slx-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome SLX stream,\n" +" for driving the Lexmark C500 network color laser printer\n" +" and other SLX-based and Lexmark black and white printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zm\n" +"\n" +" foo2slx [options] slx-file\n" +" foo2slx [options] slx-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color SLX stream,\n" +" for driving the Lexmark C500 network color laser printer.\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-c Force color mode if autodetect doesn't work\n" +// "-d duplex Duplex code to send to printer [%d]\n" +// " 1=off, 2=longedge, 3=shortedge\n" +// " 4=manual longedge, 5=manual shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 0=plain, 1=transparency, 2=labels, 3=thick1, 4=envelope1\n" +" 5=thin, 6=thick2, 7=envelope2, 8=middle, 9=special\n" +"-p paper Paper code to send to printer [%d]\n" +" 2=a4, 4=b5, 5=b5iso, 6=letter, 8=executive, 9=legal,\n" +" 10=env#10, 11=envDL\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=upper 2=lower 4=manual 7=auto\n" +" Code numbers may vary with printer model\n" +// "-t Draft mode. Every other pixel is white.\n" +// "-J filename Filename string to send to printer [%s]\n" +// "-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +// "-P Do not output START_PLANE codes. May be needed by some\n" +// " some black and white only printers.\n" +// "-X padlen Add extra zero padding to the end of BID segments [%d]\n" +// "-z model Model: 0=2300DL 1=hp1020 [%d]\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + // , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + // , Filename ? Filename : "" + // , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + // , ExtraPad + // , Model + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +static void +chunk_write_rsvd(unsigned long type, unsigned int rsvd, + unsigned long items, unsigned long size, FILE *fp) +{ + SL_HEADER chunk; + int rc; + + chunk.type = be32(type); + chunk.items = be32(items); + chunk.size = be32(sizeof(SL_HEADER) + size); + chunk.reserved = be16(rsvd); + chunk.signature = 0xa5a5; + rc = fwrite(&chunk, 1, sizeof(SL_HEADER), fp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); +} + +static void +chunk_write(unsigned long type, unsigned long items, unsigned long size, + FILE *fp) +{ + chunk_write_rsvd(type, 0, items, size, fp); +} + +static void +item_uint32_write(unsigned short item, unsigned long value, FILE *fp) +{ + SL_ITEM_UINT32 item_uint32; + int rc; + + item_uint32.header.size = be32(sizeof(SL_ITEM_UINT32)); + item_uint32.header.item = be16(item); + item_uint32.header.type = SLIT_UINT32; + item_uint32.header.param = 0; + item_uint32.value = be32(value); + rc = fwrite(&item_uint32, 1, sizeof(SL_ITEM_UINT32), fp); + if (rc == 0) error(1, "fwrite(2): rc == 0!\n"); +} + +static void +item_int32_write_pad(unsigned short item, long value, int pad, FILE *fp) +{ + SL_ITEM_INT32 item_int32; + int rc; + + item_int32.header.size = be32(sizeof(SL_ITEM_INT32) + pad); + item_int32.header.item = be16(item); + item_int32.header.type = SLIT_INT32; + item_int32.header.param = 0; + item_int32.value = be32(value); + rc = fwrite(&item_int32, 1, sizeof(SL_ITEM_INT32), fp); + if (rc == 0) error(1, "fwrite(3): rc == 0!\n"); + while (pad--) + fputc(0, fp); +} + +int +item_str_write(unsigned short item, char *str, FILE *fp) +{ + int lenpadded; + SL_ITEM_HEADER hdr; + int rc; + + lenpadded = 4 * ((strlen(str)+1 + 3) / 4); + + hdr.size = be32(sizeof(hdr) + lenpadded); + hdr.item = be16(item); + hdr.type = SLIT_STRING; + hdr.param = 0; + if (fp) + { + rc = fwrite(&hdr, sizeof(hdr), 1, fp); + if (rc == 0) error(1, "fwrite(4): rc == 0!\n"); + rc = fwrite(str, lenpadded, 1, fp); + if (rc == 0) error(1, "fwrite(5): rc == 0!\n"); + } + return (sizeof(hdr) + lenpadded); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +int +write_plane(int planeNum, BIE_CHAIN **root, FILE *fp) +{ + BIE_CHAIN *current = *root; + BIE_CHAIN *next; + int i, len, pad_len; + int rc; + #define PADTO 4 + + debug(3, "Write Plane %d\n", planeNum); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + if (planeNum) + { + // chunk_write(SLT_START_PLANE, 1, 1*sizeof(SL_ITEM_UINT32), fp); + // item_uint32_write(SLI_PLANE, planeNum, fp); + } + + for (current = *root; current && current->len; current = current->next) + { + if (current == *root) + { + chunk_write(SLT_JBIG_BIH, 0, current->len, fp); + if (current->len) + { + rc = fwrite(current->data, 1, current->len, fp); + if (rc == 0) error(1, "fwrite(6): rc == 0!\n"); + } + } + else + { + len = current->len; + next = current->next; + if (!next || !next->len) + pad_len = ExtraPad + PADTO * ((len+PADTO-1)/PADTO) - len; + else + pad_len = 0; + chunk_write(SLT_JBIG_BID, 0, len + pad_len, fp); + if (len) + { + rc = fwrite(current->data, 1, len, fp); + if (rc == 0) error(1, "fwrite(7): rc == 0!\n"); + } + for (i = 0; i < pad_len; i++ ) + putc(0, fp); + } + } + + free_chain(*root); + + chunk_write(SLT_END_JBIG, 0, 0, fp); + // if (planeNum) + // chunk_write(SLT_END_PLANE, 0, 0, fp); + return 0; +} + +void +start_page(BIE_CHAIN **root, int nbie, FILE *ofp) +{ + BIE_CHAIN *current = *root; + unsigned long w, h; + static int pageno = 0; + int nitems; + int customx = 0, customy = 0; + + /* error handling */ + if (!current) + error(1, "There is no JBIG!\n"); + if (!current->next) + error(1, "There is no or wrong JBIG header!\n"); + if (current->len != 20 ) + error(1,"wrong BIH length\n"); + + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + debug(9, "start_page: w x h = %d x %d\n", w, h); + + nitems = 14; + if (LogicalOffsetX != 0) + ++nitems; + if (LogicalOffsetY != 0) + ++nitems; + + if (PaperCode == 255) + { + customx = PageWidth; + customy = PageHeight; + } + + chunk_write(SLT_START_PAGE, + nitems, nitems * sizeof(SL_ITEM_UINT32), ofp); + + item_uint32_write(SLI_DMPAPER, PaperCode, ofp); + item_uint32_write(SLI_CUSTOM_X, customx, ofp); + item_uint32_write(SLI_CUSTOM_Y, customy, ofp); + item_uint32_write(SLI_DMCOPIES, Copies, ofp); + item_uint32_write(SLI_DMDEFAULTSOURCE, SourceCode, ofp); + + item_uint32_write(SLI_DMMEDIATYPE, MediaCode, ofp); + if ((PageNum & 1) == 0 && EvenPages) + SeekMedia = ftell(EvenPages) - 4; + item_uint32_write(SLI_NBIE, (nbie==4) ? 14 : 0, ofp); + item_uint32_write(SLI_RESOLUTION_X, ResX, ofp); + item_uint32_write(SLI_RESOLUTION_Y, ResY, ofp); + if (LogicalOffsetX != 0) + item_uint32_write(SLI_OFFSET_X, LogicalOffsetX, ofp); + + if (LogicalOffsetY != 0) + item_uint32_write(SLI_OFFSET_Y, LogicalOffsetY, ofp); + item_uint32_write(SLI_RASTER_X, RealWidth, ofp); + item_uint32_write(SLI_RASTER_Y, h, ofp); + item_uint32_write(SLI_VIDEO_X, RealWidth / Bpp,ofp); + item_uint32_write(SLI_VIDEO_Y, h, ofp); + + item_uint32_write(0x10f, 1, ofp); + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(FILE *ofp) +{ + chunk_write(SLT_END_PAGE, 0, 0, ofp); +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + + start_page(root, nbie, ofp); + + if (root4) + write_plane(4, root4, ofp); + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root2) + write_plane(2, root2, ofp); + if (root3) + write_plane(3, root3, ofp); + + end_page(ofp); + return 0; +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 20000000; + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +void +start_doc(FILE *fp) +{ + char header[4] = "\245SLX"; // Big-endian data + int nitems; + int size; + int pad1 = 12; + int rc; + + rc = fwrite(header, 1, sizeof(header), fp); + if (rc == 0) error(1, "fwrite(8): rc == 0!\n"); + + nitems = 12; + size = nitems * sizeof(SL_ITEM_UINT32) + pad1; + + chunk_write(SLT_START_DOC, nitems, size, fp); + + item_uint32_write(SLI_PAGECOUNT, -1, fp); + item_uint32_write(SLI_DMDUPLEX, 0, fp); + item_uint32_write(SLI_DMCOLLATE, 0, fp); + item_int32_write_pad(0x03, 0, pad1, fp); + item_int32_write_pad(0x04, 0, 0, fp); + item_uint32_write(0x05, 0, fp); + item_uint32_write(0x06, 0, fp); + item_uint32_write(0x07, 1, fp); + item_uint32_write(0x08, 0, fp); + item_uint32_write(0x09, 0, fp); + item_uint32_write(SLI_COUNT, 1, fp); + item_uint32_write(0x0e, 0, fp); +} + +void +end_doc(FILE *fp) +{ + int nitems; + + nitems = 0; + chunk_write(SLT_END_DOC , nitems, nitems * sizeof(SL_ITEM_UINT32), fp); + + // item_uint32_write(0x8112, 1, fp); +} + +void +load_tray2(FILE *fp) +{ + int nitems; + + nitems = 0; + chunk_write(SLT_2600N_PAUSE, nitems, nitems * sizeof(SL_ITEM_UINT32), fp); +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl = (w + 7) / 8; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, w, h); + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + int rc; + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + rc = fwrite(plane[i], bpl*h, 1, dfp); + if (rc == 0) error(1, "fwrite(9): rc == 0!\n"); + fclose(dfp); + } + } + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + struct jbg_enc_state se; + + RealWidth = w; + if (Model == MODEL_HP1020) + w = (w + 127) & ~127; + + if (SaveToner) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + if (Model == MODEL_2300DL) + bpl16 = bpl; + else + bpl16 = (bpl + 15) & ~15; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + *bitmaps = buf; + + debug(9, "w x h = %d x %d\n", w, h); + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + if (Duplex == DMDUPLEX_MANUALLONG && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if ((PageNum & 1) == 0 && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + plane[i] = malloc(bpl * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + int rc; + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + rc = fwrite(plane[i], bpl*h, 1, dfp); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int i, j; + + while ( (c = getopt(argc, argv, + "cd:g:n:m:p:r:s:tu:l:z:L:ABPJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'z': Model = atoi(optarg); + if (Model < 0 || Model > MODEL_LAST) + error(1, "Illegal value '%s' for -z\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + if (Model == MODEL_HP1020) + { + Bpp = ResX / 600; + ResX = 600; + if (SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + } + + switch (Duplex) + { + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + DWORD media; + int rc; + + // Handle odd page count + if ( (PageNum & 1) == 1) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + /* + * Manual Pause + */ + if (Model == MODEL_HP1020) + load_tray2(stdout); + + fseek(EvenPages, SeekMedia, 0L); + media = be32(DMMEDIA_LETTERHEAD); + rc = fwrite(&media, 1, sizeof(DWORD), EvenPages); + if (rc == 0) error(1, "fwrite(12): rc == 0!\n"); + + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + debug(1, "EvenPage: %d %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e); + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2xqx-wrapper.1in b/foo2xqx-wrapper.1in new file mode 100644 index 0000000..bef7ba5 --- /dev/null +++ b/foo2xqx-wrapper.1in @@ -0,0 +1,169 @@ +'\" t +.TH foo2xqx-wrapper 1 "${MODpage}" "foo2xqx-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2xqx-wrapper \- Convert Postscript into a XQX printer stream +.SH SYNOPSIS +.B foo2xqx-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2xqx-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2xqx\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to XQX printer format +for driving +the HP LaserJet P1005/P1006/P1007/P1008, +the HP LaserJet P1505, +the HP LaserJet P2014, +the HP LaserJet M1005 MFP, +the HP LaserJet M1120 MFP, +the HP LaserJet Pro M1212nf MFP, +and other XQX-based printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l l +l n n. +_ +Media M1005 +_ +standard 1 +transparency 2 +envelope 257 +letterhead 259 +thick 261 +postcard 262 +labels 263 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 9 A4 +5 legal 11 A5 +7 executive 13 B5 +20 env #10 27 env DL +28 env C5 34 env B5 +37 env Monarch 257 16k 197x273 +263 16k 184x260 263 16k 195x270 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [7]. +.TS +box; +| n l | n l. +1 upper 4 manual +2 lower 7 auto +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-T\0 density +Print density (1-5). The default is 3 (medium). +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2xqx\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the ZjStream. +\fBfoo2xqx-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.SS Debugging Options +These options are used for debugging \fBfoo2xqx\fP and its wrapper. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome ZjStream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2xqx-wrapper testpage.ps > testpage.xqx +xqxdecode < testpage.xqx +lpr -P raw testpage.xqx +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2xqx-wrapper +.SH SEE ALSO +.BR foo2xqx (1), +.BR xqxdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLXQX}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2xqx-wrapper.in b/foo2xqx-wrapper.in new file mode 100755 index 0000000..d79471d --- /dev/null +++ b/foo2xqx-wrapper.in @@ -0,0 +1,693 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2xqx-wrapper.in,v 1.41 2013/12/25 21:00:11 rick Exp $' + +# +# Printer Notes: +# +# HP LaserJet P1005 - +# HP LaserJet P1006 - +# HP LaserJet P1007 - +# HP LaserJet P1008 - +# HP LaserJet P1505 - +# HP LaserJet P1505n - +# HP LaserJet P2014 - +# HP LaserJet P2014n - +# HP LaserJet M1005 MFP - +# HP LaserJet M1120 MFP - +# HP LaserJet Pro M1212nf MFP - +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2xqx +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=upper, 2=lower, 4=manual, 7=auto + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-T density Print density (1-5) [$DENSITY] +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=0 +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +7*) DEFAULTCOLORMODE=10 + DEFAULTCOLORMODE=2 + ;; +*) DEFAULTCOLORMODE=2 + ;; +esac +QUALITY=1 +QUALITY=wts +MEDIA=1 +COPIES=1 +PAPER=1 +RES=1200x600 +SOURCE=7 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE= +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +DENSITY=3 #Medium +NUP_ORIENT= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case `$GSBIN --version` in +8.1*) + QUALITY=1 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tT:ABS:D:G:I:PX:Vh?" opt +do + case $opt in + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + T) DENSITY="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2xqx -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate media code +# +case "$MEDIA" in +1|standard) MEDIA=1;; +2|transparency) MEDIA=2;; +3|glossy) MEDIA=3;; +257|envelope) MEDIA=257;; +259|letterhead) MEDIA=259;; +261|thickstock) MEDIA=261;; +262|postcard) MEDIA=262;; +263|labels) MEDIA=263;; +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|upper) SOURCE=1;; +4|manual) SOURCE=4;; +7|auto) SOURCE=7;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Validate Print Density +# +case "$DENSITY" in +1|2|3|4|5) ;; +*) error "Illegal print density (-T) $DENSITY";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +# The Minolta 2200 DL is sensitive to its unprintable regions, +# and will pixel skew if you try to print there. +# +# The HP1000 will print blank pages when asked to print into its +# unprintable region. +# +# The Minolta 2300 DL doesn't care if print into the unprintable +# region. It will do the clipping itself. This is as it should be. +# But it won't hurt it if we do the clipping here. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=359; paper=letter; + set_clipping 2 84 2 84 + ;; +Custom*) + # PS job + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=359; paper=letter; + set_clipping 2 84 2 84 + ;; +1|letter) PAPER=1; paper=letter; XDIM="10200"; YDIM="6600" + set_clipping 177 84 177 84 + ;; +5|legal) PAPER=5; paper=legal; XDIM="10200"; YDIM="8400" + set_clipping 177 96 177 96 + ;; +7|executive) PAPER=7; paper=executive; XDIM="8700"; YDIM="6300" + set_clipping 192 96 192 96 + ;; +9|a4|A4) PAPER=9; paper=a4; XDIM="9920"; YDIM="7016" + set_clipping 176 84 176 84 + ;; +11|a5|A5) PAPER=11; paper=a5; XDIM="6992"; YDIM="4960" + set_clipping 192 96 192 96 + ;; +13|b5|B5) PAPER=13; paper=b5; XDIM="8598"; YDIM="6070" + set_clipping 192 96 192 96 + ;; +20|"env#10") PAPER=20; paper=env10; XDIM="4950"; YDIM="5700" + set_clipping 171 78 171 78 + ;; +27|envDL) PAPER=27; paper=envDL; XDIM="5200"; YDIM="5200" + set_clipping 176 84 176 84 + ;; +28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" + set_clipping 170 80 169 80 + ;; +34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" + set_clipping 174 74 174 74 + ;; +37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" + set_clipping 174 78 173 78 + ;; +257|16k197x273) PAPER=257; paper=executive;XDIM="9306"; YDIM="6448" + set_clipping 173 84 173 84 + ;; +263|16k184x260) PAPER=263; paper=executive;XDIM="8692"; YDIM="6142" + set_clipping 122 87 122 87 + ;; +264|16k195x270) PAPER=264; paper=executive;XDIM="9212"; YDIM="6378" + set_clipping 126 87 126 87 + ;; +*) error "Unimplemented paper code $PAPER";; +esac +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps" + else + GAMMAFILE= + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + 0) COLORMODE=$DEFAULTCOLORMODE;; + esac +fi + +CRDBASE="$PREFIX/share/foo2zjs/crd" +case "$RES" in + 600x600) SCREEN=screen1200.ps;; + 1200x600) SCREEN=screen1200.ps;; + 2400x600) SCREEN=screen2400.ps;; +esac + +PSTOPS_OPTS="-n" + +case "$COLORMODE" in +"") + # Monochrome + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + none) + GAMMAFILE= + ;; + esac + ;; +1|photo) + # Photo + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr125,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +2|graphics) + # Photo and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kh.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +3|text) + # Graphic and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,50-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kx.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +4|tonersave) + # Reduced toner + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,0-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2xqx -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER -T$DENSITY \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2xqx -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER -T$DENSITY $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE +fi + +exit 0 diff --git a/foo2xqx.1in b/foo2xqx.1in new file mode 100644 index 0000000..6c60c89 --- /dev/null +++ b/foo2xqx.1in @@ -0,0 +1,168 @@ +'\" t +.TH foo2xqx 1 "${MODpage}" "foo2xqx ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2xqx \- Convert Ghostscript pbmraw into a +XQX printer stream +.SH SYNOPSIS +.B foo2xqx +.RI [ options "] <" pbmraw-file " >" xqx-file +.SH DESCRIPTION +.B foo2xqx +converts Ghostscript pbmraw to monochrome +XQX streams, +for driving +the HP LaserJet P1005/P1006/P1007/P1008, +the HP LaserJet P1505, +the HP LaserJet P2014, +the HP LaserJet M1005 MFP, +the HP LaserJet M1120 MFP, +the HP LaserJet Pro M1212nf MFP, +and other XQX-based printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l l l +l n n. +_ +Media M1005 +_ +standard 1 +transparency 2 +envelope 257 +letterhead 259 +thick 261 +postcard 262 +labels 263 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [1]. +.TS +box; +| n l | n l. +1 letter 9 A4 +5 legal 11 A5 +7 executive 13 B5 +20 env #10 27 env DL +28 env C5 34 env B5 +37 env Monarch 257 16k 197x273 +263 16k 184x260 264 16k 195x270 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [7]. +.TS +box; +| n l | n l. +1 upper 4 manual +2 lower 7 auto +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-T\0 density +Print density (1-5). The default is 3 (medium). +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2xqx\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.SS Debugging Options +These options are used for debugging \fBfoo2xqx\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white XQX stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2xqx -r1200x600 -g10200x6600 -p1 >testpage.zm +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2xqx +.SH SEE ALSO +.BR foo2xqx-wrapper (1), +.BR xqxdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLXQX}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2xqx.c b/foo2xqx.c new file mode 100644 index 0000000..e9f8239 --- /dev/null +++ b/foo2xqx.c @@ -0,0 +1,1513 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics ZJ-stream format. There +is some information about the ZJS format at http://ddk.zeno.com. + +With this utility, you can print to some HP printers, such as these: + - HP LaserJet M1005 MFP B/W + +AUTHORS +This program began life as Robert Szalai's 'pbmtozjs' program. It +also uses Markus Kuhn's jbig-kit compression library (included, but +also available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +The program was overhauled by Rick Richardson to limit data chunk size +to 65536 bytes, add command line options, add color support, +and other miscellaneous features. + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2xqx.c,v 1.25 2011/06/09 13:50:09 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#include "jbig.h" +#include "xqx.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 600; +int ResY = 600; +int Bpp = 1; +int PaperCode = DMPAPER_LETTER; +int PageWidth = 1200 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_PLAIN; +char *Username = NULL; +char *Filename = NULL; +int Mode = 0; + #define MODE_MONO 1 + #define MODE_COLOR 2 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 16; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; +int RealWidth; +int EconoMode = 0; +int PrintDensity = 3; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e, pause; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; +int DuplexPause = 0; + +long JbgOptions[5] = +{ + /* Order */ + JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPDON | JBG_TPBON | JBG_DPON, + /* L0 */ + 128, + /* MX */ + 16, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2xqx [options] xqx-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome ZJS stream,\n" +" for driving the HP LaserJet M1005 MFP laser printer.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2xqx -r1200x600 -g10200x6600 -p1 >testpage.zm\n" +"\n" +" foo2xqx [options] xqx-file\n" +" foo2xqx [options] xqx-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color ZJS stream,\n" +" for driving the HP LaserJet M1005 MFP color laser printer\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2xqx -r1200x600 -g10200x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" 1=standard 2=transparency 3=glossy 257=envelope\n" +" 259=letterhead 261=thickstock 262=postcard 263=labels\n" +"-p paper Paper code to send to printer [%d]\n" +" 1=letter, 5=legal 7=executive 9=A4 11=A5 13=B5\n" +" 20=env#10, 27=envDL 28=envC5 34=envB5 37=envMonarch\n" +" 257=16k197x273, 263=16k184x260, 264=16k195x270\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=upper 2=lower 4=manual 7=auto\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +"-T density Print density (1-5) [%d].\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , PrintDensity + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , ExtraPad + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +static void +chunk_write(unsigned long type, unsigned long items, FILE *fp) +{ + XQX_HEADER chunk; + int rc; + + chunk.type = be32(type); + chunk.items = be32(items); + rc = fwrite(&chunk, 1, sizeof(XQX_HEADER), fp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); +} + +static void +item_uint32_write(unsigned long item, unsigned long value, FILE *fp) +{ + XQX_ITEM_UINT32 item_uint32; + int rc; + + item_uint32.header.type = be32(item); + item_uint32.header.size = be32(sizeof(DWORD)); + item_uint32.value = be32(value); + rc = fwrite(&item_uint32, 1, sizeof(XQX_ITEM_UINT32), fp); + if (rc == 0) error(1, "fwrite(2): rc == 0!\n"); +} + +static void +item_bytelut_write(unsigned long item, unsigned long len, BYTE *buf, FILE *fp) +{ + XQX_ITEM_HEADER header; + int rc; + + header.type = be32(item); + header.size = be32(len); + rc = fwrite(&header, 1, sizeof(XQX_ITEM_HEADER), fp); + if (rc == 0) error(1, "fwrite(3): rc == 0!\n"); + rc = fwrite(buf, 1, len, fp); + if (rc == 0) error(1, "fwrite(4): rc == 0!\n"); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +int +write_plane(int planeNum, BIE_CHAIN **root, FILE *fp) +{ + BIE_CHAIN *current = *root; + //BIE_CHAIN *next; + int len; + int first; + BYTE *bih; + int rc; + + debug(3, "Write Plane %d\n", planeNum); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + bih = current->data; + first = 1; + for (current = *root; current && current->len; current = current->next) + { + if (current == *root) + { + } + else + { + len = current->len; + //next = current->next; + + chunk_write(XQX_START_PLANE, 4, fp); + item_uint32_write(0x80000000, first ? 64 : 48, fp); + item_uint32_write(0x40000000, 0, fp); + if (first) + item_bytelut_write(XQXI_BIH, 20, bih, fp); + else + item_uint32_write(0x40000003, 1, fp); + item_uint32_write(XQXI_END, 0xdeadbeef, fp); + + chunk_write(XQX_JBIG, len, fp); + if (len) + { + rc = fwrite(current->data, 1, len, fp); + if (rc == 0) error(1, "fwrite(5): rc == 0!\n"); + } + + chunk_write(XQX_END_PLANE, 0, fp); + first = 0; + } + } + + free_chain(*root); + + return 0; +} + +void +start_page(BIE_CHAIN **root, int nbie, FILE *ofp) +{ + BIE_CHAIN *current = *root; + unsigned long w, h; + int nitems; + int pause = 0; + static int pageno = 0; + + /* error handling */ + if (!current) + error(1, "There is no JBIG!\n"); + if (!current->next) + error(1, "There is no or wrong JBIG header!\n"); + if (current->len != 20 ) + error(1,"wrong BIH length\n"); + + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + + nitems = 15; + if (Duplex != DMDUPLEX_OFF) + ++nitems; + pause = (PageNum == 1) ? 0 : 1; + + chunk_write(XQX_START_PAGE, nitems, ofp); + item_uint32_write(0x80000000, (Duplex == DMDUPLEX_OFF) ? 180 : 192, ofp); + item_uint32_write(0x20000005, 1, ofp); + item_uint32_write(XQXI_DMDEFAULTSOURCE, SourceCode, ofp); + item_uint32_write(XQXI_DMMEDIATYPE, MediaCode, ofp); + item_uint32_write(0x20000007, 1, ofp); + + item_uint32_write(XQXI_RESOLUTION_X, ResX, ofp); + item_uint32_write(XQXI_RESOLUTION_Y, ResY, ofp); + item_uint32_write(XQXI_RASTER_X, w, ofp); + item_uint32_write(XQXI_RASTER_Y, h, ofp); + item_uint32_write(XQXI_VIDEO_BPP, Bpp, ofp); + + item_uint32_write(XQXI_VIDEO_X, RealWidth / Bpp,ofp); + item_uint32_write(XQXI_VIDEO_Y, h, ofp); + item_uint32_write(XQXI_ECONOMODE, EconoMode, ofp); + if (Duplex != DMDUPLEX_OFF) + { + item_uint32_write(XQXI_DUPLEX_PAUSE, pause, ofp); + if ((PageNum & 1) == 0 && EvenPages) + { + debug(1, "EvenPage: page %d seekindex %d\n", PageNum, SeekIndex); + SeekRec[SeekIndex].pause = ftell(EvenPages) - 4; + } + } + item_uint32_write(XQXI_DMPAPER, PaperCode, ofp); + item_uint32_write(XQXI_END, 0xdeadbeef, ofp); + + ++pageno; + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(FILE *ofp) +{ + chunk_write(XQX_END_PAGE, 0, ofp); +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + + start_page(root, nbie, ofp); + + if (root3) + write_plane(3, root3, ofp); + if (root2) + write_plane(2, root2, ofp); + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root4) + write_plane(4, root4, ofp); + + end_page(ofp); + return 0; +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 65536; // Printer does strange things otherwise. + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +void +start_doc(FILE *fp) +{ + char header[4] = ",XQX"; // Big-endian data + int nitems; + time_t now; + struct tm *tmp; + char datetime[14+1]; + + now = time(NULL); + tmp = localtime(&now); + strftime(datetime, sizeof(datetime), "%Y%m%d%H%M%S", tmp); + + fprintf(fp, "\033%%-12345X@PJL JOB\n"); + fprintf(fp, "@PJL SET JAMRECOVERY=OFF\n"); + fprintf(fp, "@PJL SET DENSITY=%d\n", PrintDensity); + fprintf(fp, "@PJL SET ECONOMODE=%s\n", EconoMode ? "ON" : "OFF"); + fprintf(fp, "@PJL SET RET=MEDIUM\n"); + fprintf(fp, "@PJL INFO STATUS\n"); + fprintf(fp, "@PJL USTATUS DEVICE = ON\n"); + fprintf(fp, "@PJL USTATUS JOB = ON\n"); + fprintf(fp, "@PJL USTATUS PAGE = ON\n"); + fprintf(fp, "@PJL USTATUS TIMED = 30\n"); + fprintf(fp, "@PJL SET JOBATTR=\"JobAttr4=%s\"", datetime); + fputc(0, fp); + fprintf(fp, "\033%%-12345X"); + fwrite(header, 1, sizeof(header), fp); + + nitems = 7; + + chunk_write(XQX_START_DOC, nitems, fp); + + item_uint32_write(0x80000000, 84, fp); + item_uint32_write(0x10000005, 1, fp); + item_uint32_write(0x10000001, 0, fp); + item_uint32_write(XQXI_DMDUPLEX, (Duplex != DMDUPLEX_OFF) + ? 2 : 0, fp); + item_uint32_write(0x10000000, 0, fp); + item_uint32_write(0x10000003, 1, fp); + item_uint32_write(XQXI_END, 0xdeadbeef, fp); +} + +void +end_doc(FILE *fp) +{ + int nitems; + + nitems = 0; + chunk_write(XQX_END_DOC , nitems, fp); + + fprintf(fp, "\033%%-12345X@PJL EOJ\n"); + fprintf(fp, "\033%%-12345X"); +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl = (w + 7) / 8; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, w, h); + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + struct jbg_enc_state se; + + RealWidth = w; + w = (w + 127) & ~127; + + if (SaveToner) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + *bitmaps = buf; + + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + if (Duplex == DMDUPLEX_MANUALLONG && (PageNum & 1) == 0) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if ((PageNum & 1) == 0 && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + plane[i] = malloc(bpl * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int i, j; + + while ( (c = getopt(argc, argv, + "cd:g:n:m:p:r:s:tT:u:l:L:ABPJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'T': PrintDensity = atoi(optarg); + if (PrintDensity < 1 || PrintDensity > 5) + error(1, "Illegal value '%s' for PrintDensity -T\n", + optarg); + break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + Bpp = ResX / 600; + ResX = 600; + if (SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + + switch (Duplex) + { + case DMDUPLEX_LONGEDGE: + case DMDUPLEX_SHORTEDGE: + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + DWORD pause; + + // Handle odd page count + if ( (PageNum & 1) == 1) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + /* + * Manual Pause + */ + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + int rc; + + debug(1, "EvenPage: %d %ld %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e, SeekRec[i].pause); + fseek(EvenPages, SeekRec[i].pause, 0L); + if (i == SeekIndex-1) + pause = be32(2); + else + pause = be32(3); + rc = fwrite(&pause, 1, sizeof(DWORD), EvenPages); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foo2zjs-pstops.1in b/foo2zjs-pstops.1in new file mode 100644 index 0000000..568ac88 --- /dev/null +++ b/foo2zjs-pstops.1in @@ -0,0 +1,54 @@ +.TH foo2zjs-pstops 1 "${MODpage}" "foo2zjs-pstops ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2zjs-pstops \- Add PS code for foo2*-wrapper +.SH SYNOPSIS +.B foo2zjs-pstops +.RI [ options "] [" file ] +.SH DESCRIPTION +Add PS code for foo2zjs-wrapper. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-a +Accurate screens code. +.TP +.BI \-c +CIE Color. +.TP +.BI \-n +Neuter CUPS cupsPSLevel2 +.TP +.BI \-r +Rotate 90 degrees clockwise. +.TP +.BI \-w +Well Tempered Screens code. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH FILES +.BR /usr/bin/foo2zjs-pstops +.SH SEE ALSO +.BR foo2hp2600-wrapper (1), +.BR foo2lava-wrapper (1), +.BR foo2oak-wrapper (1), +.BR foo2qpdl-wrapper (1), +.BR foo2slx-wrapper (1), +.BR foo2xqx-wrapper (1), +.BR foo2zjs-wrapper (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2zjs-pstops.sh b/foo2zjs-pstops.sh new file mode 100755 index 0000000..d35a34f --- /dev/null +++ b/foo2zjs-pstops.sh @@ -0,0 +1,177 @@ +#!/bin/sh + +VERSION='$Id: foo2zjs-pstops.sh,v 1.21 2013/07/31 17:41:47 rick Exp $' + +PROGNAME="$0" + +usage() { + cat <= 9.00) + -h ydimpts For rotate -r, y dimension points + -r Rotate 90 clockwise + -a Accurate Screens code + -c CIEColor + -n Neuter CUPS cupsPSLevel2 + -w Well Tempered Screens code + -D lvl Debug level +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "`basename $PROGNAME`: $1" >&2 + exit 1 +} + +debug() { + if [ $DEBUG -ge $1 ]; then + echo "`basename $PROGNAME`: $2" >&2 + fi +} + +# +# Use gsed instead of sed on Mac OSX +# +case `uname -s` in +Darwin) sed=gsed;; +FreeBSD) sed=gsed;; +*) sed=sed;; +esac + +# +# Process the options +# +DEBUG=0 +ROTATE90=0 +ACCURATE=0 +CIECOLOR=0 +NIXCUPS=0 +WTS=0 +GSVER=old +while getopts "9ach:nwrD:Vh?" opt +do + case $opt in + 9) GSVER=gs9;; + a) ACCURATE=1;; + c) CIECOLOR=1;; + h) YDIMpoints="$OPTARG";; + n) NIXCUPS=1;; + r) ROTATE90=1;; + w) WTS=1;; + D) DEBUG="$OPTARG";; + V) echo "$VERSION"; exit 0;; + h|\?) usage;; + esac +done +shift `expr $OPTIND - 1` + +if [ $NIXCUPS = 1 ]; then + n='s#^[^/]*cupsPSLevel2#false#' +else + n= +fi + +if [ $ROTATE90 = 1 ]; then + # %%currentpagedevice /PageSize get\ + # %%aload pop translate\ + r="1i\ + << /Install {\ + 0 $YDIMpoints translate\ + -90 rotate\ + } >> setpagedevice + " +else + r= +fi + +if [ "$GSVER" = "old" ]; then + ht='\ + <<\ + /AccurateScreens true\ + /HalftoneType 1\ + /HalftoneName (Round Dot Screen) cvn\ + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div}\ + /Frequency 137\ + /Angle 37\ + >> sethalftone + ' +else + ht='\ + /SpotDot { 180 mul cos exch 180 mul cos add 2 div } def\ + <<\ + /HalftoneType 5\ + /Cyan <<\ + /HalftoneType 1\ + /AccurateScreens true\ + /Frequency 150\ + /Angle 105\ + /SpotFunction /SpotDot load\ + >>\ + /Magenta <<\ + /HalftoneType 1\ + /AccurateScreens true\ + /Frequency 150\ + /Angle 165\ + /SpotFunction /SpotDot load\ + >>\ + /Yellow <<\ + /HalftoneType 1\ + /AccurateScreens true\ + /Frequency 150\ + /Angle 30\ + /SpotFunction /SpotDot load\ + >>\ + /Black <<\ + /HalftoneType 1\ + /AccurateScreens true\ + /Frequency 150\ + /Angle 45\ + /SpotFunction /SpotDot load\ + >>\ + /Default <<\ + /HalftoneType 1\ + /AccurateScreens true\ + /Frequency 150\ + /Angle 37\ + /SpotFunction /SpotDot load\ + >>\ + >> /Default exch /Halftone defineresource sethalftone + ' +fi + +if [ $WTS = 1 ]; then + w="/%%Page:[ ]*[ (]1[ )].*\$/ i\ + << /UseWTS true >> setuserparams \ + $ht + " +elif [ $ACCURATE = 1 ]; then + w="/%%Page:[ ]*[ (]1[ )].*\$/ i\ + << /UseWTS false >> setuserparams \ + $ht + " +else + w= +fi + +# +# Main Program +# +$sed \ + -e "$w" \ + -e "$n" \ + -e "$r" \ + $@ diff --git a/foo2zjs-wrapper.1in b/foo2zjs-wrapper.1in new file mode 100644 index 0000000..1648bf7 --- /dev/null +++ b/foo2zjs-wrapper.1in @@ -0,0 +1,272 @@ +'\" t +.TH foo2zjs-wrapper 1 "${MODpage}" "foo2zjs-wrapper ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2zjs-wrapper \- Convert Postscript into a ZJS printer stream +.SH SYNOPSIS +.B foo2zjs-wrapper +.RI [ options "] [" ps-file ] +.SH DESCRIPTION +.B foo2zjs-wrapper +is a Foomatic compatible printer wrapper for the \fBfoo2zjs\fP printer driver. +This script reads a Postscript \fIps-file\fP or standard input +and converts it to Zenographics ZjStream printer format +for driving the Minolta/QMS 2300 DL network color laser printer +and other Zenographics-based printers. +.P +This script can be used in a standalone fashion, but is intended to +be called from a printer spooler system which uses the Foomatic +printer database. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Print in color (else monochrome). +.TP +.BI \-C\0 colormode +Color correction mode [0]. +.TS +n l . +1 Photos (using m2300w CRDs) +2 Photos and text (using m2300w CRDs) +3 Graphics and text (using m2300w CRDs) +10 ICM color profile (using -G *.icm file) +.TE +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l r r r r r. +_ +Media 2300DL 2200DL HP 1018 HP P1102 HP +\^ HP 1005 HP 1020 HP P1606 CP1025 +\^ -z0 -z0 -z1 -z2 -z3 +_ +standard 1 1 1 1 1 +transparency 2 2 2 2 2 +envelope 257 na 267 267 267 +letterhead 259 na 513 513 513 +bond na na 260 260 260 +thick 261 4 261 na na +postcard 262 na na na na +rough na na 263 263 263 +heavy na na 262 262 262 +labels 263 3 263 265 265 +vellum na na 273 273 273 +medium na na na 282 282 +extraheavy na na na 283 283 +color na na 512 512 512 +light na na 258 258 258 +preprinted na na 514 514 514 +prepunched na na 515 515 515 +recycled na na 516 516 516 +.TE +.TP +.BI \-p\0 paper +Paper size code to send to printer [1]. +.TS +l r r r r. +_ +Paper MC 2300DL HP 1018 HP P1102 HP +\^ HP 1005 HP 1020 HP P1606 CP1025 +\^ -z0 -z1 -z2 -z3 +_ +letter 1 1 1 1 +legal 5 5 5 5 +executive 7 7 7 7 +A4 9 9 9 9 +A5 11 11 11 11 +B5jis 13 13 13 13 +env #10 20 20 20 20 +env DL 27 27 27 27 +env CL 28 28 28 28 +env B5 34 34 34 34 +env Monarch 37 37 37 37 +postcard (japan) na 260 43 43 +B5iso na 259 na na +A6 na 262 70 70 +double postcard rotated na 261 82 82 +16k 197x273 na 257 257 257 +fanfold german legal na 258 258 258 +16k 184x260 na na 263 263 +16k 195x270 na na 264 264 +photo 4x6 na na na 268 +photo 5x8 na na na 269 +photo 10x15 na na na 270 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (Input Slot) code to send to printer [7]. +.TS +| n l | n l. +1 upper 4 manual +2 lower 7 auto +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-T\0 density +Print density (1-5). The default is 3 (medium). +.TP +.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" +Print in N-up. Requires the \fBpsutils\fP package. +.TP +.BI \-o\0 orient +Orientation used for N-up. +.TS +l l l. +Portrait -op (normal) +Landscape -ol (rotated 90 degrees anticlockwise) +Seascape -os (rotated 90 degrees clockwise) +.TE +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2zjs\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [varies with paper size]. +The defaults should work on the 2200DL and 2300DL, and have not +been tested on any other printers. +.TP +.BI \-L\0 mask +Send the logical clipping values from -u/-l in the ZjStream. +\fBfoo2zjs-wrapper\fP always runs Ghostscript with the ideal page dimensions, +so that the scale of the image is correct, +regardless whether or not the printer has unprintable regions. +This option is used to move the position of the clipped image +back to where it belongs on the page. The default is to send +the amount which was clipped by -u and -l, and should be +good in most cases. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-P +Do not send START_PLANE codes on monochrome output. May be +needed by some monochrome-only printers, such as the +HP LaserJet 1000. +.TP +.BI \-X\0 padlen +Add extra zero padding to the end of BID segments. The default is +16 bytes. Padding 16 bytes of zeroes +is needed for older ZjStream printers, such as the Minolta 2200DL +and HP LaserJet 1000, and seems harmless to newer ones, such as +the Minolta 2300DL. So the default should be good for all cases. +.TP +.BI \-z\0 model +Model. Default is 0. +.TS +l l. +0 KM 2300DL / HP 1000 / HP 1005 +1 HP 1018 / HP 1020 / HP 1022 +2 HP Pro P1102 / P1566 / P1606dn +3 HP Pro CP1025 +.TE +.SS Color Tweaking Options +These are the options used to control the quality of color output. +Color correction is currently a WORK IN PROGRESS. +.TP +.BI \-g\0 gsopts +Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +etc. This option may appear more than once. +.TP +.BI \-G\0 profile.icm +Convert \fIprofile.icm\fP to a Postscript color rendering +dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and +adjust the printer colors by using the Postscript \fBsetcolorrendering\fP +operator. (WORK IN PROGRESS). +.TP +.BI \-G\0 gamma-file.ps +Prepend \fIgamma-file.ps\fP to the Postscript input to perform +color correction using the \fBsetcolortransfer\fP Postscript operator. +For example, the file might contain: +.br +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +.TP +.BI \-I\0 intent +Select profile intent from the ICM file. +0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. +Default is 0 (perceptual). +.SS Debugging Options +These options are used for debugging \fBfoo2zjs\fP and its wrapper. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a monochrome ZjStream from a Postscript document, +examine it, and then print it using a RAW print queue: + +.RS +.nf +foo2zjs-wrapper testpage.ps > testpage.zm +zjsdecode < testpage.zm +lpr -P raw testpage.zm +.fi +.RE +.P +Create a color ZjStream stream from a Postscript document: + +.RS +.nf +foo2zjs-wrapper -c testpage.ps > testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2zjs-wrapper +.SH SEE ALSO +.BR foo2zjs (1), +.BR zjsdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2zjs-wrapper.in b/foo2zjs-wrapper.in new file mode 100755 index 0000000..f575d8d --- /dev/null +++ b/foo2zjs-wrapper.in @@ -0,0 +1,971 @@ +#!/bin/sh + +#* Copyright (C) 2003-2006 Rick Richardson +#* +#* 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., 675 Mass Ave, Cambridge, MA 02139, USA. +#* +#* Authors: Rick Richardson + +VERSION='$Id: foo2zjs-wrapper.in,v 1.154 2012/02/24 01:25:15 rick Exp $' + +# +# Printer Notes: +# +# Minolta/QMS 2300 DL - Does not need clipping, -X16, or -P. But it doesn't +# break anything if you use them. +# +# Minolta/QMS 2200 DL - Requires -X16 (which is on by default) +# - Requires clipping +# +# HP LaserJet 1000 - Same as 2200 DL, plus needs -P +# HP LaserJet 1005 - Same as 2200 DL, plus needs -P +# +# HP LaserJet 1018 - Same as 2200 DL, plus needs -P -z1 -L0 +# HP LaserJet 1020 - Same as 2200 DL, plus needs -P -z1 -L0 +# HP LaserJet 1022 - Same as 2200 DL, plus needs -P -z1 -L0 +# HP LaserJet M1319 MFP - Same as 2200 DL, plus needs -P -z1 -L0 +# HP LaserJet P2035 - Same as 2200 DL, plus needs -P -z1 -L0 +# HP LaserJet P2035n - Same as 2200 DL, plus needs -P -z1 -L0 +# +# HP LaserJet Pro P1102 - Same as 2200 DL, plus needs -P -z2 -L0 +# HP LaserJet Pro P1102w- Same as 2200 DL, plus needs -P -z2 -L0 +# HP LaserJet Pro P1566 - Same as 2200 DL, plus needs -P -z2 -L0 +# HP LaserJet Pro P1606dn- Same as 2200 DL, plus needs -P -z2 -L0 +# +# HP LaserJet Pro CP1025nw- Same as 2200 DL, plus needs -P -z3 -L0 +# + +PROGNAME="$0" +BASENAME=`basename $PROGNAME` +PREFIX=/usr +SHARE=$PREFIX/share/foo2zjs +PATH=$PATH:/sw/bin:/opt/local/bin + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger -o -x /bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] +-s source Source code to send to printer [$SOURCE] + 1=upper, 2=lower, 4=manual, 7=auto + Code numbers may vary with printer model. +-t Draft mode. Every other pixel is white. +-T density Print density (1-5) [$DENSITY] +-2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 + Print with N-up (requires psutils) +-o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. + +Printer Tweaking Options: +-u x Set offset of upper left printable in pixels [varies] +-l x Set offset of lower right printable in pixels [varies] +-L mask Send logical clipping values from -u/-l in ZjStream [3] + 0=no, 1=Y, 2=X, 3=XY +-P Do not output START_PLANE codes. May be needed by some + monochrome-only printers. +-X padlen Add extra zero padding to the end of BID segments [16] +-z model Model: [0] + 0=KM 2300DL / HP 1000 / HP 1005 + 1=HP 1018 / HP 1020 / HP 1022 + 2=HP Pro P1102 / P1566 / P1606dn + 3=HP Pro CP1025nw + +Color Tweaking Options: +-g gsopts Additional options to pass to Ghostscript, such as + -dDITHERPPI=nnn, etc. May appear more than once. [] +-G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and + adjust colors using the setcolorrendering PS operator. + $SHARE/icm/ will be searched for profile.icm. +-I intent Select profile intent from ICM file [$INTENT] + 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute +-G gamma-file.ps Prepend gamma-file to the Postscript input to perform + color correction using the setcolortransfer PS operator. + +Debugging Options: +-S plane Output just a single color plane from a color print [all] + 1=Cyan, 2=Magenta, 3=Yellow, 4=Black +-D lvl Set Debug level [$DEBUG] +-V $VERSION +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "$BASENAME: $1" >&2 + exit 1 +} + +dbgcmd() { + if [ $DEBUG -ge 1 ]; then + echo "$@" >&2 + fi + "$@" +} + +# +# N-up-ify the job. Requires psnup from psutils package +# +nup() { + case "$NUP" in + [2368]|1[0458]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q + ;; + [49]|1[26]) + tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q + ;; + *) + error "Illegal call to nup()." + ;; + esac +} + +# +# Process the options +# + +# Try to use a local copy of GhostScript 8.54, if available. Otherwise, +# fallback to whatever the Linux distro has installed (usually 7.07) +# +# N.B. := operator used here, when :- would be better, because "ash" +# doesn't have :- +if eval gs.foo -v >/dev/null 2>&1; then + GSBIN=${GSBIN:-gs.foo} +else + GSBIN=${GSBIN:-gs} +fi +GSVER=`$GSBIN --version` + +CMDLINE="$*" +DEBUG=0 +DUPLEX=1 +COLOR= +COLORMODE=default +MODEL=0 +QUALITY=1 +QUALITY=wts +MEDIA=1 +COPIES=1 +PAPER=1 +RES=1200x600 +SOURCE=7 +NUP= +CLIP_UL= +CLIP_LR= +CLIP_LOG= +BC= +AIB= +NOPLANES= +COLOR2MONO= +GAMMAFILE= +INTENT=0 +GSOPTS= +EXTRAPAD= +SAVETONER= +DENSITY=3 #Medium +NUP_ORIENT= +GSDEV=-sDEVICE=pbmraw +# What mode to use if the user wants us to pick the "best" mode +case "$GSVER" in +7*) DEFAULTCOLORMODE=10 + DEFAULTCOLORMODE=2 + ;; +8.1*) + DEFAULTCOLORMODE=2 + QUALITY=1 + ;; +*) DEFAULTCOLORMODE=2 + ;; +esac +while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tT:z:ABS:D:G:I:PX:Vh?" opt +do + case $opt in + b) GSBIN="$OPTARG";; + c) COLOR=-c;; + d) DUPLEX="$OPTARG";; + g) GSOPTS="$GSOPTS $OPTARG";; + m) MEDIA="$OPTARG";; + n) COPIES="$OPTARG";; + p) PAPER="$OPTARG";; + q) QUALITY="$OPTARG";; + r) RES="$OPTARG";; + s) SOURCE="$OPTARG";; + t) SAVETONER="-t";; + T) DENSITY="$OPTARG";; + z) MODEL="$OPTARG";; + l) CLIP_LR="-l $OPTARG";; + u) CLIP_UL="-u $OPTARG";; + L) CLIP_LOG="-L $OPTARG";; + A) AIB=-A;; + B) BC=-B;; + C) COLORMODE="$OPTARG";; + S) COLOR2MONO="-S$OPTARG";; + D) DEBUG="$OPTARG";; + G) GAMMAFILE="$OPTARG";; + I) INTENT="$OPTARG";; + P) NOPLANES=-P;; + X) EXTRAPAD="-X $OPTARG";; + [234689]) NUP="$opt";; + [57]) error "Can't find acceptable layout for $opt-up";; + 1) case "$OPTARG" in + [024568]) NUP="1$OPTARG";; + *) error "Can't find acceptable layout for 1$OPTARG-up";; + esac + ;; + o) case "$OPTARG" in + l*) NUP_ORIENT=-l;; + s*) NUP_ORIENT=-r;; + p*|*) NUP_ORIENT=;; + esac;; + V) echo "$VERSION"; foo2zjs -V; foo2zjs-pstops -V; exit 0;; + h|\?) + if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then + echo "Illegal command:" + echo " $0 $CMDLINE" + echo + fi + usage;; + esac +done +shift `expr $OPTIND - 1` + +# Testing for gs9... +if [ `uname -n` = dual.rkkda.org -a $MODEL = 3 ]; then + GSBIN=gs904 + GSBIN=gsgit # gs 9.05+ +fi + +# +# If there is an argument left, take it as the file to print. +# Else, the input comes from stdin. +# +if [ $# -ge 1 ]; then + if [ "$LPJOB" = "" ]; then + : # LPJOB="$1" + fi + exec < $1 +fi + +# +case "$QUALITY" in +0) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +1) + GSOPTS="-dCOLORSCREEN $GSOPTS" + ;; +2) + GSOPTS="-dMaxBitmap=500000000 $GSOPTS" + ;; +as) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +wts) + GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" + ;; +esac + +# +# Validate model code +# +case "$MODEL" in +0|1|2|3) ;; +*) error "Unknown model code $MODEL";; +esac + +# +# Validate media code +# +case "$MEDIA" in +1|standard|plain) MEDIA=1;; +2|transparency) MEDIA=2;; +3|glossy) MEDIA=3;; +257|envelope) MEDIA=257;; # -z0 +258|light) MEDIA=258;; # -z1, -z2 +259|letterhead) MEDIA=259;; # -z0 +261|thickstock|cardstock) MEDIA=261;; +262|postcard|heavy) MEDIA=262;; +263|labels|rough) MEDIA=263;; # -z0 labels, -z[12] rough +265|labels) MEDIA=265;; # -z1, -z2 +267|envelope) MEDIA=267;; # -z1, -z2 +273|vellum) MEDIA=267;; # -z1, -z2 +512|color) MEDIA=512;; +513|letterhead) MEDIA=513;; # -z1, -z2 +514|preprinted) MEDIA=514;; # -z1, -z2 +515|prepunched) MEDIA=515;; # -z1, -z2 +516|recycled) MEDIA=516;; # -z1, -z2 +[0-9]*) ;; +*) error "Unknown media code $MEDIA";; +esac + +# +# Validate source (InputSlot) code +# +case "$SOURCE" in +1|upper) SOURCE=1;; +2|lower) SOURCE=2;; +4|manual) SOURCE=4;; +7|auto) SOURCE=7;; +[0-9]*) ;; +*) error "Unknown source code $SOURCE";; +esac + +# +# Validate Duplex code +# +case "$DUPLEX" in +1|off|none) DUPLEX=1;; +2|long*) DUPLEX=2;; +3|short*) DUPLEX=3;; +[0-9]*) ;; +*) error "Unknown duplex code $DUPLEX";; +esac + +# +# Validate Resolution +# +case "$RES" in +600x600) ;; +1200x600) ;; +2400x600) ;; +*) error "Illegal resolution $RES";; +esac + +# +# Validate Print Density +# +case "$DENSITY" in +1|2|3|4|5) ;; +*) error "Illegal print density (-T) $DENSITY";; +esac + +# +# Figure out the paper dimensions in pixels/inch, and set the +# default clipping region. Unfortunately, this is a trouble +# area for ZjStream printers. Various versions of ZjS print +# engines react differently when asked to print into their +# unprintable regions. +# +# The Minolta 2200 DL is sensitive to its unprintable regions, +# and will pixel skew if you try to print there. +# +# The HP1000 will print blank pages when asked to print into its +# unprintable region. +# +# The Minolta 2300 DL doesn't care if print into the unprintable +# region. It will do the clipping itself. This is as it should be. +# But it won't hurt it if we do the clipping here. +# +set_clipping() { + ulx=$1; uly=$2 + lrx=$3; lry=$4 + + # Set clipping region if it isn't already set + if [ "$CLIP_UL" = "" ]; then + case "$RES" in + 600x600) ulx=`expr $ulx / 2`;; + 2400x600) ulx=`expr $ulx \* 2`;; + esac + CLIP_UL="-u ${ulx}x${uly}" + fi + if [ "$CLIP_LR" = "" ]; then + case "$RES" in + 600x600) lrx=`expr $lrx / 2`;; + 2400x600) lrx=`expr $lrx \* 2`;; + esac + CLIP_LR="-l ${lrx}x${lry}" + fi +} + +case "$PAPER" in +Custom*x*) + # Command line only + XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` + YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` + if [ "$XDIM" = "" -o "$YDIM" = "" ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then + error "Custom page size '$PAPER' != 1-99999" + fi + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=256; paper=letter; + MEDIA=261 + set_clipping 2 100 2 100 + ;; +Custom*) + #%%BeginFeature: *CustomPageSize True + #216 + #360 + #0 + #0 + #0 + #pop pop pop pop pop + + #%%BeginFeature: *CustomPageSize True + #792.000000 612.000000 1 0.000000 0.000000 + #pop pop pop pop pop + + if [ $DEBUG = 0 ]; then + TMPFILE=/tmp/cus$$ + else + TMPFILE=/tmp/custom.ps + fi + cat >$TMPFILE + exec <$TMPFILE + + tmp=`head -n 10000 $TMPFILE \ + | sed -n '/CustomPageSize/{n;p;n;p;}' \ + | tr '\n' ' '` + case "$tmp" in + [0-9]*\ [0-9]*) + XDIM=`echo "$tmp" | sed 's/ .*//'` + YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` + ;; + *) + if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi + error "Custom page size [XY]DIM != 1-99999" + ;; + esac + XDIM=`dc -e "$XDIM 1200* 72/p"` + YDIM=`dc -e "$YDIM 600* 72/p"` + PAPER=256; paper=letter; + MEDIA=261 + set_clipping 2 100 2 100 + ;; +1|letter) PAPER=1; paper=letter; XDIM="10200"; YDIM="6600" + case "$MODEL" in + 0) set_clipping 204 102 204 106;; + 1) set_clipping 192 96 192 96;; + 2) set_clipping 192 96 192 96;; + 3) set_clipping 192 96 192 96;; + # 1) set_clipping 96 96 288 96;; + esac + ;; +5|legal) PAPER=5; paper=legal; XDIM="10200"; YDIM="8400" + case "$MODEL" in + 0) set_clipping 204 102 204 106;; + 1) set_clipping 192 96 192 96;; + 2) set_clipping 192 96 192 96;; + 3) set_clipping 192 96 192 96;; + esac + ;; +7|executive) PAPER=7; paper=executive; XDIM="8700"; YDIM="6300" + case "$MODEL" in + 0) set_clipping 206 102 206 102;; + 1) set_clipping 192 96 192 96;; + 2) set_clipping 192 96 192 96;; + 3) set_clipping 192 96 192 96;; + esac + ;; +9|a4|A4) PAPER=9; paper=a4; XDIM="9920"; YDIM="7016" + case "$MODEL" in + 0) + if [ "$NOPLANES" != "" -a "$RES" = 600x600 ]; then + # Hack fix for LJ1000 + set_clipping 224 100 224 100 + else + # 2200DL + set_clipping 200 100 200 100 + fi + ;; + 1) set_clipping 192 96 192 96;; + 2) set_clipping 192 96 192 96;; + 3) set_clipping 192 96 192 96;; + esac + ;; +11|a5|A5) PAPER=11; paper=a5; XDIM="6992"; YDIM="4960" + case "$MODEL" in + 0) set_clipping 200 100 200 100;; + 1) set_clipping 192 96 192 96;; + 2) set_clipping 192 96 192 96;; + 3) set_clipping 192 96 192 96;; + esac + ;; +13|b5|B5) PAPER=13; paper=b5; XDIM="8598"; YDIM="6070" + case "$MODEL" in + 0) set_clipping 207 107 207 107;; + 1) set_clipping 192 96 192 96;; + 2) set_clipping 192 96 192 96;; + 3) set_clipping 192 96 192 96;; + esac + ;; +259|b5iso|B5ISO) PAPER=259; paper=b5; XDIM="8316"; YDIM="5904" + case "$MODEL" in + 1) set_clipping 192 96 192 96;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +20|"env#10") PAPER=20; paper=env10; XDIM="4950"; YDIM="5700" + case "$MODEL" in + 0) set_clipping 171 78 171 78;; + 1) set_clipping 171 78 171 78;; + 2) set_clipping 171 78 171 78;; + 3) set_clipping 171 78 171 78;; + esac + ;; +27|envDL) PAPER=27; paper=envDL; XDIM="5200"; YDIM="5200" + case "$MODEL" in + 0) set_clipping 176 84 176 84;; + 1) set_clipping 176 84 176 84;; + 2) set_clipping 176 84 176 84;; + 3) set_clipping 176 84 176 84;; + esac + ;; +28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" + case "$MODEL" in + 0) set_clipping 170 80 169 80;; + 1) set_clipping 170 80 169 80;; + 2) set_clipping 170 80 169 80;; + 3) set_clipping 170 80 169 80;; + esac + ;; +34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" + case "$MODEL" in + 0) set_clipping 174 74 174 74;; + 1) set_clipping 174 74 174 74;; + 2) set_clipping 174 74 174 74;; + 3) set_clipping 174 74 174 74;; + esac + ;; +37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" + case "$MODEL" in + 0) set_clipping 174 78 173 78;; + 1) set_clipping 174 78 173 78;; + 2) set_clipping 174 78 173 78;; + 3) set_clipping 174 78 173 78;; + esac + ;; +70|262|A6) paper=A6; XDIM="4956"; YDIM="3498" + case "$MODEL" in + 1) PAPER=262; set_clipping 174 78 173 78;; + 2) PAPER=70; set_clipping 174 78 173 78;; + 3) PAPER=70; set_clipping 174 78 173 78;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +257|16k197x273) PAPER=257; paper=executive;XDIM="9306"; YDIM="6448" + case "$MODEL" in + 1) set_clipping 173 84 173 84;; + 2) set_clipping 173 84 173 84;; + 3) set_clipping 173 84 173 84;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +263|16k184x260) PAPER=263; paper=executive;XDIM="8692"; YDIM="6142" + case "$MODEL" in + 2) set_clipping 122 87 122 87;; + 3) set_clipping 122 87 122 87;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +264|16k195x270) PAPER=264; paper=executive;XDIM="9212"; YDIM="6378" + case "$MODEL" in + 2) set_clipping 126 87 126 87;; + 3) set_clipping 126 87 126 87;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +43|260|postcard) paper=executive;XDIM="4728"; YDIM="3498" + case "$MODEL" in + 1) PAPER=260; set_clipping 126 87 126 87;; + 2) PAPER=43; set_clipping 126 87 126 87;; + 3) PAPER=43; set_clipping 126 87 126 87;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +82|261|doublepostcardrotated) + paper=executive;XDIM="6996"; YDIM="4722" + case "$MODEL" in + 1) PAPER=261; set_clipping 126 87 126 87;; + 2) PAPER=82; set_clipping 126 87 126 87;; + 3) PAPER=82; set_clipping 126 87 126 87;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +258|fanfoldgermanlegal) + PAPER=258; paper=legal; XDIM="10200"; YDIM="7800" + case "$MODEL" in + 1) set_clipping 192 96 192 96;; + 2) set_clipping 192 96 192 96;; + 3) set_clipping 192 96 192 96;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +268|photo4x6) + PAPER=268; paper=a6; XDIM="4800"; YDIM="3600" + case "$MODEL" in + 3) set_clipping 192 96 192 96;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +269|photo5x8) + PAPER=269; paper=statement; XDIM="6000"; YDIM="4800" + case "$MODEL" in + 3) set_clipping 192 96 192 96;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +270|photo10x15) + PAPER=270; paper=postcard; XDIM="4818"; YDIM="3590" + case "$MODEL" in + 3) set_clipping 192 96 192 96;; + *) error "Unimplemented paper code $PAPER";; + esac + ;; +*) error "Unimplemented paper code $PAPER";; +esac +# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps +PAPERSIZE="-sPAPERSIZE=$paper"; + +case "$RES" in +600x600) XDIM=`expr $XDIM / 2`;; +1200x600) ;; +2400x600) XDIM=`expr $XDIM \* 2`;; +esac +DIM="${XDIM}x${YDIM}" + +# +# Filter thru psnup if N-up printing has been requested +# +case $NUP in +[234689]|1[024568]) PREFILTER="nup";; +*) PREFILTER=cat;; +esac +if [ "$DEBUG" -ge 9 ]; then + PREFILTER="tee /tmp/$BASENAME.ps" +fi + +# +# Overload -G. If the file name ends with ".icm" or ".ICM" +# then convert the ICC color profile to a Postscript CRD, +# then prepend it to the users job. Select the intent +# using the -I option. +# + +create_crd() { + # + # Create a Postscript CRD + # + ICC2PS=$PREFIX/bin/foo2zjs-icc2ps + if [ -x $ICC2PS ]; then + case "$GAMMAFILE" in + none | none.icm | */none.icm) + ;; + *) + if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" + fi + $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ + || error "Problem converting .ICM file to Postscript" + ;; + esac + + PSTOPS_OPTS="$PSTOPS_OPTS -c" + cat > $ICCTMP.usecie.ps <<-EOF + %!PS-Adobe-3.0 + <>setpagedevice + EOF + if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then + if [ "$QUALITY" = wts ]; then + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS true >> setuserparams + EOF + else + cat >> $ICCTMP.usecie.ps <<-EOF + << /UseWTS false >> setuserparams + EOF + fi + cat >> $ICCTMP.usecie.ps <<-EOF + << + /AccurateScreens true + /HalftoneType 1 + /HalftoneName (Round Dot Screen) cvn + /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} + /Frequency 137 + /Angle 37 + >> sethalftone + EOF + fi + cat > $ICCTMP.selcrd.ps <<-EOF + /Current /ColorRendering findresource setcolorrendering + EOF + case "$GAMMAFILE" in + none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; + *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; + esac + else + GAMMAFILE= + fi +} + +# +# Print the color space from an ICC file using "dd" +# +colorspace() { + if [ -r "$1" ]; then + dd if=$1 bs=4c skip=4 count=1 2>/dev/null + elif [ -r "$SHARE/icm/$1" ]; then + dd if=$1 bs=4c skip=4 count=1 2>/dev/null + else + echo none + fi +} + +if [ $DEBUG -gt 0 ]; then + ICCTMP=/tmp/icc +else + ICCTMP=/tmp/icc$$ +fi + +PSTOPS_OPTS="-n" + +if [ "" = "$COLOR" ]; then + COLORMODE= + GAMMAFILE= +else + case "$COLORMODE" in + default) COLORMODE=$DEFAULTCOLORMODE;; + esac + + case "$GAMMAFILE" in + default) + case "$MODEL" in + 3) GAMMAFILE=hp-cp1025-rgb-392-bpp1.icm;; + *) GAMMAFILE=DL2312.icm;; + esac + ;; + esac + + case "$GSVER" in + 9.*) + cs=`colorspace $GAMMAFILE` + if [ "$cs" = "CMYK" ]; then + COLORMODE=gs9 + QUALITY= + PSTOPS_OPTS="$PSTOPS_OPTS -9 -a" + fi + ;; + esac +fi + +CRDBASE="$PREFIX/share/foo2zjs/crd" +case "$RES" in + 600x600) SCREEN=screen1200.ps;; + 1200x600) SCREEN=screen1200.ps;; + 2400x600) SCREEN=screen2400.ps;; +esac + +case "$COLORMODE" in +0|"") + # Monochrome + ;; +gs9) + # Use new icc method in gs 9.* + AIB= + BC= + if [ -r "$GAMMAFILE" ]; then + GAMMAFILE="-sOutputICCProfile=$GAMMAFILE" + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="-sOutputICCProfile=$SHARE/icm/$GAMMAFILE" + else + GAMMAFILE= + fi + ;; +10|icm) + # Use old ICM method + AIB=-A + BC=-B + case "$GAMMAFILE" in + none | none.icm | */none.icm) + create_crd + ;; + *.icm|*.ICM|*.icc|*.ICC) + # + # Its really an .ICM file, not a gamma file. + # + # The file can be a full path name, or the name of a file in $SHARE/icm/ + # + if [ -r "$GAMMAFILE" ]; then + create_crd + elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then + GAMMAFILE="$SHARE/icm/$GAMMAFILE" + create_crd + else + GAMMAFILE= + fi + ;; + esac + ;; +1|photo) + # Photo + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr125,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +2|graphics) + # Photo and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,75-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kh.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +3|text) + # Graphic and Text + GAMMAFILE="$CRDBASE/prolog.ps" + #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,50-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/kx.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +4|tonersave) + # Reduced toner + GAMMAFILE="$CRDBASE/prolog.ps" + GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,0-per.crd" + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*.crd) + GAMMAFILE="$CRDBASE/prolog.ps" + if [ -f $COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $COLORMODE" + elif [ -f $CRDBASE/$COLORMODE ]; then + GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" + else + error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" + fi + GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" + ;; +*) + error "Unknown color method '$COLORMODE'" + ;; +esac + +if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -w" +elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then + PSTOPS_OPTS="$PSTOPS_OPTS -a" +fi + +if [ "" != "$COLOR" ]; then + if [ "" = "$AIB" -a "" = "$BC" ]; then + # Faster, but can't handle AllIsBlack or BlackClears + GSDEV=-sDEVICE=pksmraw + else + # Can't handle different size pages + GSDEV=-sDEVICE=bitcmyk + fi +fi + +# +# Figure out USERNAME +# +if [ "$LPUSER" != "" ]; then + USER="$LPUSER@$LPHOST" +else + USER="" +fi + +# +# Main Program, just cobble together the pipeline and run it +# +# The malarky with file descriptors 1 and 3 is to avoid a bug in +# (some versions?) of Ghostscript where Postscript's stdout gets +# intermingled with the printer drivers output, resulting in +# corrupted image data. +# +GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" + +foo2zjs-pstops $PSTOPS_OPTS | \ +$PREFILTER \ +| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ + -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ +| foo2zjs -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ + -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER -T$DENSITY \ + -J "$LPJOB" -U "$USER" \ + $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG + +# +# Log the command line, for debugging and problem reports +# +if [ -x /usr/bin/logger ]; then + logger -t "$BASENAME" -p lpr.info -- \ + "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" + logger -t "$BASENAME" -p lpr.info -- \ + "foo2zjs -r$RES -g$DIM -p$PAPER -m$MEDIA \ +-n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ +$SAVETONER -T$DENSITY $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" +fi + +# +# Remove cruft +# +if [ $DEBUG -eq 0 ]; then + for i in crd.ps log usecie.ps selcrd.ps + do + file="$ICCTMP.$i" + [ -f $file ] && rm -f $file + done + [ -f "$TMPFILE" ] && rm -f $TMPFILE +fi + +exit 0 diff --git a/foo2zjs.1in b/foo2zjs.1in new file mode 100644 index 0000000..a26113c --- /dev/null +++ b/foo2zjs.1in @@ -0,0 +1,234 @@ +'\" t +.TH foo2zjs 1 "${MODpage}" "foo2zjs ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +foo2zjs \- Convert Ghostscript pbmraw or bitcmyk format into a +ZJS printer stream +.SH SYNOPSIS +.B foo2zjs +.RI [ options "] <" pbmraw-file " >" zjs-file +.sp 1 +.B foo2zjs +.RI [ options "] <" bitcmyk-file " >" zjs-file +.sp 1 +.B foo2zjs +.RI [ options "] <" pksmraw-file " >" zjs-file +.SH DESCRIPTION +.B foo2zjs +converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome +or color ZJS streams, +for driving the Minolta/QMS 2300 DL network color laser printer +and other Zenographics-based printers. + +.SH COMMAND LINE OPTIONS +.SS Normal Options +These are the options used to select the parameters of a +print job that are usually controlled on a per job basis. +.TP +.BI \-c +Force color mode if autodetect doesn't work. +.TP +.BI \-d\0 duplex +Duplex code to send to printer [1]. +.TS +| n l | n l | n l . +1 off 2 long edge 3 short edge +.TE +.TP +.BI \-g\0 xpix x ypix +Set page dimensions in pixels [10200x6600]. +.TP +.BI \-m\0 media +Media code to send to printer [1]. +.TS +l r r r r r. +_ +Media 2300DL 2200DL HP 1018 HP P1102 HP +\^ HP 1005 HP 1020 HP P1606 CP1025 +\^ -z0 -z0 -z1 -z2 -z3 +_ +standard 1 1 1 1 1 +transparency 2 2 2 2 2 +envelope 257 na 267 267 267 +letterhead 259 na 513 513 513 +bond na na 260 260 260 +thick 261 4 261 na na +postcard 262 na na na na +rough na na 263 263 263 +heavy na na 262 262 262 +labels 263 3 263 265 265 +vellum na na 273 273 273 +medium na na na 282 282 +extraheavy na na na 283 283 +color na na 512 512 512 +light na na 258 258 258 +preprinted na na 514 514 514 +prepunched na na 515 515 515 +recycled na na 516 516 516 +.TE +.TP +.BI \-p\0 paper +Paper code to send to printer [1]. +.TS +l r r r r. +_ +Paper MC 2300DL HP 1018 HP P1102 HP +\^ HP 1005 HP 1020 HP P1606 CP1025 +\^ -z0 -z1 -z2 -z3 +_ +letter 1 1 1 1 +legal 5 5 5 5 +executive 7 7 7 7 +A4 9 9 9 9 +A5 11 11 11 11 +B5jis 13 13 13 13 +env #10 20 20 20 20 +env DL 27 27 27 27 +env CL 28 28 28 28 +env B5 34 34 34 34 +env Monarch 37 37 37 37 +postcard (japan) na 260 43 43 +B5iso na 259 na na +A6 na 262 70 70 +double postcard rotated na 261 82 82 +16k 197x273 na 257 257 257 +fanfold german legal na 258 258 258 +16k 184x260 na na 263 263 +16k 195x270 na na 264 264 +photo 4x6 na na na 268 +photo 5x8 na na na 269 +photo 10x15 na na na 270 +.TE +.TP +.BI \-n\0 copies +Number of copies [1]. +.TP +.BI \-r\0 xres x yres +Set device resolution in pixels/inch [1200x600]. +.TP +.BI \-s\0 source +Source (InputSlot) code to send to printer [7]. +.TS +| n l | n l. +1 upper 4 manual +2 lower 7 auto +.TE +.TP +.BI \-t +Draft mode. Every other pixel is white. +.TP +.BI \-T\0 density +Print density (1-5). The default is 3 (medium). +.TP +.BI \-J\0 filename +Filename string to send to printer. +.TP +.BI \-U\0 username +Username string to send to printer. +.SS Printer Tweaking Options +These are the options used to customize the operation of \fBfoo2zjs\fP +for a particular printer. +.TP +.BI \-u\0 xoff x yoff +Set the offset of the start of the printable region from the +upper left corner, in pixels [0x0]. +.TP +.BI \-l\0 xoff x yoff +Set the offset of the end of the printable region from the +lower right corner, in pixels [0x0]. +.TP +.BI \-L\0 mask +Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +.TS +l l. +0 don't send any logical clipping amounts +1 only send Y clipping amount +2 only send X clipping amount +3 send both X and Y clipping amounts +.TE +.TP +.BI \-P +Do not send START_PLANE codes on monochrome output. May be +needed by some black and white only printers, such as the +HP LaserJet 1000. +.TP +.BI \-A +AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. +.TP +.BI \-B +BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. +.TP +.BI \-X\0 padlen +Add extra zero padding to the end of BID segments. The default is +16 bytes. Padding 16 bytes of zeroes +is needed for older ZjStream printers, such as the Minolta 2200DL +and HP LaserJet 1000, and seems harmless to newer ones, such as +the Minolta 2300DL. So the default should be good for all cases. +.TP +.BI \-z\0 model +Model. Default is 0. +.TS +l l. +0 KM 2300DL / HP 1000 / HP 1005 +1 HP 1018 / HP 1020 / HP 1022 +2 HP Pro P1102 / P1566 / P1606dn +3 HP Pro CP1025 +.TE +.SS Debugging Options +These options are used for debugging \fBfoo2zjs\fP. +.TP +.BI \-S\0 plane +Output just a single color plane from a color print and print it +on the black plane. The default is to output all color planes. +.TS +l l. +1 Cyan +2 Magenta +3 Yellow +4 Black +.TE +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Create a black and white ZJS stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ + -sOutputFile=- - < testpage.ps \ +| foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zm +.fi +.RE +.P +Create a color ZJS stream: + +.RS +.nf +gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ + -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ + -sOutputFile=- - < testpage.ps \ +| foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zc +.fi +.RE + +.SH FILES +.BR /usr/bin/foo2zjs +.SH SEE ALSO +.BR foo2zjs-wrapper (1), +.BR zjsdecode (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/foo2zjs.c b/foo2zjs.c new file mode 100644 index 0000000..869460b --- /dev/null +++ b/foo2zjs.c @@ -0,0 +1,1951 @@ +/* + +GENERAL +This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images +(both produced by ghostscript) to Zenographics ZJ-stream format. There +is some information about the ZJS format at http://ddk.zeno.com. + +With this utility, you can print to some HP and Minolta/QMS printers, +such as these: + - Minolta/QMS 2300 DL B/W and color + - Minolta/QMS 2200 DL B/W and color + - Minolta/QMS 2430 DL B/W and color + - HP LaserJet 1000 B/W + - HP LaserJet 1005 B/W + + - HP LaserJet 1018 B/W -P -z1 -L0 + - HP LaserJet 1020 B/W -P -z1 -L0 + - HP LaserJet 1022 B/W -P -z1 -L0 + - HP LaserJet M1319 MFP B/W -P -z1 -L0 + - HP LaserJet P2035 B/W -P -z1 -L0 + - HP LaserJet P2035n B/W -P -z1 -L0 + + - HP LaserJet Pro P1102 B/W -P -z2 -L0 + - HP LaserJet Pro P1102w B/W -P -z2 -L0 + - HP LaserJet Pro P1566 B/W -P -z2 -L0 + - HP LaserJet Pro P1606dn B/W -P -z2 -L0 + + - HP LaserJet Pro CP1025nw B/W and color -P -z3 -L0 + +AUTHORS +This program began life as Robert Szalai's 'pbmtozjs' program. It +also uses Markus Kuhn's jbig-kit compression library (included, but +also available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/). + +The program was overhauled by Rick Richardson to limit data chunk size +to 65536 bytes, add command line options, add color support for the +Minolta/QMS 2300DL, and other miscellaneous features. + +You can contact the current author at mailto:rick.richardson@comcast.net + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +If you want to use this program under different license conditions, +then contact the author for an arrangement. + +It is possible that certain products which can be built using the jbig +software module might form inventions protected by patent rights in +some countries (e.g., by patents about arithmetic coding algorithms +owned by IBM and AT&T in the USA). Provision of this software by the +author does NOT include any licenses for any patents. In those +countries where a patent license is required for certain applications +of this software module, you will have to obtain such a license +yourself. + +*/ + +static char Version[] = "$Id: foo2zjs.c,v 1.109 2011/11/12 16:39:53 rick Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#include "jbig.h" +#include "zjs.h" + +/* + * Command line options + */ +int Debug = 0; +int ResX = 1200; +int ResY = 600; +int Bpp = 1; +int PaperCode = DMPAPER_LETTER; +int PageWidth = 1200 * 8.5; +int PageHeight = 600 * 11; +int UpperLeftX = 0; +int UpperLeftY = 0; +int LowerRightX = 0; +int LowerRightY = 0; +int Copies = 1; +int Duplex = DMDUPLEX_OFF; +int SourceCode = DMBIN_AUTO; +int MediaCode = DMMEDIA_STANDARD; +char *Username = NULL; +char *Filename = NULL; +int Mode = 0; + #define MODE_MONO 1 + #define MODE_COLOR 2 +int Model = 0; + #define MODEL_2300DL 0 + #define MODEL_HP1020 1 + #define MODEL_HP_PRO 2 + #define MODEL_HP_PRO_CP 3 + #define MODEL_LAST 3 + +int Color2Mono = 0; +int BlackClears = 0; +int AllIsBlack = 0; +int OutputStartPlane = 1; +int ExtraPad = 16; + +int LogicalOffsetX = 0; +int LogicalOffsetY = 0; + +#define LOGICAL_CLIP_X 2 +#define LOGICAL_CLIP_Y 1 +int LogicalClip = LOGICAL_CLIP_X | LOGICAL_CLIP_Y; +int SaveToner = 0; +int PageNum = 0; + #define even_page(x) ( ((x) & 1) == 0 ) + #define odd_page(x) ( ((x) & 1) == 1 ) +int RealWidth; +int EconoMode = 0; +int PrintDensity = 3; +int Dots[4]; +int TotalDots; + +int IsCUPS = 0; + +FILE *EvenPages = NULL; +typedef struct +{ + off_t b, e; +} SEEKREC; +SEEKREC SeekRec[2000]; +int SeekIndex = 0; +off_t SeekMedia; + +long JbgOptions[5] = +{ + /* Order */ + JBG_ILEAVE | JBG_SMID, + /* Options */ + JBG_DELAY_AT | JBG_LRLTWO | JBG_TPDON | JBG_TPBON | JBG_DPON, + /* L0 */ + 128, + /* MX */ + 16, + /* MY */ + 0 +}; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" foo2zjs [options] zjs-file\n" +"\n" +" Convert Ghostscript pbmraw format to a monochrome ZJS stream,\n" +" for driving the Minolta/QMS 2300 DL network color laser printer\n" +" and other Zenographics-based black and white printers.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zm\n" +"\n" +" foo2zjs [options] zjs-file\n" +" foo2zjs [options] zjs-file\n" +"\n" +" Convert Ghostscript bitcmyk or pksmraw format to a color ZJS stream,\n" +" for driving the Minolta/QMS 2300 DL network color laser printer\n" +" N.B. Color correction is expected to be performed by ghostscript.\n" +"\n" +" gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \\ \n" +" -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \\ \n" +" -sOutputFile=- - < testpage.ps \\ \n" +" | foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zc\n" +"\n" +"Normal Options:\n" +"-c Force color mode if autodetect doesn't work\n" +"-d duplex Duplex code to send to printer [%d]\n" +" 1=off, 2=longedge, 3=shortedge\n" +" 4=manual longedge, 5=manual shortedge\n" +"-g x Set page dimensions in pixels [%dx%d]\n" +"-m media Media code to send to printer [%d]\n" +" -z0:\n" +" 1=standard, 2=transparency, 3=glossy, 257=envelope,\n" +" 259=letterhead, 261=thickstock, 262=postcard, 263=labels\n" +" -z1,-z2: above plus\n" +" 258=light, 261=cardstock, 263=rough, 265=labels,\n" +" 267=envelope, 273=vellum, 512=color, 513=letterhead,\n" +" 514=preprinted, 515=prepunched, 516=recycled\n" +"-p paper Paper code to send to printer [%d]\n" +" -z0:\n" +" 1=letter, 5=legal, 7=executive, 9=A4, 11=A5, 13=B5jis\n" +" 20=env#10, 27=envDL 28=envC5 34=envB5 37=envMonarch\n" +" -z1: -z0 plus\n" +" 257=16K 197x273, 258=fanfold german legal, 259=b5iso,\n" +" 260=postcard, 261=doublepostcard, 262=A6\n" +" -z2: -z0 plus\n" +" 43=postcard, 70=A6, 82=double postcard rotated,\n" +" 257=16K 197x273, 263=16K 184x260, 264=16K 195x270,\n" +" 258=fanfold german legal\n" +" -z3: -z0 plus\n" +" 43=postcard, 70=A6, 82=double postcard rotated,\n" +" 257=16K 197x273, 263=16K 184x260, 264=16K 195x270,\n" +" 258=fanfold german legal, 268=photo4x6, 269=photo5x8,\n" +" 270=photo10x15\n" +"-n copies Number of copies [%d]\n" +"-r x Set device resolution in pixels/inch [%dx%d]\n" +"-s source Source code to send to printer [%d]\n" +" 1=upper 2=lower 4=manual 7=auto\n" +" Code numbers may vary with printer model\n" +"-t Draft mode. Every other pixel is white.\n" +"-T density Print density (1-5) [%d].\n" +"-J filename Filename string to send to printer [%s]\n" +"-U username Username string to send to printer [%s]\n" +"\n" +"Printer Tweaking Options:\n" +"-u x Set offset of upper left printable in pixels [%dx%d]\n" +"-l x Set offset of lower right printable in pixels [%dx%d]\n" +"-L mask Send logical clipping values from -u/-l in ZjStream [%d]\n" +" 0=no, 1=Y, 2=X, 3=XY\n" +"-A AllIsBlack: convert C=1,M=1,Y=1 to just K=1\n" +"-B BlackClears: K=1 forces C,M,Y to 0\n" +" -A, -B work with bitcmyk input only\n" +"-P Do not output START_PLANE codes. May be needed by some\n" +" some black and white only printers.\n" +"-X padlen Add extra zero padding to the end of BID segments [%d]\n" +"-z model Model: [%d]\n" +" 0=KM 2300DL / HP 1000 / HP 1005\n" +" 1=HP 1018 / HP 1020 / HP 1022\n" +" 2=HP Pro P1102 / P1566 / P1606dn\n" +" 3=HP Pro CP102?nw\n" +"\n" +"Debugging Options:\n" +"-S plane Output just a single color plane from a color print [all]\n" +" 1=Cyan, 2=Magenta, 3=Yellow, 4=Black\n" +"-D lvl Set Debug level [%d]\n" +"-V Version %s\n" + , Duplex + , PageWidth , PageHeight + , MediaCode + , PaperCode + , Copies + , ResX , ResY + , SourceCode + , PrintDensity + , Filename ? Filename : "" + , Username ? Username : "" + , UpperLeftX , UpperLeftY + , LowerRightX , LowerRightY + , LogicalClip + , ExtraPad + , Model + , Debug + , Version + ); + + exit(1); +} + +/* + * Mirror1: bits 01234567 become 76543210 + */ +unsigned char Mirror1[256] = +{ + 0,128, 64,192, 32,160, 96,224, 16,144, 80,208, 48,176,112,240, + 8,136, 72,200, 40,168,104,232, 24,152, 88,216, 56,184,120,248, + 4,132, 68,196, 36,164,100,228, 20,148, 84,212, 52,180,116,244, + 12,140, 76,204, 44,172,108,236, 28,156, 92,220, 60,188,124,252, + 2,130, 66,194, 34,162, 98,226, 18,146, 82,210, 50,178,114,242, + 10,138, 74,202, 42,170,106,234, 26,154, 90,218, 58,186,122,250, + 6,134, 70,198, 38,166,102,230, 22,150, 86,214, 54,182,118,246, + 14,142, 78,206, 46,174,110,238, 30,158, 94,222, 62,190,126,254, + 1,129, 65,193, 33,161, 97,225, 17,145, 81,209, 49,177,113,241, + 9,137, 73,201, 41,169,105,233, 25,153, 89,217, 57,185,121,249, + 5,133, 69,197, 37,165,101,229, 21,149, 85,213, 53,181,117,245, + 13,141, 77,205, 45,173,109,237, 29,157, 93,221, 61,189,125,253, + 3,131, 67,195, 35,163, 99,227, 19,147, 83,211, 51,179,115,243, + 11,139, 75,203, 43,171,107,235, 27,155, 91,219, 59,187,123,251, + 7,135, 71,199, 39,167,103,231, 23,151, 87,215, 55,183,119,247, + 15,143, 79,207, 47,175,111,239, 31,159, 95,223, 63,191,127,255, +}; + +/* + * Mirror2: bits 01234567 become 67452301 + */ +unsigned char Mirror2[256] = +{ + 0, 64,128,192, 16, 80,144,208, 32, 96,160,224, 48,112,176,240, + 4, 68,132,196, 20, 84,148,212, 36,100,164,228, 52,116,180,244, + 8, 72,136,200, 24, 88,152,216, 40,104,168,232, 56,120,184,248, + 12, 76,140,204, 28, 92,156,220, 44,108,172,236, 60,124,188,252, + 1, 65,129,193, 17, 81,145,209, 33, 97,161,225, 49,113,177,241, + 5, 69,133,197, 21, 85,149,213, 37,101,165,229, 53,117,181,245, + 9, 73,137,201, 25, 89,153,217, 41,105,169,233, 57,121,185,249, + 13, 77,141,205, 29, 93,157,221, 45,109,173,237, 61,125,189,253, + 2, 66,130,194, 18, 82,146,210, 34, 98,162,226, 50,114,178,242, + 6, 70,134,198, 22, 86,150,214, 38,102,166,230, 54,118,182,246, + 10, 74,138,202, 26, 90,154,218, 42,106,170,234, 58,122,186,250, + 14, 78,142,206, 30, 94,158,222, 46,110,174,238, 62,126,190,254, + 3, 67,131,195, 19, 83,147,211, 35, 99,163,227, 51,115,179,243, + 7, 71,135,199, 23, 87,151,215, 39,103,167,231, 55,119,183,247, + 11, 75,139,203, 27, 91,155,219, 43,107,171,235, 59,123,187,251, + 15, 79,143,207, 31, 95,159,223, 47,111,175,239, 63,127,191,255, +}; + +/* + * Mirror4: bits 01234567 become 45670123 + */ +unsigned char Mirror4[256] = +{ + 0, 16, 32, 48, 64, 80, 96,112,128,144,160,176,192,208,224,240, + 1, 17, 33, 49, 65, 81, 97,113,129,145,161,177,193,209,225,241, + 2, 18, 34, 50, 66, 82, 98,114,130,146,162,178,194,210,226,242, + 3, 19, 35, 51, 67, 83, 99,115,131,147,163,179,195,211,227,243, + 4, 20, 36, 52, 68, 84,100,116,132,148,164,180,196,212,228,244, + 5, 21, 37, 53, 69, 85,101,117,133,149,165,181,197,213,229,245, + 6, 22, 38, 54, 70, 86,102,118,134,150,166,182,198,214,230,246, + 7, 23, 39, 55, 71, 87,103,119,135,151,167,183,199,215,231,247, + 8, 24, 40, 56, 72, 88,104,120,136,152,168,184,200,216,232,248, + 9, 25, 41, 57, 73, 89,105,121,137,153,169,185,201,217,233,249, + 10, 26, 42, 58, 74, 90,106,122,138,154,170,186,202,218,234,250, + 11, 27, 43, 59, 75, 91,107,123,139,155,171,187,203,219,235,251, + 12, 28, 44, 60, 76, 92,108,124,140,156,172,188,204,220,236,252, + 13, 29, 45, 61, 77, 93,109,125,141,157,173,189,205,221,237,253, + 14, 30, 46, 62, 78, 94,110,126,142,158,174,190,206,222,238,254, + 15, 31, 47, 63, 79, 95,111,127,143,159,175,191,207,223,239,255, +}; + +int BlackOnes[256] = +{ + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, + 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 +}; + +void +rotate_bytes_180(unsigned char *sp, unsigned char *ep, unsigned char *mirror) +{ + unsigned char tmp; + + while (sp < ep) + { + tmp = mirror[*sp]; + *sp = mirror[*ep]; + *ep = tmp; + ++sp; + --ep; + } + if (sp == ep) + *sp = mirror[*sp]; +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +static void +chunk_write_rsvd(unsigned long type, unsigned int rsvd, + unsigned long items, unsigned long size, FILE *fp) +{ + ZJ_HEADER chunk; + int rc; + + chunk.type = be32(type); + chunk.items = be32(items); + chunk.size = be32(sizeof(ZJ_HEADER) + size); + chunk.reserved = be16(rsvd); + chunk.signature = 0x5a5a; + rc = fwrite(&chunk, 1, sizeof(ZJ_HEADER), fp); + if (rc == 0) error(1, "fwrite(1): rc == 0!\n"); +} + +static void +chunk_write(unsigned long type, unsigned long items, unsigned long size, + FILE *fp) +{ + chunk_write_rsvd(type, 0, items, size, fp); +} + +static void +item_uint32_write(unsigned short item, unsigned long value, FILE *fp) +{ + ZJ_ITEM_UINT32 item_uint32; + int rc; + + item_uint32.header.size = be32(sizeof(ZJ_ITEM_UINT32)); + item_uint32.header.item = be16(item); + item_uint32.header.type = ZJIT_UINT32; + item_uint32.header.param = 0; + item_uint32.value = be32(value); + rc = fwrite(&item_uint32, 1, sizeof(ZJ_ITEM_UINT32), fp); + if (rc == 0) error(1, "fwrite(2): rc == 0!\n"); +} + +static int +item_str_write(unsigned short item, char *str, FILE *fp) +{ + int lenpadded; + ZJ_ITEM_HEADER hdr; + int rc; + + lenpadded = 4 * ((strlen(str)+1 + 3) / 4); + + hdr.size = be32(sizeof(hdr) + lenpadded); + hdr.item = be16(item); + hdr.type = ZJIT_STRING; + hdr.param = 0; + if (fp) + { + rc = fwrite(&hdr, sizeof(hdr), 1, fp); + if (rc == 0) error(1, "fwrite(3): rc == 0!\n"); + rc = fwrite(str, lenpadded, 1, fp); + if (rc == 0) error(1, "fwrite(4): rc == 0!\n"); + } + return (sizeof(hdr) + lenpadded); +} + +/* + * A linked list of compressed data + */ +typedef struct _BIE_CHAIN{ + unsigned char *data; + size_t len; + struct _BIE_CHAIN *next; +} BIE_CHAIN; + +void +free_chain(BIE_CHAIN *chain) +{ + BIE_CHAIN *next; + next = chain; + while ((chain = next)) + { + next = chain->next; + if (chain->data) + free(chain->data); + free(chain); + } +} + +int +write_plane(int planeNum, BIE_CHAIN **root, FILE *fp) +{ + BIE_CHAIN *current = *root; + BIE_CHAIN *next; + int i, len, pad_len; + #define PADTO 4 + + debug(3, "Write Plane %d\n", planeNum); + + /* error handling */ + if (!current) + error(1,"There is no JBIG!\n"); + if (!current->next) + error(1,"There is no or wrong JBIG header!\n"); + if (current->len != 20) + error(1,"wrong BIH length\n"); + + if (planeNum) + { + if (Model == MODEL_HP_PRO_CP) + chunk_write_rsvd(ZJT_START_PLANE, 1 * 12, + 1, 1*sizeof(ZJ_ITEM_UINT32), fp); + else + chunk_write(ZJT_START_PLANE, 1, 1*sizeof(ZJ_ITEM_UINT32), fp); + item_uint32_write(ZJI_PLANE, planeNum, fp); + } + + for (current = *root; current && current->len; current = current->next) + { + if (current == *root) + { + chunk_write(ZJT_JBIG_BIH, 0, current->len, fp); + fwrite(current->data, 1, current->len, fp); + } + else + { + len = current->len; + next = current->next; + if (!next || !next->len) + pad_len = ExtraPad + PADTO * ((len+PADTO-1)/PADTO) - len; + else + pad_len = 0; + chunk_write(ZJT_JBIG_BID, 0, len + pad_len, fp); + fwrite(current->data, 1, len, fp); + for (i = 0; i < pad_len; i++ ) + putc(0, fp); + } + } + + free_chain(*root); + + switch (Model) + { + case MODEL_2300DL: + case MODEL_HP1020: + chunk_write(ZJT_END_JBIG, 0, 0, fp); + break; + case MODEL_HP_PRO: + case MODEL_HP_PRO_CP: + if (Duplex == DMDUPLEX_LONGEDGE || Duplex == DMDUPLEX_SHORTEDGE) + { + int nitems = 1; + + chunk_write_rsvd(ZJT_END_JBIG, nitems * 12, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); + item_uint32_write(ZJI_DMDUPLEX, Duplex, fp); + } + else + chunk_write(ZJT_END_JBIG, 0, 0, fp); + break; + } + + switch (Model) + { + case MODEL_HP_PRO_CP: + if (planeNum) + { + int nitems = 1; + + chunk_write_rsvd(ZJT_END_PLANE, nitems * 12, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); + item_uint32_write(ZJI_PLANE, planeNum, fp); + } + break; + default: + if (planeNum) + chunk_write(ZJT_END_PLANE, 0, 0, fp); + break; + } + + return 0; +} + +void +start_page(BIE_CHAIN **root, int nbie, FILE *ofp) +{ + BIE_CHAIN *current = *root; + unsigned long w, h; + static int pageno = 0; + int nitems; + + /* error handling */ + if (!current) + error(1, "There is no JBIG!\n"); + if (!current->next) + error(1, "There is no or wrong JBIG header!\n"); + if (current->len != 20 ) + error(1,"wrong BIH length\n"); + + /* startpage, jbig_bih, jbig_bid, jbig_end, endpage */ + w = (((long) current->data[ 4] << 24) + | ((long) current->data[ 5] << 16) + | ((long) current->data[ 6] << 8) + | (long) current->data[ 7]); + h = (((long) current->data[ 8] << 24) + | ((long) current->data[ 9] << 16) + | ((long) current->data[10] << 8) + | (long) current->data[11]); + TotalDots = w*h; + debug(9, "start_page: w x h = %d x %d\n", w, h); + + nitems = 12; + if (LogicalOffsetX != 0) + ++nitems; + if (LogicalOffsetY != 0) + ++nitems; + switch (Model) + { + case MODEL_2300DL: + nitems += 4; + nitems += 1; + chunk_write(ZJT_START_PAGE, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), ofp); + break; + case MODEL_HP1020: + nitems += 1; + chunk_write_rsvd(ZJT_START_PAGE, 0x9c, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), ofp); + break; + case MODEL_HP_PRO: + case MODEL_HP_PRO_CP: + nitems += 1; + if (EconoMode) + nitems += 1; + if (Duplex == DMDUPLEX_LONGEDGE || Duplex == DMDUPLEX_SHORTEDGE) + nitems += 1; + chunk_write_rsvd(ZJT_START_PAGE, nitems * 12, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), ofp); + break; + } + + if (Model == MODEL_HP_PRO_CP) + item_uint32_write(ZJI_PLANE, nbie, ofp); + + if ( (Model == MODEL_HP_PRO || Model == MODEL_HP_PRO_CP) && + (Duplex == DMDUPLEX_LONGEDGE || Duplex == DMDUPLEX_SHORTEDGE) ) + item_uint32_write(ZJI_DMDUPLEX, (Duplex <= 3) ? Duplex : 1, ofp); + if (Model == MODEL_2300DL || Model == MODEL_HP1020 || EconoMode) + item_uint32_write(ZJI_ECONOMODE, EconoMode, ofp); + if (Model == MODEL_2300DL) + item_uint32_write(22, 1, ofp); + item_uint32_write(ZJI_VIDEO_X, RealWidth / Bpp,ofp); + item_uint32_write(ZJI_VIDEO_Y, h, ofp); + item_uint32_write(ZJI_VIDEO_BPP, Bpp, ofp); + + if (Model == MODEL_HP_PRO_CP) + item_uint32_write(ZJI_RASTER_X, w, ofp); + else + item_uint32_write(ZJI_RASTER_X, RealWidth, ofp); + + item_uint32_write(ZJI_RASTER_Y, h, ofp); + if (LogicalOffsetX != 0) + item_uint32_write(ZJI_OFFSET_X, LogicalOffsetX, ofp); + if (LogicalOffsetY != 0) + item_uint32_write(ZJI_OFFSET_Y, LogicalOffsetY, ofp); + if (Model == MODEL_2300DL) + { + item_uint32_write(ZJI_MINOLTA_CUSTOM_X, + PaperCode == 256 ? PageWidth : 0, ofp); + item_uint32_write(ZJI_MINOLTA_CUSTOM_Y, + PaperCode == 256 ? PageHeight : 0, ofp); + } + item_uint32_write(ZJI_NBIE, nbie, ofp); + item_uint32_write(ZJI_RESOLUTION_X, ResX, ofp); + item_uint32_write(ZJI_RESOLUTION_Y, ResY, ofp); + if (Model == MODEL_HP_PRO) + item_uint32_write(ZJI_RET, 1, ofp); + item_uint32_write(ZJI_DMDEFAULTSOURCE, SourceCode, ofp); + item_uint32_write(ZJI_DMCOPIES, Copies, ofp); + item_uint32_write(ZJI_DMPAPER, PaperCode, ofp); + item_uint32_write(ZJI_DMMEDIATYPE, MediaCode, ofp); + if (even_page(PageNum) && EvenPages) + SeekMedia = ftell(EvenPages) - 4; + ++pageno; + if (Model == MODEL_2300DL) + item_uint32_write(ZJI_MINOLTA_PAGE_NUMBER, pageno, ofp); + if (IsCUPS) + fprintf(stderr, "PAGE: %d %d\n", pageno, Copies); +} + +void +end_page(FILE *ofp) +{ + switch (Model) + { + case MODEL_2300DL: + case MODEL_HP1020: + chunk_write(ZJT_END_PAGE, 0, 0, ofp); + break; + case MODEL_HP_PRO: + if (Duplex == DMDUPLEX_LONGEDGE || Duplex == DMDUPLEX_SHORTEDGE) + { + int nitems = 1; + + chunk_write_rsvd(ZJT_END_PAGE, nitems * 12, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), ofp); + item_uint32_write(ZJI_DMDUPLEX, Duplex, ofp); + } + else + chunk_write(ZJT_END_PAGE, 0, 0, ofp); + break; + case MODEL_HP_PRO_CP: + { + int nitems = 8; + + chunk_write_rsvd(ZJT_END_PAGE, nitems * 12, + nitems, nitems * sizeof(ZJ_ITEM_UINT32), ofp); + item_uint32_write(ZJI_HP_CDOTS, Dots[0], ofp); + item_uint32_write(ZJI_HP_MDOTS, Dots[2], ofp); + item_uint32_write(ZJI_HP_YDOTS, Dots[1], ofp); + item_uint32_write(ZJI_HP_KDOTS, Dots[3], ofp); + item_uint32_write(ZJI_HP_CWHITE, Dots[0], ofp); + item_uint32_write(ZJI_HP_MWHITE, Dots[2], ofp); + item_uint32_write(ZJI_HP_YWHITE, Dots[1], ofp); + item_uint32_write(ZJI_HP_KWHITE, Dots[3], ofp); + } + break; + } +} + +int +write_page(BIE_CHAIN **root, BIE_CHAIN **root2, + BIE_CHAIN **root3, BIE_CHAIN **root4, FILE *ofp) +{ + int nbie = root2 ? 4 : 1; + + start_page(root, nbie, ofp); + + if (root3) + write_plane(3, root3, ofp); + if (root2) + write_plane(2, root2, ofp); + if (root) + { + if (OutputStartPlane) + write_plane(nbie == 1 ? 4 : 1, root, ofp); + else + write_plane(nbie == 1 ? 0 : 1, root, ofp); + } + if (root4) + write_plane(4, root4, ofp); + + end_page(ofp); + return 0; +} + +/* + * This creates a linked list of compressed data. The first item + * in the list is the BIH and is always 20 bytes in size. Each following + * item is 65536 bytes in length. The last item length is whatever remains. + */ +void +output_jbig(unsigned char *start, size_t len, void *cbarg) +{ + BIE_CHAIN *current, **root = (BIE_CHAIN **) cbarg; + int size = 65536; // Printer does strange things otherwise. + + if ( (*root) == NULL) + { + (*root) = malloc(sizeof(BIE_CHAIN)); + if (!(*root)) + error(1, "Can't allocate space for chain\n"); + + (*root)->data = NULL; + (*root)->next = NULL; + (*root)->len = 0; + size = 20; + if (len != 20) + error(1, "First chunk must be BIH and 20 bytes long\n"); + } + + current = *root; + while (current->next) + current = current->next; + + while (len > 0) + { + int amt, left; + + if (!current->data) + { + current->data = malloc(size); + if (!current->data) + error(1, "Can't allocate space for compressed data\n"); + } + + left = size - current->len; + amt = (len > left) ? left : len; + memcpy(current->data + current->len, start, amt); + current->len += amt; + len -= amt; + start += amt; + + if (current->len == size) + { + current->next = malloc(sizeof(BIE_CHAIN)); + if (!current->next) + error(1, "Can't allocate space for chain\n"); + current = current->next; + current->data = NULL; + current->next = NULL; + current->len = 0; + } + } +} + +void +start_doc(FILE *fp) +{ + char header[4] = "JZJZ"; // Big-endian data + int nitems; + int size; + time_t now; + struct tm *tmp; + char datetime[14+1]; + + switch (Model) + { + case MODEL_HP1020: + case MODEL_HP_PRO: + case MODEL_HP_PRO_CP: + now = time(NULL); + tmp = localtime(&now); + strftime(datetime, sizeof(datetime), "%Y%m%d%H%M%S", tmp); + + fprintf(fp, "\033%%-12345X@PJL JOB\n"); + fprintf(fp, "@PJL SET JAMRECOVERY=OFF\n"); + fprintf(fp, "@PJL SET DENSITY=%d\n", PrintDensity); + fprintf(fp, "@PJL SET ECONOMODE=%s\n", EconoMode ? "ON" : "OFF"); + fprintf(fp, "@PJL SET RET=MEDIUM\n"); + fprintf(fp, "@PJL INFO STATUS\n"); + fprintf(fp, "@PJL USTATUS DEVICE = ON\n"); + fprintf(fp, "@PJL USTATUS JOB = ON\n"); + fprintf(fp, "@PJL USTATUS PAGE = ON\n"); + fprintf(fp, "@PJL USTATUS TIMED = 30\n"); + fprintf(fp, "@PJL SET JOBATTR=\"JobAttr4=%s\"", datetime); + fputc(0, fp); + fprintf(fp, "\033%%-12345X"); + break; + } + + fwrite(header, 1, sizeof(header), fp); + + nitems = 1; + switch (Model) + { + case MODEL_2300DL: + nitems += 3; + break; + case MODEL_HP1020: + case MODEL_HP_PRO_CP: + nitems += 2; + break; + case MODEL_HP_PRO: + if (Duplex != DMDUPLEX_LONGEDGE && Duplex != DMDUPLEX_SHORTEDGE) + ++nitems; + break; + } + size = nitems * sizeof(ZJ_ITEM_UINT32); + if (Username) + { + ++nitems; + size += item_str_write(0, Username, NULL); + } + if (Filename) + { + ++nitems; + size += item_str_write(0, Filename, NULL); + } + + switch (Model) + { + case MODEL_2300DL: + chunk_write(ZJT_START_DOC, nitems, size, fp); + break; + case MODEL_HP1020: + chunk_write_rsvd(ZJT_START_DOC, 0x24, nitems, size, fp); + break; + case MODEL_HP_PRO: + case MODEL_HP_PRO_CP: + chunk_write_rsvd(ZJT_START_DOC, nitems * 0x0c, nitems, size, fp); + break; + } + + item_uint32_write(ZJI_DMCOLLATE, 0, fp); + switch (Model) + { + case MODEL_2300DL: + case MODEL_HP1020: + case MODEL_HP_PRO_CP: + item_uint32_write(ZJI_DMDUPLEX, (Duplex <= 3) ? Duplex : 1, fp); + item_uint32_write(ZJI_PAGECOUNT, 0, fp); + break; + case MODEL_HP_PRO: + if (Duplex != DMDUPLEX_LONGEDGE && Duplex != DMDUPLEX_SHORTEDGE) + item_uint32_write(ZJI_DMDUPLEX, 1, fp); + break; + } + + if (Model == MODEL_2300DL) + item_uint32_write(ZJI_QUANTITY, 1, fp); + // item_uint32_write(ZJI_QMS_FINEMODE, 0, fp); + // item_uint32_write(ZJI_QMS_OUTBIN, 1, fp); + + if (Username) + item_str_write(ZJI_MINOLTA_USERNAME, Username, fp); + if (Filename) + item_str_write(ZJI_MINOLTA_FILENAME, Filename, fp); +} + +void +end_doc(FILE *fp) +{ + int nitems; + + nitems = 0; + chunk_write(ZJT_END_DOC , nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); + + switch (Model) + { + case MODEL_HP1020: + case MODEL_HP_PRO: + case MODEL_HP_PRO_CP: + fprintf(fp, "\033%%-12345X@PJL EOJ\n"); + fprintf(fp, "\033%%-12345X"); + break; + } +} + +void +load_tray2(FILE *fp) +{ + int nitems; + + nitems = 0; + chunk_write(ZJT_2600N_PAUSE, nitems, nitems * sizeof(ZJ_ITEM_UINT32), fp); +} + +int +compute_image_dots(int w, int h, unsigned char *bitmap) +{ + int dots = 0; + int x, y, bpl; + + switch (Model) + { + case MODEL_HP_PRO_CP: + bpl = (w + 7) / 8; + for (y = 0; y < h; ++y) + for (x = 0; x < bpl; ++x) + dots += BlackOnes[ bitmap[y*bpl + x] ]; + return dots; + default: + return 0; + } +} + +static int AnyColor; + +void +cmyk_planes(unsigned char *plane[4], unsigned char *raw, int w, int h) +{ + int rawbpl = (w+1) / 2; + int bpl = (w + 7) / 8; + int i; + int x, y; + unsigned char byte; + unsigned char mask[8] = { 128, 64, 32, 16, 8, 4, 2, 1 }; + int aib = AllIsBlack; + int bc = BlackClears; + + if (Model != MODEL_2300DL) + bpl = (bpl + 15) & ~15; + debug(1, "w=%d, bpl=%d, rawbpl=%d\n", w, bpl, rawbpl); + + AnyColor = 0; + for (i = 0; i < 4; ++i) + memset(plane[i], 0, bpl * h); + + // + // Unpack the combined plane into individual color planes + // + // TODO: this can be speeded up using a 256 or 65536 entry lookup table + // + for (y = 0; y < h; ++y) + { + for (x = 0; x < w; ++x) + { + byte = raw[y*rawbpl + x/2]; + + if (aib && (byte & 0xE0) == 0xE0) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x10) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + } + else + { + if (byte & 0x80) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x40) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x20) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE0) AnyColor |= byte; + } + + ++x; + if (aib && (byte & 0x0E) == 0x0E) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + } + else if (byte & 0x1) + { + plane[3][y*bpl + x/8] |= mask[x&7]; + if (!bc) + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + else + { + if (byte & 0x8) plane[0][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x4) plane[1][y*bpl + x/8] |= mask[x&7]; + if (byte & 0x2) plane[2][y*bpl + x/8] |= mask[x&7]; + if (byte & 0xE) AnyColor |= byte; + } + } + } + debug(2, "BlackClears = %d; AnyColor = %s %s %s\n", + BlackClears, + (AnyColor & 0x88) ? "Cyan" : "", + (AnyColor & 0x44) ? "Magenta" : "", + (AnyColor & 0x22) ? "Yellow" : "" + ); +} + +int +cmyk_page(unsigned char *raw, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + int bpl, bpl16; + unsigned char *plane[4], *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + if (Model == MODEL_HP1020 + || Model == MODEL_HP_PRO || Model == MODEL_HP_PRO_CP) + { + w = (w + 127) & ~127; + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + } + else + { + bpl = (w + 7) / 8; + bpl16 = bpl; + } + debug(1, "w = %d, bpl = %d, bpl16 = %d\n", w, bpl, bpl16); + + for (i = 0; i < 4; ++i) + { + plane[i] = malloc(bpl16 * h); + if (!plane[i]) error(3, "Cannot allocate space for bit plane\n"); + chain[i] = NULL; + } + + cmyk_planes(plane, raw, RealWidth, h); + for (i = 0; i < 4; ++i) + { + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + Dots[i] = compute_image_dots(w, h, plane[i]); + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + for (i = 0; i < 4; ++i) + free(plane[i]); + return 0; +} + +int +pksm_page(unsigned char *plane[4], int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain[4]; + int i; + unsigned char *bitmaps[4][1]; + struct jbg_enc_state se[4]; + + RealWidth = w; + if (Model == MODEL_HP1020 + || Model == MODEL_HP_PRO || Model == MODEL_HP_PRO_CP) + w = (w + 127) & ~127; + + for (i = 0; i < 4; ++i) + chain[i] = NULL; + + for (i = 0; i < 4; ++i) + { + Dots[i] = compute_image_dots(w, h, plane[i]); + + *bitmaps[i] = plane[i]; + + jbg_enc_init(&se[i], w, h, 1, bitmaps[i], output_jbig, &chain[i]); + jbg_enc_options(&se[i], JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se[i]); + jbg_enc_free(&se[i]); + } + + if (Color2Mono) + write_page(&chain[Color2Mono-1], NULL, NULL, NULL, ofp); + else if (AnyColor) + write_page(&chain[0], &chain[1], &chain[2], &chain[3], ofp); + else + write_page(&chain[3], NULL, NULL, NULL, ofp); + + return 0; +} + +int +pbm_page(unsigned char *buf, int w, int h, FILE *ofp) +{ + BIE_CHAIN *chain = NULL; + unsigned char *bitmaps[1]; + struct jbg_enc_state se; + + RealWidth = w; + if (Model == MODEL_HP1020 + || Model == MODEL_HP_PRO || Model == MODEL_HP_PRO_CP) + w = (w + 127) & ~127; + + if (SaveToner) + { + int x, y; + int bpl, bpl16; + + bpl = (w + 7) / 8; + if (Model == MODEL_2300DL) + bpl16 = bpl; + else + bpl16 = (bpl + 15) & ~15; + + for (y = 0; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0x55; + for (y = 1; y < h; y += 2) + for (x = 0; x < bpl16; ++x) + buf[y*bpl16 + x] &= 0xaa; + } + + if (Model == MODEL_HP_PRO || Model == MODEL_HP_PRO_CP) + { + int x, y; + int bpl, bpl16; + + /* + * Blank initial lines for .25" + */ + bpl = (w + 7) / 8; + bpl16 = (bpl + 15) & ~15; + + if (0) + for (y = 0; y < 150; ++y) + memset(buf + y*bpl16, 0, bpl16); + + if (0) + for (y = 0; y < h; y += 1) + { + for (x = 0; x < 32; ++x) + buf[y*bpl16 + x] = 0; + for (x = bpl16 - 32; x < bpl16; ++x) + buf[y*bpl16 + x] = 0; + } + if (0) + for (y = h - 200; y < h; y += 1) + memset(buf + y*bpl16, 0, bpl16); + } + + Dots[3] = compute_image_dots(w, h, buf); + + *bitmaps = buf; + + debug(9, "w x h = %d x %d\n", w, h); + jbg_enc_init(&se, w, h, 1, bitmaps, output_jbig, &chain); + jbg_enc_options(&se, JbgOptions[0], JbgOptions[1], + JbgOptions[2], JbgOptions[3], JbgOptions[4]); + jbg_enc_out(&se); + jbg_enc_free(&se); + + write_page(&chain, NULL, NULL, NULL, ofp); + + return 0; +} + +int +read_and_clip_image(unsigned char *buf, + int rawBpl, int rightBpl, int pixelsPerByte, + int bpl, int h, int bpl16, FILE *ifp) +{ + unsigned char *rowbuf, *rowp; + int y; + int rc; + + rowbuf = malloc(rawBpl); + if (!rowbuf) + error(1, "Can't allocate row buffer\n"); + + // Clip top rows + if (UpperLeftY) + { + for (y = 0; y < UpperLeftY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc == 0) + goto eof; + if (rc != 1) + error(1, "Premature EOF(1) on input at y=%d\n", y); + } + } + + // Copy the rows that we want to image + rowp = buf; + for (y = 0; y < h; ++y, rowp += bpl16) + { + // Clip left pixel *bytes* + if (UpperLeftX) + { + rc = fread(rowbuf, UpperLeftX / pixelsPerByte, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY) + goto eof; + if (rc != 1) + error(1, "Premature EOF(2) on input at y=%d\n", y); + } + + if (bpl != bpl16) + memset(rowp, 0, bpl16); + rc = fread(rowp, bpl, 1, ifp); + if (rc == 0 && y == 0 && !UpperLeftY && !UpperLeftX) + goto eof; + if (rc != 1) + error(1, "Premature EOF(3) on input at y=%d\n", y); + + // Clip right pixels + if (rightBpl != bpl) + { + rc = fread(rowbuf, rightBpl - bpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(4) on input at y=%d\n", y); + } + } + + // Clip bottom rows + if (LowerRightY) + { + for (y = 0; y < LowerRightY; ++y) + { + rc = fread(rowbuf, rawBpl, 1, ifp); + if (rc != 1) + error(1, "Premature EOF(5) on input at y=%d\n", y); + } + } + + free(rowbuf); + return (0); + +eof: + free(rowbuf); + return (EOF); +} + +int +cmyk_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *buf; + int rawW, rawH, rawBpl; + int rightBpl; + int w, h, bpl; + int rc; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + rawW = PageWidth; + rawH = PageHeight; + rawBpl = (PageWidth + 1) / 2; + + // We only clip multiples of 2 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 1; + UpperLeftX &= ~1; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 1) / 2; + rightBpl = (rawW - UpperLeftX + 1) / 2; + + buf = malloc(bpl * h); + if (!buf) + error(1, "Unable to allocate page buffer of %d x %d = %d bytes\n", + rawW, rawH, rawBpl * rawH); + + for (;;) + { + rc = read_and_clip_image(buf, rawBpl, rightBpl, 2, bpl, h, bpl, ifp); + if (rc == EOF) + goto done; + + ++PageNum; + if (Duplex == DMDUPLEX_LONGEDGE && even_page(PageNum)) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + if (Duplex == DMDUPLEX_MANUALLONG && even_page(PageNum)) + rotate_bytes_180(buf, buf + bpl * h - 1, Mirror4); + + if (even_page(PageNum) && EvenPages) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + cmyk_page(buf, w, h, EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "CMYK Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + else + cmyk_page(buf, w, h, ofp); + } + +done: + free(buf); + return 0; +} + +static unsigned long +getint(FILE *fp) +{ + int c; + unsigned long i = 0; + int rc; + + while ((c = getc(fp)) != EOF && !isdigit(c)) + if (c == '#') + while ((c = getc(fp)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) + { + ungetc(c, fp); + rc = fscanf(fp, "%lu", &i); + if (rc != 1) error(1, "fscanf: rc == 0!\n"); + } + return i; +} + +static void +skip_to_nl(FILE *fp) +{ + for (;;) + { + int c; + c = getc(fp); + if (c == EOF) + error(1, "Premature EOF on input stream\n"); + if (c == '\n') + return; + } +} + +int +pbm_header(FILE *ifp, int *p4eatenp, int *wp, int *hp) +{ + int c1, c2; + + if (*p4eatenp) + *p4eatenp = 0; // P4 already eaten in main + else + { + c1 = getc(ifp); + if (c1 == EOF) + return 0; + c2 = getc(ifp); + if (c1 != 'P' || c2 != '4') + error(1, "Not a pbmraw data stream\n"); + } + + skip_to_nl(ifp); + + *wp = getint(ifp); + *hp = getint(ifp); + skip_to_nl(ifp); + return 1; +} + +int +pksm_pages(FILE *ifp, FILE *ofp) +{ + unsigned char *plane[4]; + int rawW, rawH, rawBpl; + int saveW = 0, saveH = 0; + int rightBpl; + int w, h, bpl; + int bpl16; + int i; + int rc; + int p4eaten = 1; + + // + // Save the original Upper Right clip values as the logical offset, + // because we may adjust them slightly below, in the interest of speed. + // + if (LogicalClip & LOGICAL_CLIP_X) + LogicalOffsetX = UpperLeftX; + if (LogicalClip & LOGICAL_CLIP_Y) + LogicalOffsetY = UpperLeftY; + + for (;;) + { + ++PageNum; + AnyColor = 0; + + for (i = 0; i < 4; ++i) + { + if (pbm_header(ifp, &p4eaten, &rawW, &rawH) == 0) + { + if (i == 0) + goto eof; + else + error(1, "Premature EOF(pksm) on page %d hdr, plane %d\n", + PageNum, i); + } + if (i == 0) + { + saveW = rawW; + saveH = rawH; + } + if (saveW != rawW) + error(1, "Image width changed from %d to %d on plane %d\n", + saveW, rawW, i); + if (saveH != rawH) + error(1, "Image height changed from %d to %d on plane %d\n", + saveH, rawH, i); + + rawBpl = (rawW + 7) / 8; + + // We only clip multiples of 8 pixels off the leading edge, and + // add any remainder to the amount we clip from the right edge. + // Its fast, and good enough for government work. + LowerRightX += UpperLeftX & 7; + UpperLeftX &= ~7; + + w = rawW - UpperLeftX - LowerRightX; + h = rawH - UpperLeftY - LowerRightY; + bpl = (w + 7) / 8; + rightBpl = (rawW - UpperLeftX + 7) / 8; + + if (Model == MODEL_HP1020 + || Model == MODEL_HP_PRO || Model == MODEL_HP_PRO_CP) + bpl16 = (bpl + 15) & ~15; + else + bpl16 = bpl; + debug(1, "bpl=%d bpl16=%d\n", bpl, bpl16); + + plane[i] = malloc(bpl16 * h); + if (!plane[i]) + error(1, "Can't allocate plane buffer\n"); + + rc = read_and_clip_image(plane[i], + rawBpl, rightBpl, 8, bpl, h, bpl16, ifp); + if (rc == EOF) + error(1, "Premature EOF(pksm) on page %d data, plane %d\n", + PageNum, i); + + if (Debug >= 9) + { + FILE *dfp; + char fname[256]; + sprintf(fname, "xxxplane%d", i); + dfp = fopen(fname, "w"); + if (dfp) + { + rc = fwrite(plane[i], bpl*h, 1, dfp); + fclose(dfp); + } + } + + // See if we can optimize this to be a monochrome page + if (!AnyColor && i != 3) + { + unsigned char *p, *e; + + for (p = plane[i], e = p + bpl16*h; p < e; ++p) + if (*p) + { + AnyColor |= 1< '9')) + ++p; + str = p; + if (str[0] == 0) return -3; + *yp = strtoul(str, &p, 10); + if (str == p) return -4; + return (0); +} + +void +do_one(FILE *in) +{ + int mode; + + if (Mode == MODE_COLOR) + { + mode = getc(in); + if (mode != 'P') + { + ungetc(mode, in); + cmyk_pages(in, stdout); + } + else + { + mode = getc(in); + if (mode == '4') + pksm_pages(in, stdout); + else + error(1, "Not a pksmraw file!\n"); + } + } + else + { + mode = getc(in); + if (mode != 'P') + error(1, "Not a pbm file!\n"); + mode = getc(in); + if (mode == '4') + pbm_pages(in, stdout); + else + error(1, "Not a pbmraw file!\n"); + } +} + +int +main(int argc, char *argv[]) +{ + int c; + int i, j; + + while ( (c = getopt(argc, argv, + "cd:g:n:m:p:r:s:tT:u:l:z:L:ABPJ:S:U:X:D:V?h")) != EOF) + switch (c) + { + case 'c': Mode = MODE_COLOR; break; + case 'S': Color2Mono = atoi(optarg); + Mode = MODE_COLOR; + if (Color2Mono < 0 || Color2Mono > 4) + error(1, "Illegal value '%s' for -C\n", optarg); + break; + case 'd': Duplex = atoi(optarg); break; + case 'g': if (parse_xy(optarg, &PageWidth, &PageHeight)) + error(1, "Illegal format '%s' for -g\n", optarg); + if (PageWidth < 0 || PageWidth > 1000000) + error(1, "Illegal X value '%s' for -g\n", optarg); + if (PageHeight < 0 || PageHeight > 1000000) + error(1, "Illegal Y value '%s' for -g\n", optarg); + break; + case 'm': MediaCode = atoi(optarg); break; + case 'n': Copies = atoi(optarg); break; + case 'p': PaperCode = atoi(optarg); break; + case 'r': if (parse_xy(optarg, &ResX, &ResY)) + error(1, "Illegal format '%s' for -r\n", optarg); + break; + case 's': SourceCode = atoi(optarg); break; + case 't': SaveToner = 1; break; + case 'T': PrintDensity = atoi(optarg); + if (PrintDensity < 1 || PrintDensity > 5) + error(1, "Illegal value '%s' for PrintDensity -T\n", + optarg); + break; + case 'u': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &UpperLeftX, &UpperLeftY)) + error(1, "Illegal format '%s' for -u\n", optarg); + break; + case 'l': + if (strcmp(optarg, "0") == 0) + break; + if (parse_xy(optarg, &LowerRightX, &LowerRightY)) + error(1, "Illegal format '%s' for -l\n", optarg); + break; + case 'z': Model = atoi(optarg); + if (Model < 0 || Model > MODEL_LAST) + error(1, "Illegal value '%s' for -z\n", optarg); + break; + case 'L': LogicalClip = atoi(optarg); + if (LogicalClip < 0 || LogicalClip > 3) + error(1, "Illegal value '%s' for -L\n", optarg); + break; + case 'A': AllIsBlack = !AllIsBlack; break; + case 'B': BlackClears = !BlackClears; break; + case 'P': OutputStartPlane = !OutputStartPlane; break; + case 'J': if (optarg[0]) Filename = optarg; break; + case 'U': if (optarg[0]) Username = optarg; break; + case 'X': ExtraPad = atoi(optarg); break; + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + if (UpperLeftX < 0 || UpperLeftX >= PageWidth) + error(1, "Illegal X value '%d' for -u\n", UpperLeftX); + if (UpperLeftY < 0 || UpperLeftY >= PageHeight) + error(1, "Illegal Y value '%d' for -u\n", UpperLeftY); + if (LowerRightX < 0 || LowerRightX >= PageWidth) + error(1, "Illegal X value '%d' for -l\n", LowerRightX); + if (LowerRightY < 0 || LowerRightY >= PageHeight) + error(1, "Illegal Y value '%d' for -l\n", LowerRightY); + + argc -= optind; + argv += optind; + + if (getenv("DEVICE_URI")) + IsCUPS = 1; + + if (Model == MODEL_HP1020 + || Model == MODEL_HP_PRO + || Model == MODEL_HP_PRO_CP) + { + Bpp = ResX / 600; + ResX = 600; + if (SaveToner) + { + SaveToner = 0; + EconoMode = 1; + } + } + + if (Model == MODEL_HP_PRO || Model == MODEL_HP_PRO_CP) + JbgOptions[3] = 0; /* MX = 0 */ + + switch (Duplex) + { + case DMDUPLEX_MANUALLONG: + case DMDUPLEX_MANUALSHORT: + EvenPages = tmpfile(); + break; + } + + start_doc(stdout); + + if (argc == 0) + { + do_one(stdin); + } + else + { + for (i = 0; i < argc; ++i) + { + FILE *ifp; + + ifp = fopen(argv[i], "r"); + if (!ifp) + error(1, "Can't open '%s' for reading\n", argv[i]); + do_one(ifp); + fclose(ifp); + } + } + + /* + * Do manual duplex + */ + if (EvenPages) + { + DWORD media; + int rc; + + // Handle odd page count + if (odd_page(PageNum)) + { + SeekRec[SeekIndex].b = ftell(EvenPages); + blank_page(EvenPages); + SeekRec[SeekIndex].e = ftell(EvenPages); + debug(1, "Blank Page: %d %ld %ld\n", + PageNum, SeekRec[SeekIndex].b, SeekRec[SeekIndex].e); + SeekIndex++; + } + + /* + * Manual Pause + */ + if (Model == MODEL_HP1020 + || Model == MODEL_HP_PRO + || Model == MODEL_HP_PRO_CP) + load_tray2(stdout); + + fseek(EvenPages, SeekMedia, 0L); + media = be32(DMMEDIA_LETTERHEAD); + rc = fwrite(&media, 1, sizeof(DWORD), EvenPages); + if (rc == 0) error(1, "fwrite(10): rc == 0!\n"); + + // Write even pages in reverse order + for (i = SeekIndex-1; i >= 0; --i) + { + debug(1, "EvenPage: %d %ld %ld\n", + i, SeekRec[i].b, SeekRec[i].e); + fseek(EvenPages, SeekRec[i].b, 0L); + for (j = 0; j < (SeekRec[i].e - SeekRec[i].b); ++j) + putc(getc(EvenPages), stdout); + } + fclose(EvenPages); + } + + end_doc(stdout); + + exit(0); +} diff --git a/foomatic-db/driver/foo2ddst.xml b/foomatic-db/driver/foo2ddst.xml new file mode 100644 index 0000000..b8a048a --- /dev/null +++ b/foomatic-db/driver/foo2ddst.xml @@ -0,0 +1,20 @@ + + foo2ddst + http://foo2ddst.rkkda.com/ + + + foo2ddst-wrapper %A + + + + This is a driver developed for the Ricoh Aficio SP 112 and SP 201. + + <p> + + + + printer/Ricoh-SP_112 + printer/Ricoh-SP_201Nw + printer/Generic-DDST_Printer + + diff --git a/foomatic-db/driver/foo2hbpl2.xml b/foomatic-db/driver/foo2hbpl2.xml new file mode 100644 index 0000000..d89fa67 --- /dev/null +++ b/foomatic-db/driver/foo2hbpl2.xml @@ -0,0 +1,32 @@ + + foo2hbpl2 + http://foo2hbpl.rkkda.com/ + + + foo2hbpl2-wrapper %A + + + + This is a driver developed for the Dell 1355 MFP (printer only), + Dell C1765 MFP (printer only), Epson AcuLaser M1400, + Fuji Xerox Docuprint CM205 (printer only), + Fuji Xerox Docuprint CM215 (printer only), Fuji Xerox DocuPrint P205, + Fuji Xerox DocuPrint M215 (printer only), Xerox WorkCentre 3045 and the + Xerox WorkCentre 6015 MFP (printer only). + + + + printer/Dell-1355 + printer/Dell-C1765 + printer/Epson-AcuLaser_M1400 + printer/Epson-AcuLaser_CX17NF + printer/Xerox-Phaser_3010 + printer/Xerox-Phaser_3040 + printer/Xerox-WorkCentre_3045 + printer/Xerox-WorkCentre_6015 + printer/Fuji_Xerox-DocuPrint_CM205 + printer/Fuji_Xerox-DocuPrint_CM215 + printer/Fuji_Xerox-DocuPrint_M215 + printer/Fuji_Xerox-DocuPrint_P205 + + diff --git a/foomatic-db/driver/foo2hiperc-z1.xml b/foomatic-db/driver/foo2hiperc-z1.xml new file mode 100644 index 0000000..75eddbe --- /dev/null +++ b/foomatic-db/driver/foo2hiperc-z1.xml @@ -0,0 +1,19 @@ + + foo2hiperc-z1 + http://foo2hiperc.rkkda.com/ + + + foo2hiperc-wrapper -z1 %A + + + + This is a driver developed for the Oki Data Color Laser Printers + with an A3/tabloid paper size, like the C810. + + <p> + + + + printer/Oki-C810 + + diff --git a/foomatic-db/driver/foo2hiperc.xml b/foomatic-db/driver/foo2hiperc.xml new file mode 100644 index 0000000..b37c054 --- /dev/null +++ b/foomatic-db/driver/foo2hiperc.xml @@ -0,0 +1,34 @@ + + foo2hiperc + http://foo2hiperc.rkkda.com/ + + + foo2hiperc-wrapper %A + + + + This is a driver developed for the Oki Data Color Laser Printers + C301dn, C310dn, C3200, C3300, C3400, C5100, C5200, C56xx and C5800. + + <p> + + + + printer/Oki-C301dn + printer/Oki-C310dn + printer/Oki-C511dn + printer/Oki-C3100 + printer/Oki-C3200 + printer/Oki-C3300 + printer/Oki-C3400 + printer/Oki-C3530_MFP + printer/Oki-C5100 + printer/Oki-C5200 + printer/Oki-C5500 + printer/Oki-C5600 + printer/Oki-C5650 + printer/Oki-C5800 + printer/Olivetti-d-Color_P160W + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/driver/foo2hp.xml b/foomatic-db/driver/foo2hp.xml new file mode 100644 index 0000000..f303a72 --- /dev/null +++ b/foomatic-db/driver/foo2hp.xml @@ -0,0 +1,24 @@ + + foo2hp + http://foo2hp.rkkda.com/ + + + foo2hp2600-wrapper %A + + + + This is a driver developed for the HP Color LaserJet 2600n printer. + + The driver supports 1-bit or 2-bit per pixel monochrome and + color output, but none of these have been tuned for grayscale + or color correction. + + + + printer/HP-Color_LaserJet_2600n + printer/HP-Color_LaserJet_1600 + printer/HP-Color_LaserJet_CP1215 + printer/Generic-ZJS + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/driver/foo2lava.xml b/foomatic-db/driver/foo2lava.xml new file mode 100644 index 0000000..8aab7f5 --- /dev/null +++ b/foomatic-db/driver/foo2lava.xml @@ -0,0 +1,31 @@ + + foo2lava + http://foo2lava.rkkda.com/ + + + foo2lava-wrapper %A + + + + This is a driver developed for the Konica Minolta magicolor 2530 DL + and the magicolor 1600W (or Oki C110). + + It also works with the Konica Minolta magicolor 1680MF, the + magicolor 1690MF, magicolor 2480 MF, the magicolor 2490 MF, + the magicolor 4690MF, the Xerox Phaser 6115MFP (printer only). + + + + printer/KONICA_MINOLTA-magicolor_1600W + printer/KONICA_MINOLTA-magicolor_1680MF + printer/KONICA_MINOLTA-magicolor_1690MF + printer/KONICA_MINOLTA-magicolor_2480_MF + printer/KONICA_MINOLTA-magicolor_2490_MF + printer/KONICA_MINOLTA-magicolor_2530_DL + printer/KONICA_MINOLTA-magicolor_4690MF + printer/Oki-C110 + printer/Xerox-Phaser_6115MFP + printer/Xerox-Phaser_6121MFP + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/driver/foo2oak-z1.xml b/foomatic-db/driver/foo2oak-z1.xml new file mode 100644 index 0000000..b01323b --- /dev/null +++ b/foomatic-db/driver/foo2oak-z1.xml @@ -0,0 +1,20 @@ + + foo2oak-z1 + http://foo2oak.rkkda.com/ + + + foo2oak-wrapper -z1 %A + + + + This is a driver developed for the Kyocera KM-1635/2035 copier. + + It is possible that this driver will also work for other Oak + Technologies OAKT-based printers, but the author cannot test this. + + + + printer/Kyocera-KM-1635 + printer/Kyocera-KM-2035 + + diff --git a/foomatic-db/driver/foo2oak.xml b/foomatic-db/driver/foo2oak.xml new file mode 100644 index 0000000..ea005e3 --- /dev/null +++ b/foomatic-db/driver/foo2oak.xml @@ -0,0 +1,25 @@ + + foo2oak + http://foo2oak.rkkda.com/ + + + foo2oak-wrapper %A + + + + This is a driver developed for the HP Color LaserJet 1500 laser printer. + + It is possible that this driver will also work for other Oak + Technologies OAKT-based printers, but the author cannot test this. + + The driver supports 1-bit or 2-bit per pixel monochrome and + color output, but none of these have been tuned for grayscale + or color correction. + + + + printer/HP-Color_LaserJet_1500 + printer/Generic-OAKT_Printer + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/driver/foo2qpdl.xml b/foomatic-db/driver/foo2qpdl.xml new file mode 100644 index 0000000..917f178 --- /dev/null +++ b/foomatic-db/driver/foo2qpdl.xml @@ -0,0 +1,33 @@ + + foo2qpdl + http://foo2qpdl.rkkda.com/ + + + foo2qpdl-wrapper %A + + + + This is a driver developed for the Samsung + CLP-300/310/315/320/325/360, CLP-600, CLP-610, CLP-620, + CLX-2160 (printer only), CLX-3160 (printer only). + + And the Xerox Phaser 6110 or Phaser 6110MFP (printer only). + + + + printer/Samsung-CLP-300 + printer/Samsung-CLP-310 + printer/Samsung-CLP-315 + printer/Samsung-CLP-325 + printer/Samsung-CLP-365 + printer/Samsung-CLP-600 + printer/Samsung-CLP-610 + printer/Samsung-CLP-620 + printer/Samsung-CLX-2160 + printer/Samsung-CLX-3160 + printer/Samsung-CLX-3175 + printer/Samsung-CLX-3185 + printer/Xerox-Phaser_6110 + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/driver/foo2slx.xml b/foomatic-db/driver/foo2slx.xml new file mode 100644 index 0000000..c8f11c7 --- /dev/null +++ b/foomatic-db/driver/foo2slx.xml @@ -0,0 +1,19 @@ + + foo2slx + http://foo2slx.rkkda.com/ + + + foo2slx-wrapper %A + + + + This is a driver developed for the Lexmark C500. + + <p> + + + + printer/Lexmark-C500 + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/driver/foo2xqx.xml b/foomatic-db/driver/foo2xqx.xml new file mode 100644 index 0000000..a19fdba --- /dev/null +++ b/foomatic-db/driver/foo2xqx.xml @@ -0,0 +1,29 @@ + + foo2xqx + http://foo2xqx.rkkda.com/ + + + foo2xqx-wrapper %A + + + + This is a driver developed for the HP LaserJet M1005 MFP. + + <p> + + + + printer/HP-LaserJet_M1005_MFP + printer/HP-LaserJet_M1120_MFP + printer/HP-LaserJet_P1005 + printer/HP-LaserJet_P1006 + printer/HP-LaserJet_P1007 + printer/HP-LaserJet_P1008 + printer/HP-LaserJet_P1505 + printer/HP-LaserJet_P1505n + printer/HP-LaserJet_P2014 + printer/HP-LaserJet_P2014n + printer/HP-LaserJet_Pro_M1212nf_MFP + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/driver/foo2zjs-z1.xml b/foomatic-db/driver/foo2zjs-z1.xml new file mode 100644 index 0000000..d2e0e9f --- /dev/null +++ b/foomatic-db/driver/foo2zjs-z1.xml @@ -0,0 +1,27 @@ + + + foo2zjs-z1 + http://foo2zjs.rkkda.com/ + + + foo2zjs-wrapper -z1 -P -L0 %A + + + This driver will also work for the HP LaserJet + 1018, 1020, 1022, P2035, and other + Zenographics-based printers. + + + + printer/HP-LaserJet_1018 + printer/HP-LaserJet_1020 + printer/HP-LaserJet_1022 + printer/HP-LaserJet_1022n + printer/HP-LaserJet_1022nw + printer/HP-LaserJet_P2035 + printer/HP-LaserJet_P2035n + printer/HP-LaserJet_M1319_MFP + + diff --git a/foomatic-db/driver/foo2zjs-z2.xml b/foomatic-db/driver/foo2zjs-z2.xml new file mode 100644 index 0000000..ba21e63 --- /dev/null +++ b/foomatic-db/driver/foo2zjs-z2.xml @@ -0,0 +1,23 @@ + + + foo2zjs-z2 + http://foo2zjs.rkkda.com/ + + + foo2zjs-wrapper -z2 -P -L0 %A + + + This driver will also work for the HP LaserJet + Pro P1102, Pro P1566, Pro P1606dn, P2035, and other + Zenographics-based printers. + + + + printer/HP-LaserJet_Pro_P1102 + printer/HP-LaserJet_Pro_P1102w + printer/HP-LaserJet_Pro_P1566 + printer/HP-LaserJet_Pro_P1606dn + + diff --git a/foomatic-db/driver/foo2zjs-z3.xml b/foomatic-db/driver/foo2zjs-z3.xml new file mode 100644 index 0000000..f54fa6d --- /dev/null +++ b/foomatic-db/driver/foo2zjs-z3.xml @@ -0,0 +1,19 @@ + + + foo2zjs-z3 + http://foo2zjs.rkkda.com/ + + + foo2zjs-wrapper -z3 -P -L0 %A + + + This driver will also work for the HP LaserJet Pro CP1025nw + and other Zenographics-based printers. + + + + printer/HP-LaserJet_Pro_CP1025nw + + diff --git a/foomatic-db/driver/foo2zjs.xml b/foomatic-db/driver/foo2zjs.xml new file mode 100644 index 0000000..380700b --- /dev/null +++ b/foomatic-db/driver/foo2zjs.xml @@ -0,0 +1,35 @@ + + + + foo2zjs + http://foo2zjs.rkkda.com/ + + + foo2zjs-wrapper %A + + + + This is a driver developed for the Minolta magicolor 2300 DL + network color laser printer. + + <p> + + This driver will also work for the HP LaserJet 1000, 1005, + 1018, 1020, 1022, P1102, P1566, P1606dn, P2035, and other + Zenographics-based printers. + + + + printer/KONICA_MINOLTA-magicolor_2430_DL + printer/Minolta-magicolor_2430_DL + printer/Minolta-magicolor_2300_DL + printer/Minolta-magicolor_2200_DL + printer/Minolta-Color_PageWorks_Pro_L + printer/HP-LaserJet_1000 + printer/HP-LaserJet_1005 + printer/Generic-ZjStream_Printer + printer/Generic-GDI_Printer + + diff --git a/foomatic-db/opt/foo2ddst-InputSlot.xml b/foomatic-db/opt/foo2ddst-InputSlot.xml new file mode 100644 index 0000000..68f416d --- /dev/null +++ b/foomatic-db/opt/foo2ddst-InputSlot.xml @@ -0,0 +1,32 @@ + diff --git a/foomatic-db/opt/foo2ddst-MediaType.xml b/foomatic-db/opt/foo2ddst-MediaType.xml new file mode 100644 index 0000000..4d3f9f1 --- /dev/null +++ b/foomatic-db/opt/foo2ddst-MediaType.xml @@ -0,0 +1,47 @@ + diff --git a/foomatic-db/opt/foo2ddst-PageSize.xml b/foomatic-db/opt/foo2ddst-PageSize.xml new file mode 100644 index 0000000..7e3719f --- /dev/null +++ b/foomatic-db/opt/foo2ddst-PageSize.xml @@ -0,0 +1,87 @@ + diff --git a/foomatic-db/opt/foo2ddst-Resolution.xml b/foomatic-db/opt/foo2ddst-Resolution.xml new file mode 100644 index 0000000..a35f879 --- /dev/null +++ b/foomatic-db/opt/foo2ddst-Resolution.xml @@ -0,0 +1,36 @@ + diff --git a/foomatic-db/opt/foo2hbpl2-ColorMode.xml b/foomatic-db/opt/foo2hbpl2-ColorMode.xml new file mode 100644 index 0000000..8ea5718 --- /dev/null +++ b/foomatic-db/opt/foo2hbpl2-ColorMode.xml @@ -0,0 +1,58 @@ + diff --git a/foomatic-db/opt/foo2hbpl2-ICM.xml b/foomatic-db/opt/foo2hbpl2-ICM.xml new file mode 100644 index 0000000..f26c35f --- /dev/null +++ b/foomatic-db/opt/foo2hbpl2-ICM.xml @@ -0,0 +1,106 @@ + diff --git a/foomatic-db/opt/foo2hbpl2-MediaType.xml b/foomatic-db/opt/foo2hbpl2-MediaType.xml new file mode 100644 index 0000000..1ba2d6c --- /dev/null +++ b/foomatic-db/opt/foo2hbpl2-MediaType.xml @@ -0,0 +1,82 @@ + diff --git a/foomatic-db/opt/foo2hbpl2-PageSize.xml b/foomatic-db/opt/foo2hbpl2-PageSize.xml new file mode 100644 index 0000000..1b73f98 --- /dev/null +++ b/foomatic-db/opt/foo2hbpl2-PageSize.xml @@ -0,0 +1,85 @@ + diff --git a/foomatic-db/opt/foo2hbpl2-Resolution.xml b/foomatic-db/opt/foo2hbpl2-Resolution.xml new file mode 100644 index 0000000..a1e4e7d --- /dev/null +++ b/foomatic-db/opt/foo2hbpl2-Resolution.xml @@ -0,0 +1,151 @@ + diff --git a/foomatic-db/opt/foo2hiperc-ColorMode.xml b/foomatic-db/opt/foo2hiperc-ColorMode.xml new file mode 100644 index 0000000..067dead --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-ColorMode.xml @@ -0,0 +1,42 @@ + diff --git a/foomatic-db/opt/foo2hiperc-Compression.xml b/foomatic-db/opt/foo2hiperc-Compression.xml new file mode 100644 index 0000000..011c2f1 --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-Compression.xml @@ -0,0 +1,36 @@ + diff --git a/foomatic-db/opt/foo2hiperc-Duplex.xml b/foomatic-db/opt/foo2hiperc-Duplex.xml new file mode 100644 index 0000000..b3b6cf0 --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-Duplex.xml @@ -0,0 +1,41 @@ + diff --git a/foomatic-db/opt/foo2hiperc-ICM.xml b/foomatic-db/opt/foo2hiperc-ICM.xml new file mode 100644 index 0000000..1a89cd3 --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-ICM.xml @@ -0,0 +1,176 @@ + diff --git a/foomatic-db/opt/foo2hiperc-InputSlot.xml b/foomatic-db/opt/foo2hiperc-InputSlot.xml new file mode 100644 index 0000000..64363cb --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-InputSlot.xml @@ -0,0 +1,58 @@ + diff --git a/foomatic-db/opt/foo2hiperc-MediaType.xml b/foomatic-db/opt/foo2hiperc-MediaType.xml new file mode 100644 index 0000000..962002d --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-MediaType.xml @@ -0,0 +1,41 @@ + diff --git a/foomatic-db/opt/foo2hiperc-PageSize.xml b/foomatic-db/opt/foo2hiperc-PageSize.xml new file mode 100644 index 0000000..c2b8b6f --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-PageSize.xml @@ -0,0 +1,211 @@ + diff --git a/foomatic-db/opt/foo2hiperc-Resolution.xml b/foomatic-db/opt/foo2hiperc-Resolution.xml new file mode 100644 index 0000000..5627f3c --- /dev/null +++ b/foomatic-db/opt/foo2hiperc-Resolution.xml @@ -0,0 +1,47 @@ + diff --git a/foomatic-db/opt/foo2hp-AlignC.xml b/foomatic-db/opt/foo2hp-AlignC.xml new file mode 100644 index 0000000..ba96e23 --- /dev/null +++ b/foomatic-db/opt/foo2hp-AlignC.xml @@ -0,0 +1,22 @@ + diff --git a/foomatic-db/opt/foo2hp-AlignM.xml b/foomatic-db/opt/foo2hp-AlignM.xml new file mode 100644 index 0000000..dfa5eff --- /dev/null +++ b/foomatic-db/opt/foo2hp-AlignM.xml @@ -0,0 +1,22 @@ + diff --git a/foomatic-db/opt/foo2hp-AlignY.xml b/foomatic-db/opt/foo2hp-AlignY.xml new file mode 100644 index 0000000..6dfcf35 --- /dev/null +++ b/foomatic-db/opt/foo2hp-AlignY.xml @@ -0,0 +1,22 @@ + diff --git a/foomatic-db/opt/foo2hp-BitsPerPlane.xml b/foomatic-db/opt/foo2hp-BitsPerPlane.xml new file mode 100644 index 0000000..aef8581 --- /dev/null +++ b/foomatic-db/opt/foo2hp-BitsPerPlane.xml @@ -0,0 +1,36 @@ + diff --git a/foomatic-db/opt/foo2hp-ColorMode.xml b/foomatic-db/opt/foo2hp-ColorMode.xml new file mode 100644 index 0000000..17b10ab --- /dev/null +++ b/foomatic-db/opt/foo2hp-ColorMode.xml @@ -0,0 +1,38 @@ + diff --git a/foomatic-db/opt/foo2hp-Duplex.xml b/foomatic-db/opt/foo2hp-Duplex.xml new file mode 100644 index 0000000..6e792be --- /dev/null +++ b/foomatic-db/opt/foo2hp-Duplex.xml @@ -0,0 +1,37 @@ + diff --git a/foomatic-db/opt/foo2hp-ICM.xml b/foomatic-db/opt/foo2hp-ICM.xml new file mode 100644 index 0000000..44a1c83 --- /dev/null +++ b/foomatic-db/opt/foo2hp-ICM.xml @@ -0,0 +1,87 @@ + diff --git a/foomatic-db/opt/foo2hp-InputSlot.xml b/foomatic-db/opt/foo2hp-InputSlot.xml new file mode 100644 index 0000000..dad3caa --- /dev/null +++ b/foomatic-db/opt/foo2hp-InputSlot.xml @@ -0,0 +1,42 @@ + diff --git a/foomatic-db/opt/foo2hp-MediaType.xml b/foomatic-db/opt/foo2hp-MediaType.xml new file mode 100644 index 0000000..7d563bf --- /dev/null +++ b/foomatic-db/opt/foo2hp-MediaType.xml @@ -0,0 +1,117 @@ + diff --git a/foomatic-db/opt/foo2hp-PrinterType.xml b/foomatic-db/opt/foo2hp-PrinterType.xml new file mode 100644 index 0000000..73a9de9 --- /dev/null +++ b/foomatic-db/opt/foo2hp-PrinterType.xml @@ -0,0 +1,79 @@ + diff --git a/foomatic-db/opt/foo2lava-ColorMode.xml b/foomatic-db/opt/foo2lava-ColorMode.xml new file mode 100644 index 0000000..1abcf13 --- /dev/null +++ b/foomatic-db/opt/foo2lava-ColorMode.xml @@ -0,0 +1,78 @@ + diff --git a/foomatic-db/opt/foo2lava-Duplex.xml b/foomatic-db/opt/foo2lava-Duplex.xml new file mode 100644 index 0000000..c047e8f --- /dev/null +++ b/foomatic-db/opt/foo2lava-Duplex.xml @@ -0,0 +1,37 @@ + diff --git a/foomatic-db/opt/foo2lava-ICM.xml b/foomatic-db/opt/foo2lava-ICM.xml new file mode 100644 index 0000000..d4daaa0 --- /dev/null +++ b/foomatic-db/opt/foo2lava-ICM.xml @@ -0,0 +1,149 @@ + diff --git a/foomatic-db/opt/foo2lava-InputSlot.xml b/foomatic-db/opt/foo2lava-InputSlot.xml new file mode 100644 index 0000000..2197358 --- /dev/null +++ b/foomatic-db/opt/foo2lava-InputSlot.xml @@ -0,0 +1,37 @@ + diff --git a/foomatic-db/opt/foo2lava-MediaType.xml b/foomatic-db/opt/foo2lava-MediaType.xml new file mode 100644 index 0000000..27543fa --- /dev/null +++ b/foomatic-db/opt/foo2lava-MediaType.xml @@ -0,0 +1,67 @@ + diff --git a/foomatic-db/opt/foo2lava-PageSize.xml b/foomatic-db/opt/foo2lava-PageSize.xml new file mode 100644 index 0000000..b6c29cd --- /dev/null +++ b/foomatic-db/opt/foo2lava-PageSize.xml @@ -0,0 +1,97 @@ + diff --git a/foomatic-db/opt/foo2lava-PrinterType.xml b/foomatic-db/opt/foo2lava-PrinterType.xml new file mode 100644 index 0000000..0017ee6 --- /dev/null +++ b/foomatic-db/opt/foo2lava-PrinterType.xml @@ -0,0 +1,167 @@ + diff --git a/foomatic-db/opt/foo2lava-Resolution.xml b/foomatic-db/opt/foo2lava-Resolution.xml new file mode 100644 index 0000000..5585f87 --- /dev/null +++ b/foomatic-db/opt/foo2lava-Resolution.xml @@ -0,0 +1,43 @@ + diff --git a/foomatic-db/opt/foo2oak-BitsPerPlane.xml b/foomatic-db/opt/foo2oak-BitsPerPlane.xml new file mode 100644 index 0000000..b719d88 --- /dev/null +++ b/foomatic-db/opt/foo2oak-BitsPerPlane.xml @@ -0,0 +1,36 @@ + diff --git a/foomatic-db/opt/foo2oak-ColorMode.xml b/foomatic-db/opt/foo2oak-ColorMode.xml new file mode 100644 index 0000000..43b11a7 --- /dev/null +++ b/foomatic-db/opt/foo2oak-ColorMode.xml @@ -0,0 +1,38 @@ + diff --git a/foomatic-db/opt/foo2oak-ICM.xml b/foomatic-db/opt/foo2oak-ICM.xml new file mode 100644 index 0000000..8d24144 --- /dev/null +++ b/foomatic-db/opt/foo2oak-ICM.xml @@ -0,0 +1,76 @@ + diff --git a/foomatic-db/opt/foo2oak-InputSlot.xml b/foomatic-db/opt/foo2oak-InputSlot.xml new file mode 100644 index 0000000..bceafd6 --- /dev/null +++ b/foomatic-db/opt/foo2oak-InputSlot.xml @@ -0,0 +1,42 @@ + diff --git a/foomatic-db/opt/foo2oak-MediaType.xml b/foomatic-db/opt/foo2oak-MediaType.xml new file mode 100644 index 0000000..f033b4c --- /dev/null +++ b/foomatic-db/opt/foo2oak-MediaType.xml @@ -0,0 +1,97 @@ + diff --git a/foomatic-db/opt/foo2oak-z1-Duplex.xml b/foomatic-db/opt/foo2oak-z1-Duplex.xml new file mode 100644 index 0000000..bdf0f6a --- /dev/null +++ b/foomatic-db/opt/foo2oak-z1-Duplex.xml @@ -0,0 +1,37 @@ + diff --git a/foomatic-db/opt/foo2oak-z1-InputSlot.xml b/foomatic-db/opt/foo2oak-z1-InputSlot.xml new file mode 100644 index 0000000..6458317 --- /dev/null +++ b/foomatic-db/opt/foo2oak-z1-InputSlot.xml @@ -0,0 +1,37 @@ + diff --git a/foomatic-db/opt/foo2oak-z1-MediaType.xml b/foomatic-db/opt/foo2oak-z1-MediaType.xml new file mode 100644 index 0000000..85b88b4 --- /dev/null +++ b/foomatic-db/opt/foo2oak-z1-MediaType.xml @@ -0,0 +1,102 @@ + diff --git a/foomatic-db/opt/foo2oak-z1-PageSize.xml b/foomatic-db/opt/foo2oak-z1-PageSize.xml new file mode 100644 index 0000000..06956ec --- /dev/null +++ b/foomatic-db/opt/foo2oak-z1-PageSize.xml @@ -0,0 +1,141 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ColorAdjustB.xml b/foomatic-db/opt/foo2qpdl-ColorAdjustB.xml new file mode 100644 index 0000000..7383225 --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ColorAdjustB.xml @@ -0,0 +1,55 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ColorAdjustC.xml b/foomatic-db/opt/foo2qpdl-ColorAdjustC.xml new file mode 100644 index 0000000..a5c0eb4 --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ColorAdjustC.xml @@ -0,0 +1,55 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ColorAdjustCR.xml b/foomatic-db/opt/foo2qpdl-ColorAdjustCR.xml new file mode 100644 index 0000000..0d3b98b --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ColorAdjustCR.xml @@ -0,0 +1,55 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ColorAdjustMG.xml b/foomatic-db/opt/foo2qpdl-ColorAdjustMG.xml new file mode 100644 index 0000000..8bb3a09 --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ColorAdjustMG.xml @@ -0,0 +1,55 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ColorAdjustS.xml b/foomatic-db/opt/foo2qpdl-ColorAdjustS.xml new file mode 100644 index 0000000..380ed3d --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ColorAdjustS.xml @@ -0,0 +1,55 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ColorAdjustYB.xml b/foomatic-db/opt/foo2qpdl-ColorAdjustYB.xml new file mode 100644 index 0000000..cd3448c --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ColorAdjustYB.xml @@ -0,0 +1,55 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ColorMode.xml b/foomatic-db/opt/foo2qpdl-ColorMode.xml new file mode 100644 index 0000000..734f65a --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ColorMode.xml @@ -0,0 +1,38 @@ + diff --git a/foomatic-db/opt/foo2qpdl-Duplex.xml b/foomatic-db/opt/foo2qpdl-Duplex.xml new file mode 100644 index 0000000..9887b1f --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-Duplex.xml @@ -0,0 +1,67 @@ + diff --git a/foomatic-db/opt/foo2qpdl-ICM.xml b/foomatic-db/opt/foo2qpdl-ICM.xml new file mode 100644 index 0000000..66f0b5f --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-ICM.xml @@ -0,0 +1,202 @@ + diff --git a/foomatic-db/opt/foo2qpdl-InputSlot.xml b/foomatic-db/opt/foo2qpdl-InputSlot.xml new file mode 100644 index 0000000..e5234ae --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-InputSlot.xml @@ -0,0 +1,47 @@ + diff --git a/foomatic-db/opt/foo2qpdl-MediaType.xml b/foomatic-db/opt/foo2qpdl-MediaType.xml new file mode 100644 index 0000000..2ce043a --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-MediaType.xml @@ -0,0 +1,87 @@ + diff --git a/foomatic-db/opt/foo2qpdl-PageSize.xml b/foomatic-db/opt/foo2qpdl-PageSize.xml new file mode 100644 index 0000000..c026b34 --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-PageSize.xml @@ -0,0 +1,112 @@ + diff --git a/foomatic-db/opt/foo2qpdl-PrinterType.xml b/foomatic-db/opt/foo2qpdl-PrinterType.xml new file mode 100644 index 0000000..8a79125 --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-PrinterType.xml @@ -0,0 +1,214 @@ + diff --git a/foomatic-db/opt/foo2qpdl-Resolution.xml b/foomatic-db/opt/foo2qpdl-Resolution.xml new file mode 100644 index 0000000..f87bb88 --- /dev/null +++ b/foomatic-db/opt/foo2qpdl-Resolution.xml @@ -0,0 +1,43 @@ + diff --git a/foomatic-db/opt/foo2slx-ColorMode.xml b/foomatic-db/opt/foo2slx-ColorMode.xml new file mode 100644 index 0000000..c331dec --- /dev/null +++ b/foomatic-db/opt/foo2slx-ColorMode.xml @@ -0,0 +1,38 @@ + diff --git a/foomatic-db/opt/foo2slx-ICM.xml b/foomatic-db/opt/foo2slx-ICM.xml new file mode 100644 index 0000000..462ef6a --- /dev/null +++ b/foomatic-db/opt/foo2slx-ICM.xml @@ -0,0 +1,65 @@ + diff --git a/foomatic-db/opt/foo2slx-InputSlot.xml b/foomatic-db/opt/foo2slx-InputSlot.xml new file mode 100644 index 0000000..0586fcf --- /dev/null +++ b/foomatic-db/opt/foo2slx-InputSlot.xml @@ -0,0 +1,32 @@ + diff --git a/foomatic-db/opt/foo2slx-MediaType.xml b/foomatic-db/opt/foo2slx-MediaType.xml new file mode 100644 index 0000000..01626ec --- /dev/null +++ b/foomatic-db/opt/foo2slx-MediaType.xml @@ -0,0 +1,72 @@ + diff --git a/foomatic-db/opt/foo2slx-PageSize.xml b/foomatic-db/opt/foo2slx-PageSize.xml new file mode 100644 index 0000000..b1800f1 --- /dev/null +++ b/foomatic-db/opt/foo2slx-PageSize.xml @@ -0,0 +1,67 @@ + diff --git a/foomatic-db/opt/foo2slx-Resolution.xml b/foomatic-db/opt/foo2slx-Resolution.xml new file mode 100644 index 0000000..bd3af79 --- /dev/null +++ b/foomatic-db/opt/foo2slx-Resolution.xml @@ -0,0 +1,36 @@ + diff --git a/foomatic-db/opt/foo2xqx-Density.xml b/foomatic-db/opt/foo2xqx-Density.xml new file mode 100644 index 0000000..f45b044 --- /dev/null +++ b/foomatic-db/opt/foo2xqx-Density.xml @@ -0,0 +1,47 @@ + diff --git a/foomatic-db/opt/foo2xqx-Duplex.xml b/foomatic-db/opt/foo2xqx-Duplex.xml new file mode 100644 index 0000000..4dcdf2a --- /dev/null +++ b/foomatic-db/opt/foo2xqx-Duplex.xml @@ -0,0 +1,37 @@ + diff --git a/foomatic-db/opt/foo2xqx-InputSlot.xml b/foomatic-db/opt/foo2xqx-InputSlot.xml new file mode 100644 index 0000000..25c7329 --- /dev/null +++ b/foomatic-db/opt/foo2xqx-InputSlot.xml @@ -0,0 +1,37 @@ + diff --git a/foomatic-db/opt/foo2xqx-MediaType.xml b/foomatic-db/opt/foo2xqx-MediaType.xml new file mode 100644 index 0000000..128ff57 --- /dev/null +++ b/foomatic-db/opt/foo2xqx-MediaType.xml @@ -0,0 +1,122 @@ + diff --git a/foomatic-db/opt/foo2xqx-Resolution.xml b/foomatic-db/opt/foo2xqx-Resolution.xml new file mode 100644 index 0000000..1ed3385 --- /dev/null +++ b/foomatic-db/opt/foo2xqx-Resolution.xml @@ -0,0 +1,36 @@ + diff --git a/foomatic-db/opt/foo2xxx-Copies.xml b/foomatic-db/opt/foo2xxx-Copies.xml new file mode 100644 index 0000000..173ef00 --- /dev/null +++ b/foomatic-db/opt/foo2xxx-Copies.xml @@ -0,0 +1,78 @@ + diff --git a/foomatic-db/opt/foo2xxx-Halftone.xml b/foomatic-db/opt/foo2xxx-Halftone.xml new file mode 100644 index 0000000..fe647b9 --- /dev/null +++ b/foomatic-db/opt/foo2xxx-Halftone.xml @@ -0,0 +1,97 @@ + diff --git a/foomatic-db/opt/foo2xxx-Nup.xml b/foomatic-db/opt/foo2xxx-Nup.xml new file mode 100644 index 0000000..9818fba --- /dev/null +++ b/foomatic-db/opt/foo2xxx-Nup.xml @@ -0,0 +1,136 @@ + diff --git a/foomatic-db/opt/foo2xxx-NupOrient.xml b/foomatic-db/opt/foo2xxx-NupOrient.xml new file mode 100644 index 0000000..c109023 --- /dev/null +++ b/foomatic-db/opt/foo2xxx-NupOrient.xml @@ -0,0 +1,95 @@ + diff --git a/foomatic-db/opt/foo2xxx-Quality.xml b/foomatic-db/opt/foo2xxx-Quality.xml new file mode 100644 index 0000000..f608cf4 --- /dev/null +++ b/foomatic-db/opt/foo2xxx-Quality.xml @@ -0,0 +1,87 @@ + diff --git a/foomatic-db/opt/foo2zjs-ColorMode.xml b/foomatic-db/opt/foo2zjs-ColorMode.xml new file mode 100644 index 0000000..b101943 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-ColorMode.xml @@ -0,0 +1,267 @@ + diff --git a/foomatic-db/opt/foo2zjs-Duplex.xml b/foomatic-db/opt/foo2zjs-Duplex.xml new file mode 100644 index 0000000..8d2901f --- /dev/null +++ b/foomatic-db/opt/foo2zjs-Duplex.xml @@ -0,0 +1,90 @@ + diff --git a/foomatic-db/opt/foo2zjs-ICM.xml b/foomatic-db/opt/foo2zjs-ICM.xml new file mode 100644 index 0000000..b90bc9a --- /dev/null +++ b/foomatic-db/opt/foo2zjs-ICM.xml @@ -0,0 +1,442 @@ + diff --git a/foomatic-db/opt/foo2zjs-InputSlot.xml b/foomatic-db/opt/foo2zjs-InputSlot.xml new file mode 100644 index 0000000..8a7bff3 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-InputSlot.xml @@ -0,0 +1,279 @@ + diff --git a/foomatic-db/opt/foo2zjs-Intent.xml b/foomatic-db/opt/foo2zjs-Intent.xml new file mode 100644 index 0000000..ffbf7d3 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-Intent.xml @@ -0,0 +1,79 @@ + diff --git a/foomatic-db/opt/foo2zjs-MediaType.xml b/foomatic-db/opt/foo2zjs-MediaType.xml new file mode 100644 index 0000000..0f58d86 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-MediaType.xml @@ -0,0 +1,60 @@ + + diff --git a/foomatic-db/opt/foo2zjs-PageSize.xml b/foomatic-db/opt/foo2zjs-PageSize.xml new file mode 100644 index 0000000..d400957 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-PageSize.xml @@ -0,0 +1,154 @@ + + diff --git a/foomatic-db/opt/foo2zjs-PrinterType.xml b/foomatic-db/opt/foo2zjs-PrinterType.xml new file mode 100644 index 0000000..7c1a5bd --- /dev/null +++ b/foomatic-db/opt/foo2zjs-PrinterType.xml @@ -0,0 +1,201 @@ + diff --git a/foomatic-db/opt/foo2zjs-Resolution.xml b/foomatic-db/opt/foo2zjs-Resolution.xml new file mode 100644 index 0000000..a84ce9f --- /dev/null +++ b/foomatic-db/opt/foo2zjs-Resolution.xml @@ -0,0 +1,131 @@ + diff --git a/foomatic-db/opt/foo2zjs-z1-MediaType.xml b/foomatic-db/opt/foo2zjs-z1-MediaType.xml new file mode 100644 index 0000000..6b58912 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-z1-MediaType.xml @@ -0,0 +1,100 @@ + + diff --git a/foomatic-db/opt/foo2zjs-z1-PageSize.xml b/foomatic-db/opt/foo2zjs-z1-PageSize.xml new file mode 100644 index 0000000..87714ea --- /dev/null +++ b/foomatic-db/opt/foo2zjs-z1-PageSize.xml @@ -0,0 +1,115 @@ + + diff --git a/foomatic-db/opt/foo2zjs-z12-Density.xml b/foomatic-db/opt/foo2zjs-z12-Density.xml new file mode 100644 index 0000000..ba8d2ed --- /dev/null +++ b/foomatic-db/opt/foo2zjs-z12-Density.xml @@ -0,0 +1,54 @@ + + diff --git a/foomatic-db/opt/foo2zjs-z2-MediaType.xml b/foomatic-db/opt/foo2zjs-z2-MediaType.xml new file mode 100644 index 0000000..2286ba4 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-z2-MediaType.xml @@ -0,0 +1,110 @@ + + diff --git a/foomatic-db/opt/foo2zjs-z2-PageSize.xml b/foomatic-db/opt/foo2zjs-z2-PageSize.xml new file mode 100644 index 0000000..2cfbb2b --- /dev/null +++ b/foomatic-db/opt/foo2zjs-z2-PageSize.xml @@ -0,0 +1,120 @@ + + diff --git a/foomatic-db/opt/foo2zjs-z3-MediaType.xml b/foomatic-db/opt/foo2zjs-z3-MediaType.xml new file mode 100644 index 0000000..316ce68 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-z3-MediaType.xml @@ -0,0 +1,110 @@ + + diff --git a/foomatic-db/opt/foo2zjs-z3-PageSize.xml b/foomatic-db/opt/foo2zjs-z3-PageSize.xml new file mode 100644 index 0000000..aead387 --- /dev/null +++ b/foomatic-db/opt/foo2zjs-z3-PageSize.xml @@ -0,0 +1,135 @@ + + diff --git a/foomatic-db/printer/Dell-1355.xml b/foomatic-db/printer/Dell-1355.xml new file mode 100644 index 0000000..76714d1 --- /dev/null +++ b/foomatic-db/printer/Dell-1355.xml @@ -0,0 +1,71 @@ + + Dell + 1355 + + + + + + 1200 + 600 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.office.xerox.com/multifunction-printer/color-multifunction/workcentre-6015/enfo.html + + + + + + + + Xerox WorkCentre 6015 + + + C + foo2hbpl2 + + + + The Dell 1355 is color multifunction printer with a 2013 street + price of $250. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Dell-C1765.xml b/foomatic-db/printer/Dell-C1765.xml new file mode 100644 index 0000000..ac0ea9c --- /dev/null +++ b/foomatic-db/printer/Dell-C1765.xml @@ -0,0 +1,71 @@ + + Dell + C1765 + + + + + + 1200 + 600 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://accessories.us.dell.com/sna/productdetail.aspx?c=us&cs=04&l=en&sku=225-4113 + + + + + + + + Xerox WorkCentre 6015 + + + C + foo2hbpl2 + + + + The Dell C1765nf/nfw is color multifunction printer with a 2014 street + price of $170. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Epson-AcuLaser_CX17NF.xml b/foomatic-db/printer/Epson-AcuLaser_CX17NF.xml new file mode 100644 index 0000000..cc22b81 --- /dev/null +++ b/foomatic-db/printer/Epson-AcuLaser_CX17NF.xml @@ -0,0 +1,71 @@ + + Epson + AcuLaser CX17NF + + + + + + 1200 + 600 + + + + + pt + 11.34 + 11.34 + 11.34 + 11.34 + + + + + https://www.epson.co.uk/gb/en/viewcon/corporatesite/products/mainunits/overview/10820 + + + + + + + + Epson AcuLaser CX17NF + + + C + foo2hbpl2 + + + + The Epson AcuLaser CX17NF is a color multifunction printer with + a 2013 street price of $505. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Epson-AcuLaser_M1400.xml b/foomatic-db/printer/Epson-AcuLaser_M1400.xml new file mode 100644 index 0000000..e117ca5 --- /dev/null +++ b/foomatic-db/printer/Epson-AcuLaser_M1400.xml @@ -0,0 +1,71 @@ + + Epson + AcuLaser M1400 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.epson.co.uk/gb/en/viewcon/corporatesite/products/mainunits/overview/9538 + + + + + + + + Epson AcuLaser M1400 + + + C + foo2hbpl2 + + + + The Epson AcuLaser M1400 (USB) + is a monochrome printer with a 2013 street price of $150. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Fuji_Xerox-DocuPrint_CM205.xml b/foomatic-db/printer/Fuji_Xerox-DocuPrint_CM205.xml new file mode 100644 index 0000000..9255dc2 --- /dev/null +++ b/foomatic-db/printer/Fuji_Xerox-DocuPrint_CM205.xml @@ -0,0 +1,71 @@ + + Fuji Xerox + DocuPrint CM205 + + + + + + 1200 + 600 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.office.xerox.com/multifunction-printer/color-multifunction/workcentre-6015/enfo.html + + + + + + + + Xerox WorkCentre 6015 + + + C + foo2hbpl2 + + + + The Xerox WorkCentre 6015/B (USB) and Xerox WorkCentre 6015/N (Net) + are color multifunction printer with a 2013 street price of $250. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Fuji_Xerox-DocuPrint_CM215.xml b/foomatic-db/printer/Fuji_Xerox-DocuPrint_CM215.xml new file mode 100644 index 0000000..1ea5c34 --- /dev/null +++ b/foomatic-db/printer/Fuji_Xerox-DocuPrint_CM215.xml @@ -0,0 +1,75 @@ + + Fuji Xerox + DocuPrint CM215 + + + + + + 2400 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.fujixeroxprinters.com.hk/en/products/multifunctionprinters/docuprintcm215b.aspx + + + + + + + MFG:FUJI XEROX;CMD:HBPL;MDL:DocuPrint CM215;CLS:PRINTER; + + + + + C + foo2hbpl2 + + + + The Fuji Xero DocuPrint CM215b (USB) or CM215fw (Net) is a color + multifunction printer. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Fuji_Xerox-DocuPrint_M215.xml b/foomatic-db/printer/Fuji_Xerox-DocuPrint_M215.xml new file mode 100644 index 0000000..8911483 --- /dev/null +++ b/foomatic-db/printer/Fuji_Xerox-DocuPrint_M215.xml @@ -0,0 +1,71 @@ + + Fuji Xerox + DocuPrint M215 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.fujixeroxprinters.com.au/en/products/multifunctionprinters/docuprintm215b.aspx + + + + + + + + Fuji Xerox DocuPrint M215 + + + C + foo2hbpl2 + + + + The Fuji Xerox DocuPrint M215b (USB) or M215fw (network) + is a monochrome MFP printer with a 2014 street price of $130. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Fuji_Xerox-DocuPrint_P205.xml b/foomatic-db/printer/Fuji_Xerox-DocuPrint_P205.xml new file mode 100644 index 0000000..4296a03 --- /dev/null +++ b/foomatic-db/printer/Fuji_Xerox-DocuPrint_P205.xml @@ -0,0 +1,71 @@ + + Fuji Xerox + DocuPrint P205 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.fujixeroxprinters.com.au/en/products/blackwhiteprinters/docuprintp205b.aspx + + + + + + + + Fuji Xerox DocuPrint P205 + + + C + foo2hbpl2 + + + + The Fuji Xerox DocuPrint P205b (USB) + is a monochrome printer with a 2013 street price of $100. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Generic-OAKT_Printer.xml b/foomatic-db/printer/Generic-OAKT_Printer.xml new file mode 100644 index 0000000..da20df2 --- /dev/null +++ b/foomatic-db/printer/Generic-OAKT_Printer.xml @@ -0,0 +1,55 @@ + + Generic + OAKT Printer + + + + + + + + + + + + + + + + + + + + + + D + foo2oak + + + + OAKT printers understand a simple printer language that uses JBIG + compression to send a bitmap (raster) image of the printed page to the + printer. This printer language was designed by Oak Technology (now Zoran) + and is licensed by (at least) HP for the Color LaserJet 1500. The printer + language is highly efficient, but requires the host computer to render + characters, halftones, etc. + + If you have a Windows driver for your printer and the "About" panel + for the driver lists Copyright Oak Technology or Zoran, then you may have + a printer that understands the OAKT language. If you print to a file + and the first four characters of the file are "OAKT", then you have + a printer that understands the OAKT language. + + There doesn't seem to be an official name for this language. Oak + Technology calls it simply "Raster Driver". That name is not specific + enough, so we have named it "OAKT", which are the first 4 characters + found in the printer stream. + + There exists a development stage decoder and a printer driver for + this language. However, it is untested and unreleased. If someone + is willing to donate a HP Laserjet 1500 printer and fund the development + of the driver, please contact rickr@mn.rr.com. + + + + diff --git a/foomatic-db/printer/Generic-ZjStream_Printer.xml b/foomatic-db/printer/Generic-ZjStream_Printer.xml new file mode 100644 index 0000000..0752d05 --- /dev/null +++ b/foomatic-db/printer/Generic-ZjStream_Printer.xml @@ -0,0 +1,46 @@ + + Generic + ZjStream Printer + + + + + + + + + + + + + + + + + + + + + + D + foo2zjs + + + + ZjStream printers understand a simple printer language that uses JBIG + compression to send a bitmap (raster) image of the printed page to + the printer. This printer language was designed by Zenographics and + licensed by most major printer manufacturers for at least some of + their product line. The printer language is highly efficient, but + requires the host computer to render characters, halftones, etc. + + If you have a Windows driver for your printer and the "About" panel + for the driver lists Copyright Zenographics, then you probably have a + printer that understands the ZjStream language. + + The "foo2zjs" driver in combination with Ghostscript might + possibly be made to work with these kinds of printers. + + + + diff --git a/foomatic-db/printer/HP-Color_LaserJet_1500.xml b/foomatic-db/printer/HP-Color_LaserJet_1500.xml new file mode 100644 index 0000000..5f0501f --- /dev/null +++ b/foomatic-db/printer/HP-Color_LaserJet_1500.xml @@ -0,0 +1,63 @@ + + HP + Color LaserJet 1500 + + + + + + 600 + 600 + + + + + inch + 0.166666 + 0.166666 + 0.166666 + 0.166666 + + + + + Toner Black (5000 prints) - $70 + Toner Cyan (4000 prints) - $90 + Toner Magenta (4000 prints) - $90 + Toner Yellow (4000 prints) - $90 + Imaging Drum (20000 prints) - $160 + + C9700A + C9701A + C9703A + C9702A + C9704A + + + http://www.hp-expo.com/uk/eng/products/laserjet/q2489a.html + + + + + + + CLS:PRINTER;MDL:hp color LaserJet 1500;MFG:Hewlett-Packard;CMD:OAKRAS; + Hewlett-Packard + hp color LaserJet 1500 + OAKRAS + + + C + foo2oak + + + + The Color LaserJet 1500 is a USB laser printer with a 2003 street + price of $600-$800 USD. This printer is supported by the foo2oak + printer driver. + + The Color LaserJet 1500L comes with a multi-purpose tray only, + the Color LaserJet 1500 comes with an additional 250-sheet tray. + + + diff --git a/foomatic-db/printer/HP-Color_LaserJet_1600.xml b/foomatic-db/printer/HP-Color_LaserJet_1600.xml new file mode 100644 index 0000000..2fc7ae9 --- /dev/null +++ b/foomatic-db/printer/HP-Color_LaserJet_1600.xml @@ -0,0 +1,58 @@ + + HP + Color LaserJet 1600 + + + + + + 600 + 600 + + + + + inch + 0.166666 + 0.166666 + 0.166666 + 0.166666 + + + + + Q6000A HP Color LaserJet black print cartridge [Add $75.00] + Q6001A HP Color LaserJet cyan print cartridge [Add $82.00] + Q6002A HP Color LaserJet yellow print cartridge [Add $82.00] + Q6003A HP Color LaserJet magenta print cartridge [Add $82.00] + + Q6000A + Q6001A + Q6002A + Q6003A + + + http://h50025.www5.hp.com/hpcom/au_en/10_25_102_4870summary.html + + + + + + + MFG:Hewlett-Packard;MDL:HP Color LaserJet 1600;CMD:ACL;CLS:PRINTER;DES:HP Color LaserJet 1600; + Hewlett-Packard + HP Color LaserJet 1600 + ACL + + + C + foo2hp + + + + The Color LaserJet 1600 is color laser printer with a 2005 street + price of $360 USD. This printer is supported by the foo2hp + printer driver. + + + diff --git a/foomatic-db/printer/HP-Color_LaserJet_2600n.xml b/foomatic-db/printer/HP-Color_LaserJet_2600n.xml new file mode 100644 index 0000000..d224fc3 --- /dev/null +++ b/foomatic-db/printer/HP-Color_LaserJet_2600n.xml @@ -0,0 +1,58 @@ + + HP + Color LaserJet 2600n + + + + + + 600 + 600 + + + + + inch + 0.166666 + 0.166666 + 0.166666 + 0.166666 + + + + + Q6000A HP Color LaserJet black print cartridge [Add $75.00] + Q6001A HP Color LaserJet cyan print cartridge [Add $82.00] + Q6002A HP Color LaserJet yellow print cartridge [Add $82.00] + Q6003A HP Color LaserJet magenta print cartridge [Add $82.00] + + Q6000A + Q6001A + Q6002A + Q6003A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236268-15077-f51-446153.html + + + + + + + MFG:Hewlett-Packard;MDL:HP Color LaserJet 2600n;CMD:ACL;CLS:PRINTER;DES:HP Color LaserJet 2600n; + Hewlett-Packard + HP Color LaserJet 2600n + ACL + + + C + foo2hp + + + + The Color LaserJet 2600n is color laser printer with a 2005 street + price of $360 USD. This printer is supported by the foo2hp + printer driver. + + + diff --git a/foomatic-db/printer/HP-Color_LaserJet_CP1215.xml b/foomatic-db/printer/HP-Color_LaserJet_CP1215.xml new file mode 100644 index 0000000..7699e8a --- /dev/null +++ b/foomatic-db/printer/HP-Color_LaserJet_CP1215.xml @@ -0,0 +1,58 @@ + + HP + Color LaserJet CP1215 + + + + + + 600 + 600 + + + + + inch + 0.2 + 0.2 + 0.25 + 0.25 + + + + + Q6000A HP Color LaserJet black print cartridge [Add $75.00] + Q6001A HP Color LaserJet cyan print cartridge [Add $82.00] + Q6002A HP Color LaserJet yellow print cartridge [Add $82.00] + Q6003A HP Color LaserJet magenta print cartridge [Add $82.00] + + Q6000A + Q6001A + Q6002A + Q6003A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328060-15077-3328070-3422474.html + + + + + + + MFG:Hewlett-Packard;MDL:HP Color LaserJet CP1215;CMD:ZJS,HBS,PJL,ACL,HTTP;CLS:PRINTER;DES:HP Color LaserJet CP1215; + Hewlett-Packard + HP Color LaserJet CP1215 + ACL + + + C + foo2hp + + + + The Color LaserJet CP1215 is color laser printer with a 2008 street + price of $199 USD. This printer is supported by the foo2hp + printer driver. + + + diff --git a/foomatic-db/printer/HP-LaserJet_1000.xml b/foomatic-db/printer/HP-LaserJet_1000.xml new file mode 100644 index 0000000..8771b63 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_1000.xml @@ -0,0 +1,60 @@ + + HP + LaserJet 1000 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://www.hp.com/cposupport/prodhome/hplaserjet45675.html + + + + + + + MFG:Hewlett-Packard;MDL:hp LaserJet 1000;CMD:ZJS;CLS:PRINTER;DES:hp LaserJet 1000; + Hewlett-Packard + hp LaserJet 1000 + ZJS + + + B + foo2zjs + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer has a USB + connection. It has only 1 MB of RAM and 32 kB of ROM.<p> + + The firmware of the printer must be uploaded after turning it + on. You can use a hotplug/udev script which comes with foo2zjs, + or do it manually: + "<tt>cat /usr/share/foo2zjs/firmware/sihp1000.dl > + /dev/usb/lp0</tt>". + + + + diff --git a/foomatic-db/printer/HP-LaserJet_1005.xml b/foomatic-db/printer/HP-LaserJet_1005.xml new file mode 100644 index 0000000..9f0d803 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_1005.xml @@ -0,0 +1,58 @@ + + HP + LaserJet 1005 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h20015.www2.hp.com/en/document.jhtml?lc=en&docName=bpl12705 + + + + + + MFG:Hewlett-Packard;MDL:hp LaserJet 1005 series;CMD:ZJS;CLS:PRINTER;DES:hp LaserJet 1005 series; + Hewlett-Packard + hp LaserJet 1005 series + ZJS + + + B + foo2zjs + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has both USB and + parallel connections. It has only 1 MB of RAM and 32 kB of ROM.<p> + + The firmware of the printer must be uploaded after turning it + on. You can use a hotplug/udev script which comes with foo2zjs, + or do it manually: + "<tt>cat /usr/share/foo2zjs/firmware/sihp1005.dl > + /dev/usb/lp0</tt>". + + + diff --git a/foomatic-db/printer/HP-LaserJet_1018.xml b/foomatic-db/printer/HP-LaserJet_1018.xml new file mode 100644 index 0000000..3845ca5 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_1018.xml @@ -0,0 +1,61 @@ + + HP + LaserJet 1018 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $65 + + Q2612A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-439423.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet 1018;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1018; + Hewlett-Packard + HP LaserJet 1018 + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has a USB + connection. It has only 2 MB of RAM and 32 kB of ROM.<p> + + The firmware of the printer must be uploaded after turning it + on. You can use a hotplug/udev script which comes with foo2zjs, + or do it manually: + "<tt>cat /usr/share/foo2zjs/firmware/sihp1018.dl > + /dev/usb/lp0</tt>". + + + + diff --git a/foomatic-db/printer/HP-LaserJet_1020.xml b/foomatic-db/printer/HP-LaserJet_1020.xml new file mode 100644 index 0000000..2398cf5 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_1020.xml @@ -0,0 +1,61 @@ + + HP + LaserJet 1020 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $65 + + Q2612A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-439423.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1020; + Hewlett-Packard + HP LaserJet 1020 + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has a USB + connection. It has only 2 MB of RAM and 32 kB of ROM.<p> + + The firmware of the printer must be uploaded after turning it + on. You can use a hotplug/udev script which comes with foo2zjs, + or do it manually: + "<tt>cat /usr/share/foo2zjs/firmware/sihp1020.dl > + /dev/usb/lp0</tt>". + + + + diff --git a/foomatic-db/printer/HP-LaserJet_1022.xml b/foomatic-db/printer/HP-LaserJet_1022.xml new file mode 100644 index 0000000..9f1c5a1 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_1022.xml @@ -0,0 +1,55 @@ + + HP + LaserJet 1022 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $65 + + Q2612A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-439423.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet 1022;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1022; + Hewlett-Packard + HP LaserJet 1022 + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has a USB + connection. It has only 8 MB of RAM and 32 kB of ROM.<p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_1022n.xml b/foomatic-db/printer/HP-LaserJet_1022n.xml new file mode 100644 index 0000000..c899dd3 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_1022n.xml @@ -0,0 +1,55 @@ + + HP + LaserJet 1022n + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $65 + + Q2612A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-439423.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet 1022n;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1022n; + Hewlett-Packard + HP LaserJet 1022n + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1020 and has a USB + and network connection. <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_1022nw.xml b/foomatic-db/printer/HP-LaserJet_1022nw.xml new file mode 100644 index 0000000..3304ecd --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_1022nw.xml @@ -0,0 +1,55 @@ + + HP + LaserJet 1022nw + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $65 + + Q2612A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-439423.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet 1022nw;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1022nw; + Hewlett-Packard + HP LaserJet 1022nw + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1020 and has a USB + and wired or wireless network connection. <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_M1005_MFP.xml b/foomatic-db/printer/HP-LaserJet_M1005_MFP.xml new file mode 100644 index 0000000..eda4d07 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_M1005_MFP.xml @@ -0,0 +1,50 @@ + + HP + LaserJet M1005 MFP + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h20015.www2.hp.com/en/document.jhtml?lc=en&docName=bpl12705 + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet M1005;CMD:ACL;CLS:PRINTER;DES:HP LaserJet M1005;FWVER:20060721; + Hewlett-Packard + HP LaserJet M1005 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_M1120_MFP.xml b/foomatic-db/printer/HP-LaserJet_M1120_MFP.xml new file mode 100644 index 0000000..55a8116 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_M1120_MFP.xml @@ -0,0 +1,50 @@ + + HP + LaserJet M1120 MFP + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h10010.www1.hp.com/wwpc/ie/en/ho/WF06b/5043-5527-5531-5531-12489380-81083169-81084209.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet M1120;CMD:ACL;CLS:PRINTER;DES:HP LaserJet M1120;FWVER:20060721; + Hewlett-Packard + HP LaserJet M1120 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_M1319_MFP.xml b/foomatic-db/printer/HP-LaserJet_M1319_MFP.xml new file mode 100644 index 0000000..c7981fe --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_M1319_MFP.xml @@ -0,0 +1,55 @@ + + HP + LaserJet M1319 MFP + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $78 + + Q2612 + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328064-12004-3328082-3547126.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet M1319;CMD:ACL;CLS:PRINTER;DES:HP LaserJet M1319; + Hewlett-Packard + HP LaserJet M1319 + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1020 and has a USB + or an optional network connection. It has 16 MB of RAM.<p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P1005.xml b/foomatic-db/printer/HP-LaserJet_P1005.xml new file mode 100644 index 0000000..82f698a --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P1005.xml @@ -0,0 +1,51 @@ + + HP + LaserJet P1005 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (1500 prints) - $68 + + CB435A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328059-14638-3328066-3435674.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P1005;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P1005;FWVER:20080415; + Hewlett-Packard + HP LaserJet P1005 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P1006.xml b/foomatic-db/printer/HP-LaserJet_P1006.xml new file mode 100644 index 0000000..bf38538 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P1006.xml @@ -0,0 +1,51 @@ + + HP + LaserJet P1006 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (1500 prints) - $68 + + CB435A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328059-14638-3328066-3435682.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P1006;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P1006;FWVER:20080415; + Hewlett-Packard + HP LaserJet P1006 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P1007.xml b/foomatic-db/printer/HP-LaserJet_P1007.xml new file mode 100644 index 0000000..5f19354 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P1007.xml @@ -0,0 +1,50 @@ + + HP + LaserJet P1007 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328059-14638-3328066-3435674.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P1007;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P1007;FWVER:20080415; + Hewlett-Packard + HP LaserJet P1007 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P1008.xml b/foomatic-db/printer/HP-LaserJet_P1008.xml new file mode 100644 index 0000000..61480b8 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P1008.xml @@ -0,0 +1,50 @@ + + HP + LaserJet P1008 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328059-14638-3328066-3435682.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P1008;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P1008;FWVER:20080415; + Hewlett-Packard + HP LaserJet P1008 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P1505.xml b/foomatic-db/printer/HP-LaserJet_P1505.xml new file mode 100644 index 0000000..5711b8f --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P1505.xml @@ -0,0 +1,50 @@ + + HP + LaserJet P1505 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/18972-18972-3328059-14638-3328066-3435666.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P1505;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P1505;FWVER:20070910; + Hewlett-Packard + HP LaserJet P1505 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P1505n.xml b/foomatic-db/printer/HP-LaserJet_P1505n.xml new file mode 100644 index 0000000..b5527a9 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P1505n.xml @@ -0,0 +1,50 @@ + + HP + LaserJet P1505n + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/18972-18972-3328059-14638-3328066-3435666.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P1505;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P1505;FWVER:20070910; + Hewlett-Packard + HP LaserJet P1505n + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P2014.xml b/foomatic-db/printer/HP-LaserJet_P2014.xml new file mode 100644 index 0000000..b588b6f --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P2014.xml @@ -0,0 +1,50 @@ + + HP + LaserJet P2014 + + + + + 1200 + 1200 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/18972-18972-3328059-14638-3328066-3435666.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P2014;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P2014;FWVER:20070910; + Hewlett-Packard + HP LaserJet P2014 + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P2014n.xml b/foomatic-db/printer/HP-LaserJet_P2014n.xml new file mode 100644 index 0000000..2c14b87 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P2014n.xml @@ -0,0 +1,50 @@ + + HP + LaserJet P2014n + + + + + 1200 + 1200 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/18972-18972-3328059-14638-3328066-3435666.html + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P2014;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P2014;FWVER:20070910; + Hewlett-Packard + HP LaserJet P2014n + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P2035.xml b/foomatic-db/printer/HP-LaserJet_P2035.xml new file mode 100644 index 0000000..10ec59c --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P2035.xml @@ -0,0 +1,55 @@ + + HP + LaserJet P2035 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $89 + + CE505 + + + http://h10010.www1.hp.com/wwpc/us/en/en/WF06b/18972-18972-3328059-14638-236263-3662025-3662026-3662038.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P2035;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P2035; + Hewlett-Packard + HP LaserJet P2035 + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1020 and has a USB + or an optional network connection. It has 16 MB of RAM.<p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_P2035n.xml b/foomatic-db/printer/HP-LaserJet_P2035n.xml new file mode 100644 index 0000000..e43476f --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_P2035n.xml @@ -0,0 +1,55 @@ + + HP + LaserJet P2035n + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $89 + + CE505 + + + http://h10010.www1.hp.com/wwpc/us/en/en/WF06b/18972-18972-3328059-14638-236263-3662025-3662026-3662038.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet P2035;CMD:ACL;CLS:PRINTER;DES:HP LaserJet P2035; + Hewlett-Packard + HP LaserJet P2035n + ACL + + + B + foo2zjs-z1 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1020 and has a USB + or an optional network connection. It has 16 MB of RAM.<p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_Pro_CP1025nw.xml b/foomatic-db/printer/HP-LaserJet_Pro_CP1025nw.xml new file mode 100644 index 0000000..04c6693 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_Pro_CP1025nw.xml @@ -0,0 +1,62 @@ + + HP + LaserJet Pro CP1025nw + + + + + + 1200 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + HP 126A Black Print Cartridge (1200 prints) - $50 + HP 126A Cyan Print Cartridge (1000 prints) - $56 + HP 126A Magenta Print Cartridge (1000 prints) - $56 + HP 126A Yellow Print Cartridge (1000 prints) - $56 + HP 126A LaserJet Imaging Drum (14000 prints) - $80 + + CE310A + CE311A + CE313A + CE312A + CE314A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328060-15077-3328070-4052955.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet CP1025nw;CMD:ZJS,PJL,ACL;CLS:PRINTER;DES:HP LaserJet CP1025nw;FWVER:20100510;LEDMDIS:USB#ff#04#01 + + Hewlett-Packard + HP LaserJet CP1025nw + ZJS,PJL,ACL + + + B + foo2zjs-z3 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_Pro_M1212nf_MFP.xml b/foomatic-db/printer/HP-LaserJet_Pro_M1212nf_MFP.xml new file mode 100644 index 0000000..8ba47e1 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_Pro_M1212nf_MFP.xml @@ -0,0 +1,50 @@ + + HP + LaserJet Professional M1212nf MFP + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Cartridge containing toner and imaging drum + + + + http://www.shopping.hp.com/en_US/home-office/-/products/Printers/HP-LaserJet/CE841A + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet Professional M1212nf;CMD:ACL;CLS:PRINTER;DES:HP LaserJet Professional M1212nf;FWVER:20060721; + Hewlett-Packard + HP LaserJet Professional M1212nf MFP + XQX + + + B + foo2xqx + + + + + This printer is supported by the foo2xqx free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_Pro_P1102.xml b/foomatic-db/printer/HP-LaserJet_Pro_P1102.xml new file mode 100644 index 0000000..e9e343c --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_Pro_P1102.xml @@ -0,0 +1,55 @@ + + HP + LaserJet Pro P1102 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (1600 prints) - $68 + + CE285A + + + http://h10010.www1.hp.com/wwpc/my/en/sm/WF06b/18972-18972-3328059-3328066-3328066-4110394-4110395.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet Professional P1102;CMD:ZJS,PJL,ACL,HTTP;CLS:PRINTER;DES:HP LaserJet Professional P1102;FWVER:20090924; + Hewlett-Packard + HP LaserJet Professional P1102 + ZJS,PJL,ACL,HTTP + + + B + foo2zjs-z2 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has a USB + connection.<p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_Pro_P1102w.xml b/foomatic-db/printer/HP-LaserJet_Pro_P1102w.xml new file mode 100644 index 0000000..f918039 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_Pro_P1102w.xml @@ -0,0 +1,55 @@ + + HP + LaserJet Pro P1102w + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (1600 prints) - $68 + + CE285A + + + http://h10010.www1.hp.com/wwpc/my/en/sm/WF06b/18972-18972-3328059-3328066-3328066-4110394-4110395.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet Professional P1102w;CMD:ZJS,PJL,ACL,HTTP;CLS:PRINTER;DES:HP LaserJet Professional P1102w;FWVER:20091029; + Hewlett-Packard + HP LaserJet Professional P1102w + ZJS,PJL,ACL,HTTP + + + B + foo2zjs-z2 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has a USB and a wireless + connection.<p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_Pro_P1566.xml b/foomatic-db/printer/HP-LaserJet_Pro_P1566.xml new file mode 100644 index 0000000..ebe2f63 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_Pro_P1566.xml @@ -0,0 +1,55 @@ + + HP + LaserJet Pro P1566 + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $65 + + Q2612A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-439423.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet Pro P1566;CMD:ACL;CLS:PRINTER;DES:HP LaserJet Pro P1566; + Hewlett-Packard + HP LaserJet Pro P1566 + ACL + + + B + foo2zjs-z2 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has a USB + connection.<p> + + + + diff --git a/foomatic-db/printer/HP-LaserJet_Pro_P1606dn.xml b/foomatic-db/printer/HP-LaserJet_Pro_P1606dn.xml new file mode 100644 index 0000000..b2f7234 --- /dev/null +++ b/foomatic-db/printer/HP-LaserJet_Pro_P1606dn.xml @@ -0,0 +1,55 @@ + + HP + LaserJet Pro P1606dn + + + + + 600 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Print cartridge (2000 prints) - $65 + + Q2612A + + + http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-18972-3328059-14638-3328066-4110408.html + + + + + + + MFG:Hewlett-Packard;MDL:HP LaserJet Professional P1606dn;CMD:ACL;CLS:PRINTER;DES:HP LaserJet Pro P1606dn; + Hewlett-Packard + HP LaserJet Professional P1606dn + ACL + + + B + foo2zjs-z2 + + + + + This printer is supported by the foo2zjs free software printer driver. + <p> + + The printer is faster than the LaserJet 1000 and has a USB + connection.<p> + + + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_1600W.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_1600W.xml new file mode 100644 index 0000000..6a6d99d --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_1600W.xml @@ -0,0 +1,63 @@ + + KONICA MINOLTA + magicolor 1600W + + + + + + 1200 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Cartridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://kmbs.konicaminolta.us/content/products/models/magicolor1600W.html + + + + + + + MFG:KONICA MINOLTA;CMD:ZJS,PJL,LAVAFLOW;MDL:mc1600W;CLS:PRINTER;DES:KONICA MINOLTA mc1600W; + KONICA MINOLTA + mc1600W + ZJS,PJL,LAVAFLOW + + + KONICA MINOLTA magicolor 1600W + + + B + foo2lava + + + + The magicolor 1600W is a USB color laser printer with a + 2009 street price of $150 USD. This printer is supported + by the foo2lava open software printer driver. + + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_1680MF.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_1680MF.xml new file mode 100644 index 0000000..9312ce8 --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_1680MF.xml @@ -0,0 +1,63 @@ + + KONICA MINOLTA + magicolor 1680MF + + + + + + 1200 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Cartridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://kmbs.konicaminolta.us/content/products/models/magicolor1680MF.html + + + + + + + MFG:KONICA MINOLTA;CMD:ZJS,PJL,LAVAFLOW;MDL:mc1680MF;CLS:PRINTER;DES:KONICA MINOLTA mc1680MF; + KONICA MINOLTA + mc1680MF + ZJS,PJL,LAVAFLOW + + + KONICA MINOLTA magicolor 1680MF + + + B + foo2lava + + + + The magicolor 1680MF is a USB color laser AIO with a + 2009 street price of $294 USD. This printer is supported + by the foo2lava open software printer driver. + + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_1690MF.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_1690MF.xml new file mode 100644 index 0000000..0955b8e --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_1690MF.xml @@ -0,0 +1,63 @@ + + KONICA MINOLTA + magicolor 1690MF + + + + + + 1200 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Cartridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://kmbs.konicaminolta.us/content/products/models/magicolor1690MF.html + + + + + + + MFG:KONICA MINOLTA;CMD:ZJS,PJL,LAVAFLOW;MDL:mc1690MF;CLS:PRINTER;DES:KONICA MINOLTA mc1690MF; + KONICA MINOLTA + mc1690MF + ZJS,PJL,LAVAFLOW + + + KONICA MINOLTA magicolor 1690MF + + + B + foo2lava + + + + The magicolor 1690MF is a network color laser AIO with a + 2009 street price of $300 USD. This printer is supported + by the foo2lava open software printer driver. + + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_2430_DL.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2430_DL.xml new file mode 100644 index 0000000..d85e8e1 --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2430_DL.xml @@ -0,0 +1,63 @@ + + KONICA MINOLTA + magicolor 2430 DL + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Catridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://www.minolta-qms.com/products/color/mc2430DL/index.asp + + + + + + + CLASS:PRINTER;MODEL:magicolor 2430 DL;MANUFACTURER:KONICA MINOLTA;COMMAND SET:ZJS,PJL; + KONICA MINOLTA + magicolor 2430 DL + ZJS,PJL + + + KONICA MINOLTA magicolor 2430 DL + + + B + foo2zjs + + + + The magicolor 2430 DL is a network color laser printer with a + 2005 street price of $500 USD. This printer is supported + by the foo2zjs free software printer driver. + + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_2480_MF.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2480_MF.xml new file mode 100644 index 0000000..87d7abc --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2480_MF.xml @@ -0,0 +1,61 @@ + + KONICA MINOLTA + magicolor 2480 MF + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Catridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://www.minolta-qms.com/products/mfp/mc2480MF/index.asp + + + + + + + CLASS:PRINTER;MODEL:magicolor 2480 MF;MANUFACTURER:KONICA MINOLTA;COMMAND SET:ZJS,PJL; + KONICA MINOLTA + magicolor 2480 MF + ZJS,PJL + + + KONICA MINOLTA magicolor 2480 MF + + + B + foo2lava + + + The magicolor 2480 MF is a network color all-in-one printer/scanner. + The printer *only* is supported by the foo2lava open software printer + driver. + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_2490_MF.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2490_MF.xml new file mode 100644 index 0000000..429d5b8 --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2490_MF.xml @@ -0,0 +1,61 @@ + + KONICA MINOLTA + magicolor 2490 MF + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Catridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://www.minolta-qms.com/products/mfp/mc2490MF/index.asp + + + + + + + CLASS:PRINTER;MODEL:magicolor 2490 MF;MANUFACTURER:KONICA MINOLTA;COMMAND SET:ZJS,PJL; + KONICA MINOLTA + magicolor 2490 MF + ZJS,PJL + + + KONICA MINOLTA magicolor 2490 MF + + + B + foo2lava + + + The magicolor 2490 MF is a network color all-in-one printer/scanner. + The printer *only* is supported by the foo2lava open software printer + driver. + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_2530_DL.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2530_DL.xml new file mode 100644 index 0000000..a9e7227 --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_2530_DL.xml @@ -0,0 +1,63 @@ + + KONICA MINOLTA + magicolor 2530 DL + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Cartridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://www.minolta-qms.com/products/color/mc2530DL/index.asp + + + + + + + MFG:KONICA MINOLTA;CMD:ZJS,PJL,LAVAFLOW;MDL:mc2530DL;CLS:PRINTER;DES:KONICA MINOLTA mc2530DL; + KONICA MINOLTA + mc2530DL + ZJS,PJL,LAVAFLOW + + + KONICA MINOLTA magicolor 2530 DL + + + B + foo2lava + + + + The magicolor 2530 DL is a network color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2lava open software printer driver. + + + diff --git a/foomatic-db/printer/KONICA_MINOLTA-magicolor_4690MF.xml b/foomatic-db/printer/KONICA_MINOLTA-magicolor_4690MF.xml new file mode 100644 index 0000000..77d7d66 --- /dev/null +++ b/foomatic-db/printer/KONICA_MINOLTA-magicolor_4690MF.xml @@ -0,0 +1,61 @@ + + KONICA MINOLTA + magicolor 4690MF + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Catridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://www.minolta-qms.com/products/mfp/mc4690MF/index.asp + + + + + + + CLASS:PRINTER;MODEL:magicolor 4690MF;MANUFACTURER:KONICA MINOLTA;COMMAND SET:ZJS,PJL; + KONICA MINOLTA + magicolor 4690MF + ZJS,PJL + + + KONICA MINOLTA magicolor 4690MF + + + B + foo2lava + + + The magicolor 4690MF is a network color all-in-one printer/scanner. + The printer *only* is supported by the foo2lava open software printer + driver. + + diff --git a/foomatic-db/printer/Kyocera-KM-1635.xml b/foomatic-db/printer/Kyocera-KM-1635.xml new file mode 100644 index 0000000..03dd201 --- /dev/null +++ b/foomatic-db/printer/Kyocera-KM-1635.xml @@ -0,0 +1,53 @@ + + Kyocera + KM-1635 + + + + + + 600 + 600 + + + + + inch + 0.166666 + 0.166666 + 0.166666 + 0.166666 + + + + + Toner Black (15000 prints) - $70 + Imaging Drum (150000 prints) - $160 + + tk410 + + + http://www.kyoceramita.eu/index/products/product/km1635.html + + + + + + C + foo2oak-z1 + + + + The KM-1635 is a copier. Only the print function is supported. + + + diff --git a/foomatic-db/printer/Kyocera-KM-2035.xml b/foomatic-db/printer/Kyocera-KM-2035.xml new file mode 100644 index 0000000..2ec05d7 --- /dev/null +++ b/foomatic-db/printer/Kyocera-KM-2035.xml @@ -0,0 +1,53 @@ + + Kyocera + KM-2035 + + + + + + 600 + 600 + + + + + inch + 0.166666 + 0.166666 + 0.166666 + 0.166666 + + + + + Toner Black (15000 prints) - $70 + Imaging Drum (150000 prints) - $160 + + tk410 + + + http://www.kyoceramita.eu/index/products/product/km2035.html + + + + + + C + foo2oak-z1 + + + + The KM-2035 is a copier. Only the print function is supported. + + + diff --git a/foomatic-db/printer/Lexmark-C500.xml b/foomatic-db/printer/Lexmark-C500.xml new file mode 100644 index 0000000..b470700 --- /dev/null +++ b/foomatic-db/printer/Lexmark-C500.xml @@ -0,0 +1,54 @@ + + Lexmark + C500 + + + + + + 1200 + 600 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (5000 prints) - $90 + Toner Yellow (3000 prints) - $90 + Toner Magenta (3000 prints) - $90 + Toner Cyan (3000 prints) - $90 + Photodeveloper Cartridge (120000 prints) - $205 + + C500H2KG + C500H2YG + C500H2MG + C500H2CG + C500X26G + + + http://www.lexmark.com/lexmark/product/home/435/0,6970,204816596_653293763_728193459_en,00.html + + + + + + + B + foo2slx + + + + The Lexmark C500 is a networked color laser printer with a + 2007 street price of $300 USD. This printer is supported + by the foo2slx open software printer driver. + + + diff --git a/foomatic-db/printer/Minolta-Color_PageWorks_Pro_L.xml b/foomatic-db/printer/Minolta-Color_PageWorks_Pro_L.xml new file mode 100644 index 0000000..d2b6338 --- /dev/null +++ b/foomatic-db/printer/Minolta-Color_PageWorks_Pro_L.xml @@ -0,0 +1,40 @@ + + Minolta + Color PageWorks/Pro L + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + http://www.minolta-qms.com/support/current_printers/color_pwpro_L_sup.htm + + + + + B + foo2zjs + + + + The Minolta Color PageWorks/Pro L is a color laser printer which + uses the Zenographics ZjStream printer language. + + This printer is supported by the foo2zjs free software printer + driver. + + + diff --git a/foomatic-db/printer/Minolta-magicolor_2200_DL.xml b/foomatic-db/printer/Minolta-magicolor_2200_DL.xml new file mode 100644 index 0000000..c4b5a80 --- /dev/null +++ b/foomatic-db/printer/Minolta-magicolor_2200_DL.xml @@ -0,0 +1,66 @@ + + Minolta + magicolor 2200 DL + + + + + + 1200 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (6000 prints) - $77 + Toner Yellow (6000 prints) - $143 + Toner Magenta (6000 prints) - $143 + Toner Cyan (6000 prints) - $143 + OPC Drum Catridge (30000 prints) - $99 + Transfer Belt (100K prints) - $349 + Fuser Oil Roller (21K prints) - $49 + Fuser Unit/Transfer Roller Kit (100K prints) - $499 + Waste Toner Bottle (30000 prints) - $29 + + 1710471-001 + 1710471-002 + 1710471-003 + 1710471-004 + 1710476-001 + 1710478-001 + 1710475-001 + 1710483-001 + 1710477-001 + + + + http://www.minolta-qms.com/products/color/mc2200DL/index.asp + + + + + + + + B + foo2zjs + + + + The magicolor 2200 DL is a network color laser printer which + uses the Zenographics ZjStream printer language. + + This printer is supported by the foo2zjs free software printer + driver. + + + diff --git a/foomatic-db/printer/Minolta-magicolor_2300_DL.xml b/foomatic-db/printer/Minolta-magicolor_2300_DL.xml new file mode 100644 index 0000000..fd6e316 --- /dev/null +++ b/foomatic-db/printer/Minolta-magicolor_2300_DL.xml @@ -0,0 +1,65 @@ + + Minolta + magicolor 2300 DL + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Waste Toner Box (25000 prints) - $19 + OPC Drum Catridge (45000 prints) - $149 + + 1710517-005 + 1710517-006 + 1710517-007 + 1710517-008 + 1710522-001 + 1710520-001 + + + http://www.minolta-qms.com/products/color/mc2300DL/index.asp + + + + + + + CLASS:PRINTER;MODEL:magicolor 2300 DL;MANUFACTURER:MINOLTA-QMS;COMMAND SET:ZJS,PJL; + MINOLTA-QMS + magicolor 2300 DL + ZJS,PJL + + + MINOLTA-QMS magicolor 2300 DL + + + B + foo2zjs + + + + The magicolor 2300 DL is a network color laser printer with a + 2003 street price of $600-$800 USD. This printer is supported + by the foo2zjs free software printer driver. + + + diff --git a/foomatic-db/printer/Minolta-magicolor_2430_DL.xml b/foomatic-db/printer/Minolta-magicolor_2430_DL.xml new file mode 100644 index 0000000..8438805 --- /dev/null +++ b/foomatic-db/printer/Minolta-magicolor_2430_DL.xml @@ -0,0 +1,63 @@ + + Minolta + magicolor 2430 DL + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Catridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://www.minolta-qms.com/products/color/mc2430DL/index.asp + + + + + + + CLASS:PRINTER;MODEL:magicolor 2430 DL;MANUFACTURER:MINOLTA-QMS;COMMAND SET:ZJS,PJL; + KONICA MINOLTA + magicolor 2430 DL + ZJS,PJL + + + MINOLTA-QMS magicolor 2430 DL + + + B + foo2zjs + + + + The magicolor 2430 DL is a network color laser printer with a + 2005 street price of $500 USD. This printer is supported + by the foo2zjs free software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C110.xml b/foomatic-db/printer/Oki-C110.xml new file mode 100644 index 0000000..24edfdb --- /dev/null +++ b/foomatic-db/printer/Oki-C110.xml @@ -0,0 +1,67 @@ + + Oki + C110 + + + + + + 1200 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Cartridge (45000 prints) - $149 + + 44250716 + 44250713 + 44250714 + 44250715 + 44250801 + + + http://my.okidata.com/PP-C110.nsf?opendatabase + + + + + + + MFG:OKI DATA CORP;CMD:GDI;MDL:C110;CLS:PRINTER;DES:OKI C110; + OKI DATA CORP + C110 + GDI;MDL + + + + B + foo2lava + + + + The Oki C110 is a USB color laser printer with a + 2009 street price of $150 USD. This printer is supported + by the foo2lava open software printer driver. + + Is it actually a Konica-Minolta magicolor 1600W. + + + diff --git a/foomatic-db/printer/Oki-C301dn.xml b/foomatic-db/printer/Oki-C301dn.xml new file mode 100644 index 0000000..6714cdf --- /dev/null +++ b/foomatic-db/printer/Oki-C301dn.xml @@ -0,0 +1,58 @@ + + Oki + C301dn + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (2200 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Transfer Belt (60000 prints) - $78 + Fuser Unit (60000 prints) - $78 + Image Drum (30000/20000 prints) - $160 + + 44973536 + 44973533 + 44973534 + 44973535 + 44472202 + 44472603 + 44968301 + + + http://www.oki.co.uk/printers/colour-printers/workgroup-printers/detail.aspx?prodid=tcm:122-131699-16 + + + + + + + B + foo2hiperc + + + + The Oki C301dn is a networked color laser printer with a + 2012 street price of $400 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C3100.xml b/foomatic-db/printer/Oki-C3100.xml new file mode 100644 index 0000000..6158011 --- /dev/null +++ b/foomatic-db/printer/Oki-C3100.xml @@ -0,0 +1,53 @@ + + Oki + C3100 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C3100n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C3100 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C310dn.xml b/foomatic-db/printer/Oki-C310dn.xml new file mode 100644 index 0000000..3a9f135 --- /dev/null +++ b/foomatic-db/printer/Oki-C310dn.xml @@ -0,0 +1,53 @@ + + Oki + C310dn + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://www.oki.co.uk/printers/colour-printers/workgroup-printers/detail.aspx?prodid=tcm:122-107685-16 + + + + + + + B + foo2hiperc + + + + The Oki C310dn is a networked color laser printer with a + 2010 street price of $400 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C3200.xml b/foomatic-db/printer/Oki-C3200.xml new file mode 100644 index 0000000..247e538 --- /dev/null +++ b/foomatic-db/printer/Oki-C3200.xml @@ -0,0 +1,53 @@ + + Oki + C3200 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C3200n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C3200 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C3300.xml b/foomatic-db/printer/Oki-C3300.xml new file mode 100644 index 0000000..db63bd0 --- /dev/null +++ b/foomatic-db/printer/Oki-C3300.xml @@ -0,0 +1,53 @@ + + Oki + C3300 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C3300n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C3300 is a networked color laser printer with a + 2007 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C3400.xml b/foomatic-db/printer/Oki-C3400.xml new file mode 100644 index 0000000..facbc0f --- /dev/null +++ b/foomatic-db/printer/Oki-C3400.xml @@ -0,0 +1,53 @@ + + Oki + C3400 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C3400n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C3400 is a networked color laser printer with a + 2007 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C3530_MFP.xml b/foomatic-db/printer/Oki-C3530_MFP.xml new file mode 100644 index 0000000..e169855 --- /dev/null +++ b/foomatic-db/printer/Oki-C3530_MFP.xml @@ -0,0 +1,55 @@ + + Oki + C3530 MFP + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/PP-C3530nMFP.nsf + + + + + + + B + foo2hiperc + + + + The Oki C3530n MFP is a networked color multifuction printer with + a 2008 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + Only the print function is supported. + + + diff --git a/foomatic-db/printer/Oki-C5100.xml b/foomatic-db/printer/Oki-C5100.xml new file mode 100644 index 0000000..75e3ad7 --- /dev/null +++ b/foomatic-db/printer/Oki-C5100.xml @@ -0,0 +1,53 @@ + + Oki + C5100 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C5100n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C5100 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C511dn.xml b/foomatic-db/printer/Oki-C511dn.xml new file mode 100644 index 0000000..3cc2056 --- /dev/null +++ b/foomatic-db/printer/Oki-C511dn.xml @@ -0,0 +1,58 @@ + + Oki + C511dn + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (7000 prints) - $117 + Toner Yellow (5000 prints) - $150 + Toner Magenta (5000 prints) - $150 + Toner Cyan (5000 prints) - $150 + Transfer Belt (60000 prints) - $78 + Fuser Unit (60000 prints) - $78 + Image Drum (30000/20000 prints) - $160 + + 44973508 + 44469722 + 44469723 + 44469724 + 44472202 + 44472603 + 44968301 + + + http://www.oki.co.uk/printers/colour-printers/workgroup-printers/detail.aspx?prodid=tcm:122-131702-16 + + + + + + + B + foo2hiperc + + + + The Oki C511dn is a networked color laser printer with a + 2014 street price of $275 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C5200.xml b/foomatic-db/printer/Oki-C5200.xml new file mode 100644 index 0000000..03aac87 --- /dev/null +++ b/foomatic-db/printer/Oki-C5200.xml @@ -0,0 +1,53 @@ + + Oki + C5200 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://www.oki.co.uk/ + + + + + + + B + foo2hiperc + + + + The Oki C5200 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C5500.xml b/foomatic-db/printer/Oki-C5500.xml new file mode 100644 index 0000000..54b78a9 --- /dev/null +++ b/foomatic-db/printer/Oki-C5500.xml @@ -0,0 +1,53 @@ + + Oki + C5500 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C5500n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C5500 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C5600.xml b/foomatic-db/printer/Oki-C5600.xml new file mode 100644 index 0000000..ad9f5cf --- /dev/null +++ b/foomatic-db/printer/Oki-C5600.xml @@ -0,0 +1,53 @@ + + Oki + C5600 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C5600n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C5600 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C5650.xml b/foomatic-db/printer/Oki-C5650.xml new file mode 100644 index 0000000..82cf35d --- /dev/null +++ b/foomatic-db/printer/Oki-C5650.xml @@ -0,0 +1,53 @@ + + Oki + C5650 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C5650n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C5650 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C5800.xml b/foomatic-db/printer/Oki-C5800.xml new file mode 100644 index 0000000..7029f81 --- /dev/null +++ b/foomatic-db/printer/Oki-C5800.xml @@ -0,0 +1,53 @@ + + Oki + C5800 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C5800n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C5800 is a networked color laser printer with a + 2006 street price of $399 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Oki-C810.xml b/foomatic-db/printer/Oki-C810.xml new file mode 100644 index 0000000..386c733 --- /dev/null +++ b/foomatic-db/printer/Oki-C810.xml @@ -0,0 +1,53 @@ + + Oki + C810 + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://www.oki.com.au/printers/colour-printers/a3-printers/detail.aspx?prodid=tcm:132-3855-16 + + + + + + + B + foo2hiperc-z1 + + + + The Oki C810 is a networked color laser printer with a + 2013 street price of $870 USD. This printer is supported + by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Olivetti-d-Color_P160W.xml b/foomatic-db/printer/Olivetti-d-Color_P160W.xml new file mode 100644 index 0000000..d042a47 --- /dev/null +++ b/foomatic-db/printer/Olivetti-d-Color_P160W.xml @@ -0,0 +1,53 @@ + + Olivetti + d-Color P160W + + + + + + 600 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $32 + Toner Yellow (1500 prints) - $65 + Toner Magenta (1500 prints) - $65 + Toner Cyan (1500 prints) - $65 + Drum Black (15000 prints) - $100 + Drum Yellow (1500 prints) - $120 + Drum Magenta (1500 prints) - $120 + Drum Cyan (1500 prints) - $120 + + 43034804 + + + http://my.okidata.com/pp-C5800n.nsf + + + + + + + B + foo2hiperc + + + + The Oki C5800 / Olivetti d-Color P160W is a networked color laser + printer with a 2006 street price of $399 USD. This printer is + supported by the foo2hiperc open software printer driver. + + + diff --git a/foomatic-db/printer/Ricoh-SP_112.xml b/foomatic-db/printer/Ricoh-SP_112.xml new file mode 100644 index 0000000..453acd5 --- /dev/null +++ b/foomatic-db/printer/Ricoh-SP_112.xml @@ -0,0 +1,53 @@ + + Ricoh + SP 112 + + + + + 600 + 600 + + + + + inch + 0.2 + 0.2 + 0.2 + 0.2 + + + + + Print cartridge (1200 prints) - $55 + + SP 100LA + + + https://www.ricoh-usa.com/en/products/pd/sp-112-black-and-white-laser-printer/_/R-407431 + + + + + B + foo2ddst + + + + + This printer is supported by the foo2ddst free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/Ricoh-SP_201Nw.xml b/foomatic-db/printer/Ricoh-SP_201Nw.xml new file mode 100644 index 0000000..a6dba31 --- /dev/null +++ b/foomatic-db/printer/Ricoh-SP_201Nw.xml @@ -0,0 +1,53 @@ + + Ricoh + SP 201Nw + + + + + 600 + 600 + + + + + inch + 0.2 + 0.2 + 0.2 + 0.2 + + + + + Print cartridge (1500 prints) - $75 + + SP 201LA + + + https://www.ricoh-usa.com/en/products/pd/sp-201nw-black-and-white-laser-printer/_/R-407203 + + + + + B + foo2ddst + + + + + This printer is supported by the foo2ddst free software printer driver. + <p> + + + + diff --git a/foomatic-db/printer/Samsung-CLP-300.xml b/foomatic-db/printer/Samsung-CLP-300.xml new file mode 100644 index 0000000..0d0ce33 --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-300.xml @@ -0,0 +1,57 @@ + + Samsung + CLP-300 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (2000 prints) - $54 + Toner Yellow (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Cyan (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (20000 prints) - $96 + + CLP-K300A + CLP-Y300A + CLP-M300A + CLP-C300A + CLP-W300A + CLP-R300A + + + http://www.samsung.com/Products/PrinterandMultifunction/ColorLaserPrinters/CLP_300NXAA.asp + + + + + + + B + foo2qpdl + + + + The Samsung CLP-300 (USB) and Samsung CLP-300N (Net) are color laser + printers with a 2007 street price of $299 USD and $349 USD. + + This printer is supported by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLP-310.xml b/foomatic-db/printer/Samsung-CLP-310.xml new file mode 100644 index 0000000..7b00deb --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-310.xml @@ -0,0 +1,65 @@ + + Samsung + CLP-310 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (2000 prints) - $54 + Toner Yellow (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Cyan (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (20000 prints) - $96 + + CLP-K300A + CLP-Y300A + CLP-M300A + CLP-C300A + CLP-W300A + CLP-R300A + + + http://www.samsung.com/us/consumer/detail/detail.do?group=printersmultifunction&type=printersmultifunction&subtype=colorlaserprinters&model_cd=CLP-315/XAA + + + + + + + MFG:Samsung;CMD:SPLC;MDL:CLP-310 Series;CLS:PRINTER; + Samsung + CLP-310 Series + SPLC + + + B + foo2qpdl + + + + The Samsung CLP-310/315 (USB) and Samsung CLP-310N/315W (Net) are + color laser printers with a 2008 street price of $159 USD and $249 USD. + The case is white for the CLP-310, black for the CLP-315. Other than + that, there is no difference. + + This printer is supported by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLP-315.xml b/foomatic-db/printer/Samsung-CLP-315.xml new file mode 100644 index 0000000..33f73e4 --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-315.xml @@ -0,0 +1,65 @@ + + Samsung + CLP-315 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (2000 prints) - $54 + Toner Yellow (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Cyan (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (20000 prints) - $96 + + CLP-K300A + CLP-Y300A + CLP-M300A + CLP-C300A + CLP-W300A + CLP-R300A + + + http://www.samsung.com/Products/PrinterandMultifunction/ColorLaserPrinters/CLP_300NXAA.asp + + + + + + + MFG:Samsung;CMD:SPLC;MDL:CLP-310 Series;CLS:PRINTER; + Samsung + CLP-310 Series + SPLC + + + B + foo2qpdl + + + + The Samsung CLP-310/315 (USB) and Samsung CLP-310N/315W (Net) are + color laser printers with a 2008 street price of $159 USD and $249 USD. + The case is white for the CLP-310, black for the CLP-315. Other than + that, there is no difference. + + This printer is supported by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLP-325.xml b/foomatic-db/printer/Samsung-CLP-325.xml new file mode 100644 index 0000000..37453eb --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-325.xml @@ -0,0 +1,65 @@ + + Samsung + CLP-325 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $54 + Toner Cyan (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Yellow (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (24000 prints) - $96 + + CLT-K407S + CLT-C406S + CLT-M406s + CLT-Y406s + CLT-W409SEE + CLT-R407 + + + http://www.samsung.com/ph/consumer/monitor-peripherals-printer/printer-multifunction/color-laser-printer/CLP-325/XSA/index.idx?pagetype=prd_detail + + + + + + + MFG:Samsung;CMD:SPLC;MDL:CLP-320 Series;CLS:PRINTER; + Samsung + CLP-320 Series + SPLC + + + B + foo2qpdl + + + + The Samsung CLP-320/325 (USB) and Samsung CLP-320N/325W (Net) are + color laser printers with a 2011 street price of $119 USD and $149 USD. + The case is white for the CLP-320, black for the CLP-325. Other than + that, there is no difference. + + This printer is supported by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLP-365.xml b/foomatic-db/printer/Samsung-CLP-365.xml new file mode 100644 index 0000000..332f6fe --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-365.xml @@ -0,0 +1,63 @@ + + Samsung + CLP-365 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $54 + Toner Yellow (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Cyan (1000 prints) - $45 + Waste Toner (7000/1750 prints) - $10 + Imaging Unit (16000/4000 prints) - $96 + + CLT-K406S + CLT-Y406S + CLT-M406S + CLT-C406S + CLT-W406 + CLT-R406 + + + http://www.samsung.com/us/computer/printers/CLP-365W/XAC + + + + + + + MFG:Samsung;CMD:SPLC;MDL:CLP-360 Series;CLS:PRINTER; + Samsung + CLP-360 Series + SPLC + + + B + foo2qpdl + + + + The Samsung CLP-360 (USB) and Samsung CLP-365W (Net) are + color laser printers with a 2012 street price of $230 USD. + + This printer is supported by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLP-600.xml b/foomatic-db/printer/Samsung-CLP-600.xml new file mode 100644 index 0000000..e3ecff2 --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-600.xml @@ -0,0 +1,54 @@ + + Samsung + CLP-600 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (4000 prints) - $80 + Toner Yellow (4000 prints) - $110 + Toner Magenta (4000 prints) - $110 + Toner Cyan (4000 prints) - $110 + Transfer Belt (35000 prints) - $47 + + CLP-K600A + CLP-Y600A + CLP-M600A + CLP-C600A + CLP-T600A + + + http://www.samsung.com/Products/PrinterandMultifunction/ColorLaserPrinters/CLP_600NXAA.asp + + + + + + + B + foo2qpdl + + + + The Samsung CLP-600 is a networked color laser printer with a + 2007 street price of $450 USD. This printer is supported + by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLP-610.xml b/foomatic-db/printer/Samsung-CLP-610.xml new file mode 100644 index 0000000..be452ba --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-610.xml @@ -0,0 +1,54 @@ + + Samsung + CLP-610 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (4000 prints) - $80 + Toner Yellow (4000 prints) - $110 + Toner Magenta (4000 prints) - $110 + Toner Cyan (4000 prints) - $110 + Transfer Belt (35000 prints) - $47 + + CLP-K600A + CLP-Y600A + CLP-M600A + CLP-C600A + CLP-T600A + + + http://www.samsung.com/my/products/printer/lasercolorprinter/clp_610ndxss.asp + + + + + + + B + foo2qpdl + + + + The Samsung CLP-610 is a networked color laser printer with a + 2008 street price of $330 USD. This printer is supported + by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLP-620.xml b/foomatic-db/printer/Samsung-CLP-620.xml new file mode 100644 index 0000000..c903057 --- /dev/null +++ b/foomatic-db/printer/Samsung-CLP-620.xml @@ -0,0 +1,54 @@ + + Samsung + CLP-620 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (4000 prints) - $80 + Toner Yellow (4000 prints) - $110 + Toner Magenta (4000 prints) - $110 + Toner Cyan (4000 prints) - $110 + Transfer Belt (35000 prints) - $47 + + CLP-K600A + CLP-Y600A + CLP-M600A + CLP-C600A + CLP-T600A + + + http://www.samsung.com/uk/consumer/print-solutions/print-solutions/colour-printers/CLP-620ND/SEE/index.idx?pagetype=prd_detail + + + + + + + B + foo2qpdl + + + + The Samsung CLP-620 is a networked color laser printer with a + 2010 street price of $199 USD. This printer is supported + by the foo2qpdl open software printer driver. + + + diff --git a/foomatic-db/printer/Samsung-CLX-2160.xml b/foomatic-db/printer/Samsung-CLX-2160.xml new file mode 100644 index 0000000..f763d95 --- /dev/null +++ b/foomatic-db/printer/Samsung-CLX-2160.xml @@ -0,0 +1,59 @@ + + Samsung + CLX-2160 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (2000 prints) - $54 + Toner Yellow (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Cyan (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (20000 prints) - $96 + + CLP-K300A + CLP-Y300A + CLP-M300A + CLP-C300A + CLP-W300A + CLP-R300A + + + http://www.samsung.com/uk/business/b2b/products/printers/multifunctional/clx-2160n.htm + + + + + + + B + foo2qpdl + + + + The Samsung CLX-2160 is color laser multifunction printer + with a 2007 street price of $450 USD. + + This printer is supported by the foo2qpdl open software printer driver. + + Only the printer function is supported by this driver. + + + diff --git a/foomatic-db/printer/Samsung-CLX-3160.xml b/foomatic-db/printer/Samsung-CLX-3160.xml new file mode 100644 index 0000000..2d90b94 --- /dev/null +++ b/foomatic-db/printer/Samsung-CLX-3160.xml @@ -0,0 +1,59 @@ + + Samsung + CLX-3160 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (2000 prints) - $54 + Toner Yellow (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Cyan (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (20000 prints) - $96 + + CLP-K300A + CLP-Y300A + CLP-M300A + CLP-C300A + CLP-W300A + CLP-R300A + + + http://www.samsung.com/Products/PrinterandMultifunction/ColorLaserPrinters/CLX_3160FNXAA.asp + + + + + + + B + foo2qpdl + + + + The Samsung CLX-3160 (USB) is color laser multifunction printer + with a 2007 street price of $590 USD. + + This printer is supported by the foo2qpdl open software printer driver. + + Only the printer function is supported by this driver. + + + diff --git a/foomatic-db/printer/Samsung-CLX-3175.xml b/foomatic-db/printer/Samsung-CLX-3175.xml new file mode 100644 index 0000000..ce0dd2e --- /dev/null +++ b/foomatic-db/printer/Samsung-CLX-3175.xml @@ -0,0 +1,59 @@ + + Samsung + CLX-3175 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (2000 prints) - $54 + Toner Yellow (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Cyan (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (20000 prints) - $96 + + CLP-K300A + CLP-Y300A + CLP-M300A + CLP-C300A + CLP-W300A + CLP-R300A + + + http://www.samsung.com/Products/PrinterandMultifunction/ColorLaserPrinters/CLX_3175FNXAA.asp + + + + + + + B + foo2qpdl + + + + The Samsung CLX-3175 (USB) is color laser multifunction printer + with a 2008 street price of $590 USD. + + This printer is supported by the foo2qpdl open software printer driver. + + Only the printer function is supported by this driver. + + + diff --git a/foomatic-db/printer/Samsung-CLX-3185.xml b/foomatic-db/printer/Samsung-CLX-3185.xml new file mode 100644 index 0000000..2c05545 --- /dev/null +++ b/foomatic-db/printer/Samsung-CLX-3185.xml @@ -0,0 +1,59 @@ + + Samsung + CLX-3185 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Black (1500 prints) - $54 + Toner Cyan (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Yellow (1000 prints) - $45 + Waste Toner (5000 prints) - $10 + Drum Kit (24000 prints) - $96 + + CLT-K407S + CLT-C406S + CLT-M406s + CLT-Y406s + CLT-W409SEE + CLT-R407 + + + http://www.samsung.com/us/computer/printers/CLX-3185/XAA + + + + + + + B + foo2qpdl + + + + The Samsung CLX-3185 (USB) and CLX-3185FW (network) is color laser + multifunction printer with a 2010 street price of $225/$550 USD. + + This printer is supported by the foo2qpdl open software printer driver. + + Only the printer function is supported by this driver. + + + diff --git a/foomatic-db/printer/Xerox-Phaser_3010.xml b/foomatic-db/printer/Xerox-Phaser_3010.xml new file mode 100644 index 0000000..c8a8a4c --- /dev/null +++ b/foomatic-db/printer/Xerox-Phaser_3010.xml @@ -0,0 +1,71 @@ + + Xerox + Phaser 3010 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.office.xerox.com/printers/laser-printers/phaser-3010/enin.html + + + + + + + + Xerox Phaser 3010 + + + C + foo2hbpl2 + + + + The Xerox Phaser 3010 + is a monochrome printer with a 2016 street price of $90. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Xerox-Phaser_3040.xml b/foomatic-db/printer/Xerox-Phaser_3040.xml new file mode 100644 index 0000000..7600752 --- /dev/null +++ b/foomatic-db/printer/Xerox-Phaser_3040.xml @@ -0,0 +1,71 @@ + + Xerox + Phaser 3040 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.office.xerox.com/printers/laser-printers/phaser-3040/enin.html + + + + + + + + Xerox Phaser 3040 + + + C + foo2hbpl2 + + + + The Xerox Phaser 3040 + is a monochrome printer with a 2016 street price of $90. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Xerox-Phaser_6110.xml b/foomatic-db/printer/Xerox-Phaser_6110.xml new file mode 100644 index 0000000..f1e51b7 --- /dev/null +++ b/foomatic-db/printer/Xerox-Phaser_6110.xml @@ -0,0 +1,70 @@ + + Xerox + Phaser 6110 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + Toner Cyan (1000 prints) - $45 + Toner Magenta (1000 prints) - $45 + Toner Yellow (1000 prints) - $45 + Toner Black (2000 prints) - $54 + Waste Toner (5000 prints) - $10 + Drum Kit (20000 prints) - $159 + + 106R01271 + 106R01272 + 106R01273 + 106R01274 + 108R00722 + 108R00744 + + + http://www.office.xerox.com/printers/color-printers/phaser-6110/enus.html + + + + + + + MFG:Xerox;CMD:SPLC;MDL:Phaser 6110;CLS:PRINTER;STATUS:BUSY; + Xerox + Phaser 6110 + SPLC + + + Xerox Phaser 6110 + + + B + foo2qpdl + + + + The Xerox Phaser 6110/B (USB) and Xerox Phaser 6110/N (Net) are color + laser printers with a 2007 street price of $249 USD and $269 USD. + + The Xerox Phaser 6110MFP is a color multifunction printer with a 2007 + street price of $579 USD. + + These printers are supported by the foo2qpdl open software printer + driver. + + + diff --git a/foomatic-db/printer/Xerox-Phaser_6115MFP.xml b/foomatic-db/printer/Xerox-Phaser_6115MFP.xml new file mode 100644 index 0000000..edd25e8 --- /dev/null +++ b/foomatic-db/printer/Xerox-Phaser_6115MFP.xml @@ -0,0 +1,56 @@ + + Xerox + Phaser 6115MFP + + + + + + 2400 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Cyan (4500 prints) - $160 + Toner Magenta (4500 prints) - $160 + Toner Yellow (4500 prints) - $160 + Toner Black (4500 prints) - $100 + Imaging Unit (20000 prints) - $160 + + 113R00693 + 113R00694 + 113R00695 + 113R00692 + 113R00691 + + + http://www.office.xerox.com/multifunction-printer/color-multifunction/phaser-6115mfp/enus.html + + + + + + + B + foo2lava + + + + The Xerox Phaser 6115MFP is a color multifunction printer with a 2007 + street price of $799 USD. + + This printer is supported by the foo2lava open software printer + driver. + + + diff --git a/foomatic-db/printer/Xerox-Phaser_6121MFP.xml b/foomatic-db/printer/Xerox-Phaser_6121MFP.xml new file mode 100644 index 0000000..c34b4b8 --- /dev/null +++ b/foomatic-db/printer/Xerox-Phaser_6121MFP.xml @@ -0,0 +1,65 @@ + + Xerox + Phaser 6121MFP + + + + + + 1200 + 600 + + + + + mm + 4 + 4 + 4 + 4 + + + + + Toner Black (4500 prints) - $79 + Toner Yellow (4500 prints) - $119 + Toner Magenta (4500 prints) - $119 + Toner Cyan (4500 prints) - $119 + Drum Cartridge (45000 prints) - $149 + + 1710587-004 + 1710587-005 + 1710587-006 + 1710587-007 + 1710591-001 + + + http://www.xerox.co.uk/office/multifunction-printer/colour-multifunction/phaser-6121mfp/engb.html + + + + + + + + Xerox Phaser 6121MFP + + + B + foo2lava + + + + The magicolor 1690MF is a network color laser AIO with a + 2009 street price of $300 USD. This printer is supported + by the foo2lava open software printer driver. + + It is also OEM'ed by Xerox. + + + diff --git a/foomatic-db/printer/Xerox-WorkCentre_3045.xml b/foomatic-db/printer/Xerox-WorkCentre_3045.xml new file mode 100644 index 0000000..72ceb69 --- /dev/null +++ b/foomatic-db/printer/Xerox-WorkCentre_3045.xml @@ -0,0 +1,71 @@ + + Xerox + WorkCentre 3045 + + + + + + 1200 + 1200 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.office.xerox.com/multifunction-printer/multifunction-under-30ppm/workcentre-3045/enae.html + + + + + + + + Xerox WorkCentre 3045 + + + C + foo2hbpl2 + + + + The Xerox WorkCentre 3045(USB) and 3045ni (network) + is a monochrome MFP printer with a 2013 street price of $150. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-db/printer/Xerox-WorkCentre_6015.xml b/foomatic-db/printer/Xerox-WorkCentre_6015.xml new file mode 100644 index 0000000..7addb70 --- /dev/null +++ b/foomatic-db/printer/Xerox-WorkCentre_6015.xml @@ -0,0 +1,71 @@ + + Xerox + WorkCentre 6015 + + + + + + 1200 + 600 + + + + + mm + 4.23164 + 4.23164 + 3.175 + 3.175 + + + + + http://www.office.xerox.com/multifunction-printer/color-multifunction/workcentre-6015/enfo.html + + + + + + + + Xerox WorkCentre 6015 + + + C + foo2hbpl2 + + + + The Xerox WorkCentre 6015/B (USB) and Xerox WorkCentre 6015/N (Net) + are color multifunction printer with a 2013 street price of $250. + + These printers are supported by the foo2hbpl2 open software printer + driver. + + + diff --git a/foomatic-test b/foomatic-test new file mode 100755 index 0000000..fc34836 --- /dev/null +++ b/foomatic-test @@ -0,0 +1,42 @@ +#!/bin/sh + +# +# Test a new foomatic printer entry. +# + +# This stuff should be passable on the command line to make this script generic +# TODO +MAINDB=/usr/share/foomatic/db/source +NEWDB=./foomatic-db + +PRINTER="Lexmark-Z43" +DRIVER=drv_z42 +PRINTER="Minolta-magicolor_2300_DL" +DRIVER=foo2zjs +OPTIONS="-o Resolution=600x600" +OPTIONS= +OPTIONS="-o ColorMode=Color -o Nup=2up" + +# Copy the new DB XML files into the main database +for dir in driver printer opt; do + root cp $NEWDB/$dir/*.xml $MAINDB/$dir +done + +# Issue a command to make foomatic recognize the new DB entries +root rm -rf /var/cache/foomatic/*/* +(cd /var/cache/foomatic/compiled; root foomatic-combo-xml -O >overview.xml) + +# Create the perl script that drives the printer with the above options +foomatic-datafile -t direct -p $PRINTER -d $DRIVER > xxx.foo + +# Fix the directomatic script so it produces useful information +sed < /usr/bin/directomatic > xxxomatic \ + -e 's/debug=0/debug=1/' \ + -e 's#/tmp/prnlog#xxx.prnlog#' +chmod +x xxxomatic + +# Run the script +./xxxomatic -P xxx.foo $OPTIONS testpage.ps > xxx.prn + +# Ferret out the useful information +sed -n 's/.*running: \(.*\)/\1/p' xxx.prnlog diff --git a/freebsd-install b/freebsd-install new file mode 100755 index 0000000..877082c --- /dev/null +++ b/freebsd-install @@ -0,0 +1,103 @@ +#!/bin/sh + +PROGNAME="$0" + +usage() { + cat <&2 + exit 1 +} + +debug() { + if [ $DEBUG -ge $1 ]; then + echo "`basename $PROGNAME`: $2" >&2 + fi +} + +# +# Process the options +# +DEBUG=0 +while getopts "D:h?" opt +do + case $opt in + D) DEBUG="$OPTARG";; + h|\?) usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# Main Program +# +RULES=/tmp/devfs.rules +RC_CONF=/tmp/rc.conf +RULES=/etc/devfs.rules +RC_CONF=/etc/rc.conf + +RULESET_NAME=printers_foo2zjs +RULESET_NUM=42 +RULESET="[$RULESET_NAME=$RULESET_NUM]" + +# +# Create devfs.rules +# +touch $RULES +if grep -s -q "Begin $RULESET_NAME" $RULES; then + ex - $RULES <<-EOF + /^# Begin $RULESET_NAME.*/,/^# End $RULESET_NAME.*/d + w + q + EOF +fi +ex - $RULES <<-EOF +a +# Begin $RULESET_NAME (added by foo2zjs/freebsd-install) +$RULESET +add path 'ulpt*' mode 0666 group cups +add path 'unlpt*' mode 0666 group cups +add path 'ugen*' mode 0666 group cups +add path 'usb/*' mode 0666 group cups +# End $RULESET_NAME (added by foo2zjs/freebsd-install) +. +w +q +EOF + +# +# Add: devfs_system_ruleset="printers_foo2zjs" +# +if grep -q -s $RULESET_NAME $RC_CONF; then + ex - $RC_CONF <<-EOF + /devfs_system_ruleset="$RULESET_NAME"/d + w + q + EOF +fi +ex - $RC_CONF <<-EOF +a +devfs_system_ruleset="$RULESET_NAME" +. +w +q +EOF diff --git a/gamma-lookup.ps b/gamma-lookup.ps new file mode 100644 index 0000000..5b88ce5 --- /dev/null +++ b/gamma-lookup.ps @@ -0,0 +1,117 @@ +%% +%% Here is some Postscript for setting the gamma values using table lookup +%% +%% These tables don't do anything currently. Its a straight 1-1 mapping. +%% +%% But maybe somebody will figure out some tables if I provide the template :-) +%% +%% This is for fooling around with color correction. None of the +%% values in this file are tuned for the 2300 DL yet. So far, I +%% have not come across a *process* for determining what should go +%% into this file. +%% +%% This defines a set of four PS procedures, one for each of C, M, Y, and K, +%% whose input is a value in the range 0.0..1.0, and whose output should be +%% a corrected value in the same range. +%% + +%% +%% Lookup table for Cyan +%% +/c_lut [ +%The first value is for the level 0 (darker) %levels... +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def + +%% +%% Lookup table for Magenta +%% +/m_lut [ +%The first value is for the level 0 (darker) %levels... +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def + +%% +%% Lookup table for Yellow +%% +/y_lut [ +%The first value is for the level 0 (darker) %levels... +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def + +%% +%% Lookup table for Black +%% +/k_lut [ +%The first value is for the level 0 (darker) %levels... +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %0 ... 15 +16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 %16 ... 31 +32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 %32 ... 47 +48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 %48 ... 63 +64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 %64 ... 79 +80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 %80 ... 95 +96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 %96 ... 111 +112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 %112 ... 127 +128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 %128 ... 143 +144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 %144 ... 159 +160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 %160 ... 175 +176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 %176 ... 191 +192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 %192 ... 207 +208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 %208 ... 223 +224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 %224 ... 239 +240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 %240 ... 255 +%The last value is for level 255 (lighter). +] def +{255 mul 0.5 add cvi c_lut exch get 255 div} +{255 mul 0.5 add cvi m_lut exch get 255 div} +{255 mul 0.5 add cvi y_lut exch get 255 div} +{255 mul 0.5 add cvi k_lut exch get 255 div} +setcolortransfer diff --git a/gamma.ps b/gamma.ps new file mode 100644 index 0000000..50eb0bc --- /dev/null +++ b/gamma.ps @@ -0,0 +1,15 @@ +%% +%% This is for fooling around with color correction. None of the +%% values in this file are tuned for the 2300 DL yet. So far, I +%% have not come across a *process* for determining what should go +%% into this file. Also see "gamma-lookup.ps" for another approach. +%% +%% This defines a set of four PS procedures, one for each of C, M, Y, and K, +%% whose input is a value in the range 0.0..1.0, and whose output should be +%% a corrected value in the same range. +%% +%% CYAN MAGENTA YELLOW BLACK +%{0.217 exp} {0.217 exp} {0.217 exp} {0.217 exp} setcolortransfer +%{0.256 exp} {0.256 exp} {0.256 exp} {0.256 exp} setcolortransfer +{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer +%{0.450 exp} {0.450 exp} {0.450 exp} {0.450 exp} setcolortransfer diff --git a/getweb.in b/getweb.in new file mode 100755 index 0000000..5215e02 --- /dev/null +++ b/getweb.in @@ -0,0 +1,520 @@ +#!/bin/sh + +# +# (c) Copyright Rick Richardson 2008 +# + +# +# PLEASE don't remove the copyright statements. They should +# be displayed to the human that is running this. +# + +VERSION='$Id: getweb.in,v 1.114 2015/02/12 00:22:02 rick Exp $' + +WGETOPTS="--passive-ftp -q" + +usage() { +cat <&2 + exit 1 +} + +SYSTEM=`uname -s` +WGET=`type wget 2>/dev/null` +if [ "$SYSTEM" = Darwin -a "$WGET" = "" ] +then + WGETOPTS= + wget() { + shift + curl -o $* + } +fi + +# +# Download a .EXE file from the web, unzip it, and extract the +# files we want +getexe() { + url="$1" + exefile="$2" + shift; shift + + wget $WGETOPTS -O $exefile "$url/$exefile" || + error "Couldn't download $url/$exefile" + unzip -oj $exefile "$@" + rm $exefile +} + +# +# Download a .tar.gz file from the web, untar it, and extract the +# files we want +gettgz() { + url="$1" + file="$2" + what="$3" + + wget $WGETOPTS -O $file "$url/$file" || + error "Couldn't download $url/$file" + gunzip <$file | tar xvf - $what + rm $file +} + +copyright() { + echo + echo "$1" + echo +} + +getone() { + case "$1" in + lj1000|1000) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihp1000.tar.gz \ + "" + #echo "provided" + #getexe \ + #ftp://ftp.hp.com/pub/softlib/software1/lj1488/lj-1145-2 \ + #lj1488en.exe \ + #sihp1000.img + copyright "(c) Copyright Hewlett-Packard 2001" + ;; + lj1005|1005) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihp1005.tar.gz \ + "" + #echo "provided" + #getexe \ + #ftp://ftp.hp.com/pub/softlib/software2/COL2222/lj-10067-2 \ + #lj1005hostbased-en.exe \ + #sihp1005.img + copyright "(c) Copyright Hewlett-Packard 2002" + gettgz \ + http://foo2zjs.rkkda.com/firmware sihpP1005.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" + ;; + lj1018|1018) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihp1018.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2005" + ;; + lj1020|1020) + # http://ftp.hp.com/pub/softlib/software8/COL14041/lj-39322-2/hp_LJ_1020-1022_Full_Solution.exe + gettgz \ + http://foo2zjs.rkkda.com/firmware sihp1020.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2005" + ;; + [pP]100[57]) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihpP1005.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" + ;; + [pP]100[68]) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihpP1006.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" + ;; + [pP]1505) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihpP1505.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" + ;; + 2200dl|2200) + if true; then + gettgz \ + http://foo2zjs.rkkda.com/icm dl2300.tar.gz \ + "" + else + getexe \ + http://printer.konicaminolta.net/drivers/win2000 m22dlicc.exe \ + "*.icm" + fi + copyright "(c) Copyright Minolta-QMS 1999" + ;; + 2300dl|2300) + if true; then + gettgz \ + http://foo2zjs.rkkda.com/icm dl2300.tar.gz \ + "" + else + getexe \ + http://printer.konicaminolta.net/drivers/other m23dlicc.exe \ + "*.icm" + fi + gettgz \ + http://foo2zjs.rkkda.com/icm km2430.tar.gz \ + "" + copyright "(c) Copyright Minolta-QMS 2001" + ;; + 2300dl_fw) + # 2300DL firmware upgrade to v2.55 + BASE="http://crm01.minoltaeurope.com" + BASE="$BASE/openmind/technic/swfw/mswprtdl.nsf/logdwl" + FILE="MC2300DL_v255.zip" + URL="$BASE?openagent&4CE486C20839C75AC1256D9E001EBD1F/\$File/$FILE" + wget $WGETOPTS "$URL" || error "Couldn't download $URL" + echo "*** Now use a windows box to unzip and install $FILE ***" + ;; + cpwl|pageworks) + if true; then + gettgz \ + http://foo2zjs.rkkda.com/icm dl2300.tar.gz \ + "" + else + getexe \ + ftp://ftp.minolta-qms.com/pub/crc/out_going/windows cpplxp.exe \ + "*.IC_" + for i in C*.IC_ + do + base=`basename $i .IC_` + mv $base.IC_ $base.ic_ + ./msexpand $base.ic_ + rm -f $base.ic_ + done + fi + copyright "(c) Copyright Minolta-QMS 1998" + ;; + 2430) + gettgz \ + http://foo2zjs.rkkda.com/icm km2430.tar.gz \ + "" + copyright "(c) Copyright Konica Minolta 2003" + ;; + 2530|2490|6115|2480|1600w|1680|1690|4690|110|6121) + gettgz \ + http://foo2lava.rkkda.com/icm km2530.tar.gz \ + "" + copyright "(c) Copyright Konica Minolta 2005" + copyright "(c) Copyright Rick Richardson 2007. All Rights Reserved" + gettgz \ + http://foo2lava.rkkda.com/icm km-1600.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2009. All Rights Reserved" + ;; + 1500) + gettgz \ + http://foo2hp.rkkda.com/icm hpclj2500.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2002" + gettgz \ + http://foo2hp.rkkda.com/icm hpclj2600n.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2003" + copyright "(c) Copyright Rick Richardson 2006. All Rights Reserved" + ;; + 1025) + gettgz \ + http://foo2zjs.rkkda.com/icm hp-cp1025.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2010. All Rights Reserved" + ;; + 1215|1600|2600*) + gettgz \ + http://foo2hp.rkkda.com/icm hpclj2600n.tar.gz \ + "" + gettgz \ + http://foo2zjs.rkkda.com/icm km2430.tar.gz \ + "km2430_2.icm" + copyright "(c) Copyright Hewlett-Packard 2003" + copyright "(c) Copyright Rick Richardson 2006. All Rights Reserved" + gettgz \ + http://foo2hp.rkkda.com/icm hp1215.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2008. All Rights Reserved" + ;; + 300|310|315|325|360|365|2160|3160|3175|3185|6110) + gettgz \ + http://foo2qpdl.rkkda.com/icm samclp300.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2007. All Rights Reserved" + gettgz \ + http://foo2qpdl.rkkda.com/icm samclp315.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2008. All Rights Reserved" + ;; + 600|610) + ;; + + 500) + gettgz \ + http://foo2slx.rkkda.com/icm lexc500.tar.gz \ + "" + copyright "(c) Copyright Lexmark 2006" + ;; + + oki) + echo "Please wait, ~20MB is being downloaded from a slow site..." + getexe \ + http://www.okiprintingsolutions.at/binaryData/16516/ \ + ICCProfiles.zip \ + "*OK3200*ICM" "*OK5600*ICM" "*rom732*7.zip" + unzip -oj *rom732*7.zip "*C3400*ICM" + rm -f *rom732*7.zip + for i in OK*ICM C3400*ICM; do + base=`basename $i .ICM` + mv "$base.ICM" "$base.icm" + done + copyright "(c) Copyright Okidata 2005, 2006" + ;; + 301) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic301.tar.gz \ + "" + copyright "(c) Copyright Okidata 2012" + ;; + c310) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic310.tar.gz \ + "" + copyright "(c) Copyright Okidata 2010" + ;; + c511) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic511.tar.gz \ + "" + copyright "(c) Copyright Okidata 2012" + ;; + c810) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic810.tar.gz \ + "" + copyright "(c) Copyright Okidata 2012" + ;; + 3100|3200|5100|5150|5200|5250) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic3200.tar.gz \ + "" + copyright "(c) Copyright Okidata 2005" + ;; + 3300|3400|3530) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic3400.tar.gz \ + "" + copyright "(c) Copyright Okidata 2006" + ;; + 5500|5600|5800|160) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic5600.tar.gz \ + "" + copyright "(c) Copyright Okidata 2006" + ;; + + xPPD) + # Snarf PPD files from linuxprinting + [ -d PPD ] || mkdir PPD + for i in foomatic-db/printer/*.xml + do + case "$i" in + */Gen*) continue;; + esac + printer=`basename $i .xml` + echo $printer + case "$printer" in + *1500*|*oak*) driver=foo2oak;; + *) driver=foo2zjs;; + esac + URL="http://www.linuxprinting.org/ppd-o-matic.cgi" + URL="$URL?driver=$driver&printer=$printer" + URL="$URL&.submit=Generate+PPD+file" + URL="$URL&show=1&.cgifields=shortgui&.cgifields=show" + wget $WGETOPTS -O PPD/$printer.ppd "$URL" || + error "Couldn't dowload $URL" + done + ;; + ppd) + # Generate PPD files using local tools + [ -d PPD ] || mkdir PPD + for i in foomatic-db/printer/*.xml + do + printer=`basename $i .xml` + echo $printer + case "$printer" in + *M1005*|*M1120*) driver=foo2xqx;; + *P1[05]0[56]*) driver=foo2xqx;; + *P2014*) driver=foo2xqx;; + *M1212*) driver=foo2xqx;; + *1500*|*OAKT*) driver=foo2oak;; + *1600*|*2600*) driver=foo2hp;; + *1215*) driver=foo2hp;; + *2530*|*24[89]0*) driver=foo2lava;; + *6115*) driver=foo2lava;; + *C110*) driver=foo2lava;; + *C500*) driver=foo2slx;; + *C3[234]00*) driver=foo2hiperc;; + *C5[12568]00*) driver=foo2hiperc;; + *CLP*|*CLX*|*6110*) driver=foo2qpdl;; + *) driver=foo2zjs;; + esac + ENGINE=../foomatic/foomatic-db-engine + PERL5LIB=$ENGINE/lib $ENGINE/foomatic-ppdfile \ + -d $driver -p $printer \ + > PPD/$printer.ppd + # | sed -e 's/\(^\*NickName.*\)"/\1 (foo2zjs recommended)"/' + done + ;; + update) + url=${URLZJS} + file=foo2zjs.tar.gz + wget $WGETOPTS -O $file $url/$file || + error "Couldn't download $url/$exefile" + mv getweb getweb.old + HERE=`pwd` + cd .. + tar zxf $HERE/$file + cd $HERE + echo "The tarball is extracted and the current directory is up to date." + echo -e "Remove the tarball (y/n)? \c" + read ans + if [ "$ans" = y ]; then + rm -f $file + fi + ;; + "") + usage + ;; + *) + error "Don't know how to get extra stuff for printer $1" + ;; + esac +} + +if [ $# = 0 ]; then + echo "$VERSION" + usage +fi + +for i in $* +do + case "$1" in + all) + getone 1000 + getone 1005 + getone 1018 + getone 1020 + + getone p1005 + getone p1006 + getone p1505 + + getone 2200 + getone 2300 + # getone 2430 already done + # getone cpwl # file doesn't exist 1/28/08 + + getone 1500 + getone 2600n + # getone 1215 # already done + getone 1025 + + getone 2530 + + getone 300 + # getone 6110 already done + getone 600 + + getone 500 + + getone 301 + getone c310 + getone c511 + getone c810 + getone 3200 + getone 3400 + getone 5600 + ;; + *) + getone $i + ;; + esac +done diff --git a/gipddecode.1in b/gipddecode.1in new file mode 100644 index 0000000..b802275 --- /dev/null +++ b/gipddecode.1in @@ -0,0 +1,108 @@ +.TH gipddecode 1 "${MODpage}" "gipddecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +gipddecode \- Decode a GIPD stream into human readable form. +.SH SYNOPSIS +.B gipddecode +.RI [ options "] <" gipd-file +.SH DESCRIPTION +.B gipddecode +decodes a Granite Image Printer Driver (GIPD) stream into human readable form. +Granite Systems was acquired by Monotype Imaging. +.P +A GIPD stream is the printer language used by the +Lexmark X500 and the Dell 1125 MFP +printers. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an GIPD stream file. + +.nf +.ft CW +$ gipddecode -h x500-mono.prn + 0: OFST 0 len=128 + 80: OFST 1 len=128 + 100: OFST 2 len=128 + 180: OFST 3 len=128 + 200: OFST 4 len=128 + [SNIP] + 27d80: OFST 1275 len=128 + 27e00: \\033%-12345X@PJL SET DISPINFOWHILEPRINT=OFF + 27e2a: @PJL SET DISPATPAPERCHANG=OFF + 27e49: @PJL SET JAMRECOVERY=ON + 27e62: @PJL SET OUTPUTBLANKPAPER=OFF + 27e81: @PJL SET PRINTSLOWLY=OFF + 27e9b: @PJL SET REVERSEPRINT=OFF + 27eb6: \\033%-12345X + 27ebf: GDIJ len=108 + unk0=0, unk1=0, unk2=0, unk3=0, unk4=0 + unk5=16777221(0x1000005), unk6=0, unk7=0, unk8=0, paper=0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27f37: GDIP len=52 + nplane = 1, w254 = 4896, h254 = 6110 + 132018de, 0, 0, 0, 0, 1000000, 0, 0, 0, 0, 0, 0, 0, + 27f77: GDIB 0 len=60 (0x3c) + 27fcb: GDIB 1 len=252 (0xfc) + 280df: GDIB 2 len=124 (0x7c) + 28173: GDIB 3 len=956 (0x3bc) + 28547: GDIB 4 len=1692 (0x69c) + 28bfb: GDIB 5 len=572 (0x23c) + 28e4f: GDIB 6 len=17084 (0x42bc) + 2d123: GDIB 7 len=18108 (0x46bc) + 317f7: GDIB 8 len=8508 (0x213c) + 3394b: GDIB 9 len=1756 (0x6dc) + 3403f: GDIB 10 len=1596 (0x63c) + 34693: GDIB 11 len=892 (0x37c) + 34a27: GDIB 12 len=2332 (0x91c) + 3535b: GDIB 13 len=8380 (0x20bc) + 3742f: GDIB 14 len=3452 (0xd7c) + 381c3: GDIB 15 len=60 (0x3c) + 38217: GDIB 16 len=1468 (0x5bc) + 387eb: GDIB 17 len=2076 (0x81c) + 3901f: GDIB 18 len=284 (0x11c) + 39153: GDIB 19 len=1660 (0x67c) + 397e7: GDIB 20 len=2908 (0xb5c) + 3a35b: GDIB 21 len=156 (0x9c) + 3a40f: GDIB 22 len=188 (0xbc) + 3a4e3: GDIB 23 len=220 (0xdc) + 3a5d7: GDIB 24 len=60 (0x3c) + 3a62b: PIDG + 3a637: JIDG +Total Size = 75843 (0x12843) + +.ft P +.fi + +.SH FILES +.BR /usr/bin/gipddecode +'\" .SH SEE ALSO +'\" .BR foo2gipd-wrapper (1), +'\" .BR foo2gipd (1) +.SH "AUTHOR" +Rick Richardson +'\" .br +'\" ${URLHC}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/gipddecode.c b/gipddecode.c new file mode 100644 index 0000000..a325710 --- /dev/null +++ b/gipddecode.c @@ -0,0 +1,840 @@ +/* + * $Id: gipddecode.c,v 1.29 2014/01/24 19:25:47 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +/* + * Dell 1125 MFP + * Lexmark X500 + * + * Granite Systems, inc. a.k.a Monotype Imaging + * Granite Image Printer Driver (gipddecode) + */ + +#include +#include +#include +#include +#include +#include + +#include "slx.h" +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *RawFile; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" gipddecode [options] < zjs-file\n" +"\n" +" Decode Granite Image Printer Driver (GIPD) stream into human readable\n" +" form. Granite Systems was acquired by Monotype Imaging.\n" +"\n" +" A GIPD stream is the printer language used by some Lexmark\n" +" printers, such as the X500 and Dell printers, such as the 1125 MFP.\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -r basename Basename of .jbg file for saving raw planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +typedef struct +{ + char data[128-4]; + char magic[4]; +} OFST; +typedef struct +{ + char magic[4]; + int len; + int len2; +} GDI; + +void +decode(FILE *fp) +{ + DWORD magic; + SL_HEADER hdr; + int c; + int rc; + int size; + int items; + char *codestr; + FILE *dfp = NULL; + FILE *rfp = NULL; + int pageNum = 0; + int padding; + int len; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[20]; + //DWORD bih[5]; + int bihlen = 0; + int imageCnt[5] = {0,0,0,0,0}; + int pn = 0; + int incrY = 0; + int totSize = 0; + OFST ofst; + GDI gdi; + DWORD dbuf[256]; + int ocnt = 0; + int bcnt = 0; + int ver; + int i; + + for (;;) + { + rc = fread(&ofst, sizeof(ofst), 1, fp); + if (rc != 1) + error(1, "aaa\n"); + if (memcmp(ofst.magic, "OFST", 4) != 0) + { + error(1, "magic %s\n", ofst.magic); + exit(1); + } + else + { + if (ocnt < 5 || ocnt >= 1275) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + printf("OFST %d len=%d\n", ocnt, (int) sizeof(ofst)); + } + else if (ocnt == 5) + printf("\t[SNIP]\n"); + ++ocnt; + } + curOff += sizeof(ofst); + c = getc(fp); + ungetc(c, fp); + if (c == 'G') + break; + if (c == '\033') + break; + //debug(0, "got\n"); + } + + totSize = curOff; + + /* + * Zenographics ZX format + */ + c = getc(fp); + if (c == EOF) + { + printf("EOF on file reading header.\n"); + return; + } + ungetc(c, fp); + if (c == '\033') + { + char buf[1024]; + + while (fgets(buf, sizeof(buf), fp)) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (strcmp(buf, "@PJL SET REVERSEPRINT=OFF\r\n") == 0) + break; + } + if (feof(fp)) + { + printf("\n"); + return; + } + } + + c = getc(fp); + ungetc(c, fp); + ver = 0; //Dell + if (c == '\033') + { + rc = fread(&ofst, 9, 1, fp); // %-12345X + ver = 1; //Lexmark + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + printf("\\033%-8.8s\n", ofst.data+1); + curOff += 9; + } + for (;;) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + rc = fread(&gdi, sizeof(gdi), 1, fp); // %-12345X + curOff += sizeof(gdi); + if (memcmp(gdi.magic, "JIDG", 4) == 0) + { + printf("%-4.4s\n", gdi.magic); + printf("Total Size = %d (0x%x)\n", + curOff - totSize, curOff - totSize); + return; + } + if (memcmp(gdi.magic, "PIDG", 4) == 0) + { + printf("%-4.4s\n", gdi.magic); + continue; + } + if (memcmp(gdi.magic, "GDI", 3) != 0) + error(1, "Missing GDIJ (%-4.4s)\n", gdi.magic); + if (gdi.magic[3] == 'B') + { + if (ver == 0) + gdi.len = 0x20 + be32(gdi.len2); + else + gdi.len = 0xBC + be32(gdi.len2); + } + else + gdi.len = be32(gdi.len); + // debug(0, "%.4s len=%d\n", gdi.magic, gdi.len); + gdi.len -= sizeof(gdi); + switch (gdi.magic[3]) + { + case 'J': + printf("%.4s len=%d\n", gdi.magic, gdi.len); + bcnt = 0; + { + int unk0, unk1, unk2, unk3, unk4; + int unk5, unk6, unk7, unk8; + int paper; + int i; + + rc = fread(&dbuf, gdi.len, 1, fp); + curOff += gdi.len; + + unk0 = be32(dbuf[0]); + unk1 = be32(dbuf[1]); + unk2 = be32(dbuf[2]); + unk3 = be32(dbuf[3]); + unk4 = be32(dbuf[4]); + unk5 = be32(dbuf[5]); + unk6 = be32(dbuf[6]); + unk7 = be32(dbuf[7]); + unk8 = be32(dbuf[8]); + paper = be32(dbuf[9]); + printf("\tunk0=%d, unk1=%d, unk2=%d, unk3=%d, unk4=%d\n", + unk0, unk1, unk2, unk3, unk4); + printf("\tunk5=%d(0x%x), unk6=%d, unk7=%d, unk8=%d, paper=%d\n", + unk5, unk5, unk6, unk7, unk8, paper); + gdi.len -= 4*10; + printf("\t"); + for (i = 0; i < gdi.len; i += 4) + printf("%d, ", dbuf[10+i/4]); + printf("\n"); + gdi.len = 0; + } + curOff += gdi.len; + //printf("cr=%x\n", curOff); + while (gdi.len--) + getc(fp); + break; + case 'P': + printf("%.4s len=%d\n", gdi.magic, gdi.len); + bcnt = 0; + { + int w254; + int h254; + int nplane; + int i; + char *buf = (char *) dbuf; + + rc = fread(&dbuf, gdi.len, 1, fp); + curOff += gdi.len; + + w254 = (buf[0] << 8) + buf[1]; + h254 = (buf[2] << 8) + buf[3]; + nplane = buf[5*4]; + printf("\tnplane = %d, w254 = %d, h254 = %d\n", + nplane, w254, h254); + + printf("\t"); + for (i = 0; i < gdi.len; i += 4) + printf("%x, ", be32(dbuf[i/4])); + printf("\n"); + gdi.len = 0; + } + curOff += gdi.len; + //printf("cr=%x\n", curOff); + while (gdi.len--) + getc(fp); + break; + case 'B': + //printf("cr=%x\n", curOff); + rc = fread(&dbuf, 3*4, 1, fp); + curOff += 3*4; + //debug(0, "%x\n", be32(gdi.len2)); + //debug(0, "%x\n", be32(dbuf[0])); + //debug(0, "%x\n", be32(dbuf[1])); + //debug(0, "%x\n", be32(dbuf[2])); + gdi.len = 0x14 + be32(gdi.len2) + be32(dbuf[0]) + + be32(dbuf[1]) + be32(dbuf[2]); + gdi.len -= sizeof(gdi); + + printf("%.4s %2d len=%d (0x%x)\n", + gdi.magic, bcnt++, gdi.len, gdi.len); + //print_bih((unsigned char *)(dbuf+3)); + if (0) { + int i; + + rc = fread(&dbuf, gdi.len, 1, fp); + printf("\t0x%x\n", be32(dbuf[0])); + printf("\t"); + for (i = 0; i < 4; i += 4) + printf("%d, ", be32(dbuf[i/4])); + printf("\n"); + // gdi.len = 0; + } + curOff += gdi.len; + //printf("cr=%x\n", curOff); + i = 0; + if (Debug > 0) + printf("\t"); + while (gdi.len--) + { + c = getc(fp); + if (Debug > 0 && i++ < 48) + { + printf("%02x, ", c); + if (i < 48 && (i % 16) == 0) + printf("\n\t"); + } + } + if (Debug > 0) + printf("\n"); + break; + default: + error(1, "unknown type '%c'\n", gdi.magic[3]); + break; + } + } + + /* + * Software Imaging K.K. SLX_MAGIC format + */ + rc = fread(&magic, len = sizeof(magic), 1, fp); + if (rc != 1) + { + printf("Missing SLX Magic number\n"); + return; + } + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + printf("SLX_MAGIC, 0x%lx (%.4s)\n", (long)magic, (char *) &magic); + + if (memcmp((char *) &magic, "\245SLX", 4) && + memcmp((char *) &magic, "XLS\245", 4)) + { + printf(" Don't understand magic number 0x%lx\n", (long)magic); + return; + } + + curOff += len; + for (;;) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + + rc = fread(&hdr, len = sizeof(hdr), 1, fp); + if (rc != 1) break; + curOff += len; + + hdr.type = be32(hdr.type); + hdr.size = be32(hdr.size); + hdr.items = be32(hdr.items); + hdr.reserved = be16(hdr.reserved); + hdr.signature = be16(hdr.signature); + + #define CODESTR(X) case X: codestr = #X; + switch (hdr.type) + { + CODESTR(SLT_START_DOC) break; + CODESTR(SLT_END_DOC) break; + CODESTR(SLT_START_PAGE) ++pageNum; + memset(imageCnt, 0, sizeof(imageCnt)); + totSize = 0; + break; + CODESTR(SLT_END_PAGE) pn = 0; + break; + CODESTR(SLT_JBIG_BIH) break; + CODESTR(SLT_JBIG_BID) break; + CODESTR(SLT_END_JBIG) break; + CODESTR(SLT_SIGNATURE) break; + CODESTR(SLT_RAW_IMAGE) break; + CODESTR(SLT_START_PLANE) break; + CODESTR(SLT_END_PLANE) break; + CODESTR(SLT_2600N_PAUSE) break; + CODESTR(SLT_2600N) break; + default: codestr = NULL; break; + } + + if (codestr) + printf("%s, %ld items", codestr, (long) hdr.items); + else + printf("SLT_0x%lx, %ld items", (long) hdr.type, (long) hdr.items); + if (hdr.size & 3) + { + printf(" (unaligned size)"); + padding = 4 - (hdr.size & 3); + } + else + padding = 0; + if (hdr.reserved) + printf(" (reserved=0x%x)", hdr.reserved); + if (hdr.signature != 0xa5a5) + printf(" (funny siggy 0x%x)", hdr.signature); + if (hdr.type == SLT_START_PAGE) + printf(" [Page %d]", pageNum); + if (hdr.type == SLT_JBIG_BIH) + { + switch (++pn) + { + case 1: printf(" [black]"); break; + case 2: printf(" [cyan]"); break; + case 3: printf(" [magenta]"); break; + case 4: printf(" [yellow]"); break; + } + } + printf("\n"); + fflush(stdout); + + items = hdr.items; + size = hdr.size - sizeof(hdr); + + while (items--) + { + SL_ITEM_HEADER ihdr; + int isize; + DWORD val; + char buf[512]; + int i, c; + + if (PrintOffset) + printf(" %d: ", curOff); + else if (PrintHexOffset) + printf(" %6x: ", curOff); + + size -= sizeof(ihdr); + + rc = fread(&ihdr, len = sizeof(ihdr), 1, fp); + if (rc != 1) break; + curOff += len; + + ihdr.size = be32(ihdr.size); + ihdr.item = be16(ihdr.item); + + isize = ihdr.size - sizeof(ihdr); + size -= isize; + + switch (ihdr.item) + { + CODESTR(SLI_PAGECOUNT) break; + CODESTR(SLI_DMCOLLATE) break; + CODESTR(SLI_DMDUPLEX) break; + CODESTR(SLI_DISPLAY) break; + CODESTR(SLI_DISPLAY_PC) break; + CODESTR(SLI_PRINT_SLOWLY) break; + CODESTR(SLI_REMOVE_SLEEP_MODE) break; + CODESTR(SLI_USE_SEP_SHEETS) break; + CODESTR(SLI_COUNT) break; + + CODESTR(SLI_DMPAPER) break; + CODESTR(SLI_DMCOPIES) break; + CODESTR(SLI_DMDEFAULTSOURCE) break; + CODESTR(SLI_DMMEDIATYPE) break; + CODESTR(SLI_NBIE) break; + CODESTR(SLI_RESOLUTION_X) break; + CODESTR(SLI_RESOLUTION_Y) break; + CODESTR(SLI_OFFSET_X) break; + CODESTR(SLI_OFFSET_Y) break; + CODESTR(SLI_RASTER_X) break; + CODESTR(SLI_RASTER_Y) break; + CODESTR(SLI_CUSTOM_X) break; + CODESTR(SLI_CUSTOM_Y) break; + CODESTR(SLI_VIDEO_X) break; + CODESTR(SLI_VIDEO_Y) break; + default: codestr = NULL; break; + } + + switch (ihdr.type) + { + case SLIT_UINT32: + rc = fread(&val, len = sizeof(val), 1, fp); + curOff += len; + val = be32(val); + isize -= 4; + if (codestr) + printf(" %s, %ld (0x%lx) %s", + codestr, (long) val, (long) val, + ihdr.type == SLIT_INT32 ? "(int)" : ""); + else + printf(" SLI_0x%x, %ld (0x%lx) %s", + ihdr.item, (long) val, (long) val, + ihdr.type == SLIT_INT32 ? "(int)" : ""); + if (ihdr.item == SLI_NBIE) + ; // pn = (val & 7); + break; + case SLIT_INT32: + case SLIT_STRING: + for (i = 0; i < sizeof(buf) - 1; ) + { + c = fgetc(fp); + if (c == EOF) break; + ++curOff; + buf[i++] = c; + --isize; + if (isize == 0 || c == 0) break; + } + buf[i] = 0; + if (codestr) + printf(" %s, '%s'", codestr, buf); + else + printf(" SLI_0x%x, '%s'", ihdr.item, buf); + break; + default: + case SLIT_BYTELUT: + rc = fread(&val, len = sizeof(val), 1, fp); + curOff += len; + val = be32(val); + isize -= 4; + if (codestr) + printf(" %s, BYTELUT (len=%d)", codestr, val); + else + printf(" SLI_0x%x, BYTELUT (len=%d)", ihdr.item, val); + if (0) // ihdr.item == SLI_JBIG_BIH && val == 20) + { + bihlen = fread(bih, 1, len = sizeof(bih), fp); + if (bihlen <= 0) + isize = 0; + else + { + isize -= bihlen; + curOff += len; + } + if (bihlen == 20) + { + printf("\n"); + print_bih(bih); + } + } + break; + } + + if (ihdr.param != 0) + printf(" (reserved=0x%x)", ihdr.param); + printf("\n"); + fflush(stdout); + + while (isize-- > 0) + { + fgetc(fp); + ++curOff; + } + + if (size <= 0 && items) + { + printf(" #items is wrong!\n"); + break; + } + } + + if (size) + { + if (PrintOffset) + printf(" %d:", curOff); + else if (PrintHexOffset) + printf(" %6x:", curOff); + printf(" Data: %d bytes\n", size); + fflush(stdout); + totSize += size; + + if (hdr.type == SLT_JBIG_BIH) + { + bihlen = fread(bih, 1, len = sizeof(bih), fp); + if (bihlen <= 0) + size = 0; + else + { + size -= bihlen; + curOff += len; + } + if (bihlen == 20) + print_bih(bih); + } + + if ( (RawFile || DecFile) && + (hdr.type == SLT_JBIG_BIH || hdr.type == SLT_JBIG_BID + || hdr.type == SLT_2600N) ) + { + if (hdr.type == SLT_JBIG_BIH) + { + if (RawFile) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.jbg", + RawFile, pageNum, pn); + rfp = fopen(buf, "w"); + } + if (rfp) + rc = fwrite(bih, bihlen, 1, rfp); + if (DecFile) + { + size_t cnt; + + // debug(1, "pn = %d\n", pn); + imageCnt[pn] = 0; + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + } + } + while (size--) + { + int c; + c = fgetc(fp); + ++curOff; + if (rfp) + fputc(c, rfp); + if (DecFile) + { + size_t cnt; + unsigned char ch = c; + + rc = JBG_EAGAIN; + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + + // debug(1, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + if (image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, pn); + dfp = fopen(buf, + imageCnt[pn] ? "a" : "w"); + if (dfp) + { + if (imageCnt[pn] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + imageCnt[pn] += incrY; + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + } + } + } + } + else + { + while (size--) + { + fgetc(fp); + ++curOff; + } + if (rfp) + { + fclose(rfp); + rfp = NULL; + } + } + } + + while (padding--) + { + fgetc(fp); + ++curOff; + } + + if (hdr.type == SLT_END_DOC) + break; + } + if (rfp) + fclose(rfp); + printf("Total size: %d bytes\n", totSize); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hor:D:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'r': RawFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + for (;;) + { + decode(fp); + c = getc(fp); ungetc(c, fp); + if (feof(fp)) + break; + } + fclose(fp); + } + else + { + for(;;) + { + decode(stdin); + c = getc(stdin); ungetc(c, stdin); + if (feof(stdin)) + break; + } + } + + exit(0); +} diff --git a/hbpl.h b/hbpl.h new file mode 100644 index 0000000..8953900 --- /dev/null +++ b/hbpl.h @@ -0,0 +1,256 @@ +/* + * Manifest constants for the ZjStream protocol + * + * I'm told that a lot of this stuff came from a file called "zjrca.h". + * But a Google search does not turn up that file. I added my own + * improvements and missing pieces. -Rick + */ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +#pragma pack(push) +#pragma pack(1) + +typedef struct _HBPL_HEADER { + char type[3]; + char len; +} HBPL_HEADER; + +typedef struct _HBPL_JP { + HBPL_HEADER hdr; // 0 + DWORD unk1; // 4 + DWORD unk2; // 8 + char unk3[3]; // 12,13,14 + char source_size; // 15 + DWORD unk[12]; // 16 ... 60 +} HBPL_JP; + +typedef struct _HBPL_PS { + HBPL_HEADER hdr; // 0 + DWORD w; // 4 + DWORD h; // 8 + DWORD wh_total; // 12 in bytes + DWORD len; // 16 + char papersize; // 20 + char mediatype; // 21 + char color; // 22 + char unk2; // 23 + WORD res; // 24 + DWORD bihoff[4]; // 26, 30, 34, 38 + WORD unk3; // 42 + DWORD unk4[5]; // 44, 48, 52, 56, 60 +} HBPL_PS; + +typedef struct _HBPL_PE { + HBPL_HEADER hdr; // 0 + DWORD unk[15]; // 4 ... 60 +} HBPL_PE; + +typedef struct _HBPL_DM { + HBPL_HEADER hdr; + DWORD data; +} HBPL_DM; + +#pragma pack(pop) + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +typedef enum { + DMBIN_UPPER = 1, + DMBIN_ONLYONE = 1, + DMBIN_LOWER = 2, + DMBIN_MIDDLE = 3, + DMBIN_MANUAL = 4, + DMBIN_ENVELOPE = 5, + DMBIN_ENVMANUAL = 6, + DMBIN_AUTO = 7, + DMBIN_TRACTOR = 8, + DMBIN_SMALLFMT = 9, + DMBIN_LARGEFMT =10, + DMBIN_LARGECAPACITY =11, + DMBIN_CASSETTE =14, + DMBIN_FORMSOURCE =15 +} DM_BIN; + +typedef enum { + DMMEDIA_STANDARD = 1, // Standard paper + DMMEDIA_TRANSPARENCY= 2, // Transparency + DMMEDIA_GLOSSY = 3, // Glossy paper + DMMEDIA_USER = 4, // Device-specific media start here + + DMMEDIA_ENVELOPE = 0x101, // Envelope + DMMEDIA_LETTERHEAD = 0x103, // Letterhead + DMMEDIA_THICK_STOCK = 0x105, // Thick Stock + DMMEDIA_POSTCARD = 0x106, // Postcard + DMMEDIA_LABELS = 0x107, // Labels +} DMMEDIA; + +typedef enum { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2, +} DMCOLOR; + +typedef enum { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2, +} DMORIENT; + +typedef enum { + DMPAPER_LETTER = 1, // Letter, 8 1/2- by 11-inches + DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches + DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches + DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches + DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches + DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches + DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches + DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters + DMPAPER_A4 = 9, // A4 Sheet, 210- by 297-millimeters + DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters + DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters + DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters + DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper + DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper + DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper + DMPAPER_10X14 =16, // 10- by 14-inch sheet + DMPAPER_11X17 =17, // 11- by 17-inch sheet + DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches + DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches + DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches + DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches + DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches + DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches + DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches + DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches + DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches + DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters + DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters + DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters + DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters + DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters + DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters + DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters + DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters + DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters + DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters + DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches + DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches + DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches + DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in + DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in + + DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm + DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm + DMPAPER_9X11 =44, // 9 x 11 in + DMPAPER_10X11 =45, // 10 x 11 in + DMPAPER_15X11 =46, // 15 x 11 in + DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm + DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE + DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE + DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in + DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in + DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in + DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in + DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in + DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm + DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in + DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm + DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm + DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in + DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm + DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm + DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm + DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm + DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm + DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm + DMPAPER_A2 =66, // A2 420 x 594 mm + DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm + DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm +} DMPAPER; + +typedef union _SWAP_32{ + char byte[sizeof(uint32_t)]; + uint32_t dword; +} SWAP_32; + +typedef union _SWAP_16{ + char byte[sizeof(uint16_t)]; + uint16_t word; +} SWAP_16; + +static inline uint32_t +be32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +be16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} + +static inline uint32_t +le32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] != 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +le16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] != 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} diff --git a/hbpldecode.1in b/hbpldecode.1in new file mode 100644 index 0000000..52d0ee7 --- /dev/null +++ b/hbpldecode.1in @@ -0,0 +1,209 @@ +.TH hbpldecode 1 "${MODpage}" "hbpldecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +hbpldecode \- Decode a HBPL stream into human readable form. +.SH SYNOPSIS +.B hbpldecode +.RI [ options "] <" hbpl-file +.SH DESCRIPTION +.B hbpldecode +decodes a HBPL stream into human readable form. +HBPL is Host Based Printer Language. +.P +There are two versions of HBPL in existence. +.P +Version one is an HBPL stream with JBIG2 (?) data. +This data is used by the Dell 1250c, +Dell C1660w, Epson AcuLaser C1700, Fuji-Xerox cp105b, and similar printers. +These printers are unsupported. +.P +Version two is an HBPL stream with JBIG encoded data. This data +is used by the Xerox WorkCentre 6015, +Fuji Xerox DocuPrint CM205, Dell 1355c, and similar printers. +These printers are supported by foo2hbpl2-wrapper et al. +.P +Both versions can be decoded by hbpldecode. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an HBPL stream file, version 1. + +.nf +.ft CW +$ hbpldecode -h 1250c-mono.prn + 0: \\033%-12345X@PJL JOB MODE=PRINTER + 1f: @PJL SET STRINGCODESET=UTF8 + 3b: @PJL COMMENT DATE=06/01/2011 + 58: @PJL COMMENT TIME=13:28:30 + 73: @PJL COMMENT DNAME=empty - Notepad + 96: @PJL SET JOBATTR="@LUNA=rick" + b4: @PJL SET COPIES=1 + c6: @PJL SET QTY=1 + d5: @PJL SET JOBATTR="@TRCH=OFF" + f2: @PJL SET DUPLEX=OFF + 106: @PJL SET BINDING=LONGEDGE + 120: @PJL SET RENDERMODE=GRAYSCALE + 13e: @PJL SET ECONOMODE=OFF + 155: @PJL SET RET=ON + 165: @PJL SET JOBATTR="@IREC=OFF" + 182: @PJL SET JOBATTR="@HOAD=I0A00020F" + 1a5: @PJL SET JOBATTR="@JOAU=rick" + 1c3: @PJL SET JOBATTR="@CNAM=RICK-VB" + 1e4: @PJL SET IWAMANUALDUP=OFF + 1fe: @PJL SET IWAJAMRECOVERY=AUTO + 21b: @PJL SET JOBATTR="@MSIP=NORMAL" + 23b: @PJL SET PAPERDIRECTION=SEF + 257: @PJL SET RESOLUTION=600 + 26f: @PJL SET BITSPERPIXEL=8 + 287: @PJL SET JOBATTR="@DRDM=RASTER" + 2a7: @PJL SET JOBATTR="@TCPR=33" + 2c3: @PJL SET JOBATTR="@TUCR=33" + 2df: @PJL SET JOBATTR="@TTRC=33" + 2fb: @PJL SET JOBATTR="@TSCR=33" + 317: @PJL SET JOBATTR="@GCPR=33" + 333: @PJL SET JOBATTR="@GUCR=33" + 34f: @PJL SET JOBATTR="@GTRC=33" + 36b: @PJL SET JOBATTR="@GSCR=33" + 387: @PJL SET JOBATTR="@ICPR=34" + 3a3: @PJL SET JOBATTR="@IUCR=34" + 3bf: @PJL SET JOBATTR="@ITRC=34" + 3db: @PJL SET JOBATTR="@ISCR=34" + 3f7: @PJL SET JOBATTR="@TDFT=0" + 412: @PJL SET JOBATTR="@GDFT=0" + 42d: @PJL SET JOBATTR="@IDFT=0" + 448: @PJL ENTER LANGUAGE=HBPL + 461: RECTYPE 'A' [0x41]: + 462: 81 a1: 0x0 + 465: 82 a2: 0x7 + 469: 83 a2: 0x1 + 46d: RECTYPE 'C' [0x43]: + 46e: 91 a1: 0x0 + 471: 92 a1: 0x1 + 474: 93 a1: 0x1 + 477: 94 a1: 0x0 + 47a: 95 c2: 0x0 + 480: 96 a1: 0x0 + 483: 97 c3: 0x0 + 489: 98 a1: 0x0 + 48c: 99 a4: 1 [PAGECNT] + 492: 9a c4: 5104x6600 [WxH] + 49c: 9b a1: 0x0 + 49f: 9c a1: 0x1 + 4a2: 9d a1: 0x9 + 4a5: 9e a1: 0x2 + 4a8: 9f a1: 0x5 + 4ab: a0 a1: 0x8 + 4ae: a1 a1: 0x0 + 4b1: a2 c4: 5104x6600 [WxH] + 4bb: RECTYPE 'Q' [0x51]: + 4bc: RECTYPE 'R' [0x52]: + 4bd: a3 a1: 0x0 + 4c0: a4 a2: 6457 (0x1939) bytes of data... + 1dfe: RECTYPE 'S' [0x53]: + 1dff: RECTYPE 'D' [0x44]: + 1e00: RECTYPE 'B' [0x42]: + 1dff: \\033%-12345X@PJL EOJ + +.ft P +.fi +Decode an HBPL stream file, version 2. + +.nf +.ft CW +$ hbpldecode -h 6015c-color.prn + 0: \033%-12345X@PJL JOB NAME=PRINTER + 20: @PJL SET JOBATTR="HOST:dual.rkkda.org" + 48: @PJL SET JOBATTR="USER:rick" + 66: @PJL SET JOBATTR="DOCU:(stdin)" + 87: @PJL SET JOBATTR="OWNR:rick" + a5: @PJL SET DUPLEX=OFF + ba: @PJL SET MEDIASOURCE=0 + d2: @PJL SET RENDERMODE=COLOR + ed: @PJL SET RESOLUTION=600 + 106: @PJL SET BITSPERPIXEL=2 + 11f: @PJL SET COPIES=1 + 132: @PJL ENTER LANGUAGE=HBPL + 14c: RECTYPE JP [Job Parameters] +00000000: 1b 4a 50 04 01 00 00 01 00 00 00 00 00 00 00 00 .JP..... ........ +00000010: b0 bd ac 43 00 f0 cf 08 f4 9f ac 43 59 ba a0 43 ...C.... ...CY..C +00000020: f4 9f ac 43 00 e0 cd 08 9c ba a0 43 00 f0 cf 08 ...C.... ...C.... +00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ + 18c: RECTYPE PS [Page Start] +00000000: 1b 50 53 3c 00 14 00 00 06 19 00 00 00 78 f4 01 .PS<.... .....x.. +00000010: 90 03 00 00 04 01 01 00 58 02 e0 00 00 00 e0 00 ........ X....... +00000020: 00 00 e0 00 00 00 f0 00 00 00 00 00 00 00 00 00 ........ ........ +00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ + w,h=5120x6406 res=600 color=1 + mediatype=Plain(1) papersize=Letter(4) + 1cc: Cyan BIH: + DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO + 51 stripes, 0 layers, 1 planes + ...cyan data skipped... + 2ac: Magenta BIH: + DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO + 51 stripes, 0 layers, 1 planes + ...magenta data skipped... + 38c: Yellow BIH: + DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO + 51 stripes, 0 layers, 1 planes + ...yellow data skipped... + 46c: Black BIH: + DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO + 51 stripes, 0 layers, 1 planes + ...black data skipped... + 55c: RECTYPE PE [Page End] +00000000: 1b 50 45 3c 00 00 00 00 77 00 00 00 7c 00 00 00 .PE<.... w...|... +00000010: 08 e0 cd 08 00 00 00 00 9c 55 ac bf f4 9f ac 43 ........ .U.....C +00000020: e0 a3 ac 43 00 00 00 00 19 00 00 00 75 9e 99 43 ...C.... ....u..C +00000030: 00 21 99 43 00 00 00 00 01 00 00 00 9a 0e 99 43 .!.C.... .......C + 59c: \\033%-12345X@PJL EOJ + +.ft P +.fi + +.SH FILES +.BR /usr/bin/hbpldecode +.SH SEE ALSO +.BR foo2hbpl2-wrapper (1), +.BR foo2hbpl2 (1) +.SH "AUTHOR" +Rick Richardson +.br +Peter Korf +.br +${URLHBPL}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/hbpldecode.c b/hbpldecode.c new file mode 100644 index 0000000..fdb2812 --- /dev/null +++ b/hbpldecode.c @@ -0,0 +1,935 @@ +/* + * $Id: hbpldecode.c,v 1.66 2014/09/25 14:28:15 rick Exp $ + */ + +/*b + * Copyright (C) 2011-2014 + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Authors: Rick Richardson + * Peter Korf (HBPL version 2) + * Dave Coffin (HBPL version 1) +b*/ + +#include +#include +#include +#include +#include +#include + +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *RawFile; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" hbpldecode [options] < hbpl-file\n" +"\n" +" Decode a HBPL stream into human readable form. HBPL is\n" +" Host Based Printer Language.\n" +"\n" +" There are two versions of HBPL in existence.\n" +"\n" +" Version one is an HBPL stream with Huffman RLE data. This data is\n" +" used by the Dell 1250c, Dell C1660w, Epson AcuLaser C1700, Fuji-Xerox\n" +" cp105b, and similar printers. These printers are supported by\n" +" foo2hbpl1-wrapper et al.\n" +"\n" +" Version two is an HBPL stream with JBIG encoded data. This data\n" +" is used by the Xerox WorkCentre 6015, Fuji Xerox Docuprint CM205\n" +" Dell 1355c, and similar printers. These printers are supported by\n" +" foo2hbpl2-wrapper et al.\n" +"\n" +" Both versions can be decoded by hbpldecode.\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -r basename Basename of .jbg file for saving raw planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +/* + * Hexdump stream data + */ +void +hexdump(FILE *fp, int decmode, char *lbl1, char *lbln, \ + const void *vdata, int length) +{ + int s; + int i; + int n; + unsigned char c; + unsigned char buf[16]; + const unsigned char *data = vdata; + + if (length == 0) + { + fprintf(fp, "%s [length 0]\n", lbl1); + return; + } + for (s = 0; s < length; s += 16) + { + fprintf(fp, "%s", s ? lbln : lbl1); + fprintf(fp, decmode ? "%8d:" : "%08x:", s); + n = length - s; if (n > 16) n = 16; + for (i = 0; i < 16; ++i) + { + if (i == 8) + fprintf(fp, " "); + if (i < n) + fprintf(fp, decmode ? " %3d" : " %02x", + buf[i] = data[s+i]); + else + fprintf(fp, " "); + } + if (!decmode) + { + fprintf(fp, " "); + for (i = 0; i < n; ++i) + { + if (i == 8) + fprintf(fp, " "); + c = buf[i]; + if (c >= ' ' && c < 0x7f) + fprintf(fp, "%c", c); + else + fprintf(fp, "."); + } + } + fprintf(fp, "\n"); + } +} + +static int +getLEdword(unsigned char buf[4]) +{ + return (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | (buf[0] << 0); +} + +static int +getLEword(unsigned char buf[2]) +{ + return (buf[1] << 8) | (buf[0] << 0); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +proff(int curOff) +{ + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); +} + +/* + * Version 2 stuff + */ +void +decode_image(char *filename, int pagenum, int planenum, + unsigned char *bih, unsigned char *jbig, int jbiglen) +{ + FILE *dfp; + struct jbg_dec_state s; + size_t cnt; + unsigned char *image; + char buf[512]; + int rc; + + if (filename == 0) + return; + jbg_dec_init(&s); + rc = jbg_dec_in(&s, bih, 20, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + rc = jbg_dec_in(&s, jbig, jbiglen, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + h = jbg_dec_getheight(&s); + w = jbg_dec_getwidth(&s); + image = jbg_dec_getimage(&s, 0); + len = jbg_dec_getsize(&s); + if (image) + { + sprintf(buf, "%s-%02d-%d.pbm", + filename, pagenum, planenum); + dfp = fopen(buf, "w"); + if (dfp) + { + fprintf(dfp, "P4\n%8d %8d\n", w, h); + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + dfp = NULL; + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + } + jbg_dec_free(&s); +} + +void +decode2(FILE *fp, int curOff) +{ + // int c; + int rc; + // FILE *dfp = NULL; + int pageNum = 1; + int len; + // int curOff = 0; + // struct jbg_dec_state s[5]; + // unsigned char bih[4][20]; + // int imageCnt[4] = {0,0,0,0}; + // int pn = 0; + unsigned char header[4]; + unsigned char buf[512]; + int w, h, wh_total, res, color, mediatype, papersize; + int p, offbih[4]; + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "UNK" + char *strsize[] = { + /*00*/ "Custom", "A4", "B5", "A5", "Letter", + /*05*/ "Executive", "FanFoldGermanLegal", "Legal", "unk", "env#10", + /*10*/ "envMonarch", "envC5", "envDL", "unk", "unk", + }; + + char *strtype[] = { + /*00*/ "unk", "Plain", "Bond", "LwCard", "LwGCard", + /*05*/ "Labels", "Envelope", "Recycled", "Plain-side2", "Bond-side2", + /*10*/ "LwCard-side2", "LwGCard-side2", "Recycled-side2", + }; + + proff(curOff); printf("[hbpldecode2]\n"); + for (;;) + { + len = 4; + rc = fread(header, 1, len, fp); + if (rc != len) + { + error(1, "len=%d, but EOF on file\n", len); + return; + } + + proff(curOff); + + if (header[1] == '%' && header[2] == '-') //end of file + len = 15; + else + { + if (header[1] == 'J' && header[2] == 'P') + len = 60; // JP doesn't have len + else + len = header[3]; + printf("RECTYPE %c%c - size=%d ", header[1], header[2], len); + } + + curOff += len+4; + rc = fread(buf, 1, len, fp); + if (rc != len) + { + error(1, "len=%d, but EOF on file\n", len); + return; + } + + if (0) {} + else if (header[1] == '%' && header[2] == '-') + { + buf[len] = 0x00; + printf("\\033%%-%c%s", header[3], buf); + return; + } + else if (header[1] == 'J' && header[2] == 'P') + { + printf("[Job Parameters]\n"); + + hexdump(stdout, 0, "", "", buf, len); + hexdump(stdout, 1, "", "", buf, len); + printf("\t\tsize/source(?) = %d(0x%02x)\n", buf[11], buf[11]); + } + else if (header[1] == 'D' && header[2] == 'M') + { + printf("[DM]\n"); + hexdump(stdout, 0, "", "", buf, len); + } + + else if (header[1] == 'P' && header[2] == 'S') + { + unsigned char *mbuf; + + printf("[Page Start]\n"); + if (Debug) + hexdump(stdout, 0, "", "", buf, len); + w = getLEdword(&buf[0]); + h = getLEdword(&buf[4]); + wh_total = getLEdword(&buf[8]); + res = getLEword(&buf[20]); + papersize = buf[16]; + mediatype = buf[17]; + color = buf[18]; + printf("\t\tw,h = %dx%d, wh_total = %d, res = %d, color = %d\n", + w, h, wh_total, res, color); + printf("\t\tmediatype = %s(%d), papersize = %s(%d)\n", + STRARY(mediatype, strtype), mediatype, + STRARY(papersize, strsize), papersize); + + for (p = 0; p < 4; ++p) + { + // offsets at 26, 30, 34, 38 + offbih[p] = getLEdword(&buf[22 + p*4]); + printf("\t\toffbih[%d] = %d (0x%x)\n", p, offbih[p], offbih[p]); + } + + len = getLEdword(&buf[12]); + mbuf = malloc(len); + if (!mbuf) + error(1, "malloc on mbuf, size=%d failed\n", len); + rc = fread(mbuf, 1, len, fp); + if (rc != len) + { + error(1, "len=%d, but EOF on file\n"); + } + if (Debug > 2) hexdump(stdout, 0, "", "", mbuf, len); + if (color == 1) + { + proff(curOff); + printf("Yellow BIH:\n"); + print_bih(mbuf); + printf("\t\t... %d(0x%x) of yellow data skipped...\n", + offbih[0]-20, offbih[0]-20); + decode_image(DecFile, pageNum, 3, + mbuf, mbuf+20, offbih[0]-20); + + proff(curOff + offbih[0]); + printf("Magenta BIH:\n"); + print_bih(mbuf + offbih[0]); + printf("\t\t... %d(0x%x) of magenta data skipped...\n", + offbih[1]-20, offbih[1]-20); + decode_image(DecFile, pageNum, 2, + mbuf, mbuf+20+offbih[0], offbih[1]-20); + + proff(curOff + offbih[0] + offbih[1]); + printf("Cyan BIH:\n"); + print_bih(mbuf + offbih[0] + offbih[1]); + printf("\t\t... %d(0x%x) of cyan data skipped...\n", + offbih[2]-20, offbih[2]-20); + decode_image(DecFile, pageNum, 1, + mbuf, mbuf+20+offbih[0]+offbih[1], offbih[2]-20); + + proff(curOff + offbih[0] + offbih[1] + offbih[2]); + printf("Black BIH:\n"); + print_bih(mbuf + offbih[0] + offbih[1] + offbih[2]); + printf("\t\t... %d(0x%x) of black data skipped...\n", + offbih[3]-20, offbih[3]-20); + decode_image(DecFile, pageNum, 4, + mbuf, mbuf+20+offbih[0]+offbih[1]+offbih[2], offbih[3]-20); + } + else + { + proff(curOff); + printf("Black BIH:\n"); + // hexdump(stdout, 0, "", "", &bih[0], 20); + print_bih(mbuf); + printf("\t\t... %d(0x%x) of black data skipped...\n", + offbih[3]-20, offbih[3]-20); + decode_image(DecFile, pageNum, 0, mbuf, mbuf+20, offbih[3]-20); + } + free(mbuf); + curOff += len; + ++pageNum; + } + else if (header[1] == 'P' && header[2] == 'E') + { + printf("[Page End]\n"); + hexdump(stdout, 0, "", "", buf, len); + } + else + { + printf("[Unknown]\n"); + hexdump(stdout, 0, "", "", buf, len); + } + } +} + +/* + * Version 1 stuff + */ + +unsigned short +get2(FILE *fp) +{ + unsigned char buf[2]; + if (fread (buf, 2, 1, fp)) + return getLEword (buf); + return 0xffff; +} + +unsigned +get4(FILE *fp) +{ + unsigned char buf[4]; + if (fread (buf, 4, 1, fp)) + return getLEdword(buf); + return 0xffffffff; +} + +typedef struct stream +{ + unsigned char *p; + unsigned buf, bits; +} STREAM; + +unsigned int +getbits(STREAM *s, int nbits) +{ + while (s->bits < nbits) + { + s->buf = (s->buf << 8) + *s->p++; + s->bits += 8; + } + s->bits -= nbits; + return s->buf << (32-s->bits-nbits) >> (32-nbits); +} + +char +gethuff(STREAM *s, const char *huff) +{ + int i; + i = getbits(s,huff[0]) * 2; + s->bits += huff[0] - huff[i+2]; + return huff[i+1]; +} + +/* + Runlengths are integers between 1 and 17057 encoded as follows: + + 1 00 + 2 010 + 3 011 + 4 100 0 + 5 100 1 + 6 101 00 + 7 101 01 + 8 101 10 + 9 101 11 + 10 110 0000 + 11 110 0001 + 12 110 0010 + ... + 25 110 1111 + 26 111 000 000 + 27 111 000 001 + 28 111 000 010 + 29 111 000 011 + ... + 33 111 000 111 + 34 111 001 000 + ... + 41 111 001 111 + 42 111 010 000 + 50 111 011 0000 + 66 111 100 00000 + 98 111 101 000000 + 162 111 110 000000000 + 674 111 111 00000000000000 + 17057 111 111 11111111111111 +*/ +unsigned int +get_len(STREAM *s) +{ + const short code[] = { 3,3,3,4,5,6,9,14,26,34,42,50,66,98,162,674 }; + int i; + + switch (getbits(s,3)) + { + case 0: + case 1: s->bits++; + return 1; + case 2: return 2; + case 3: return 3; + case 4: return 4 + getbits(s,1); + case 5: return 6 + getbits(s,2); + case 6: return 10 + getbits(s,4); + } + i = getbits(s,3); + return code[8+i] + getbits(s,code[i]); +} + +/* + CMYK byte differences are encoded as follows: + + 0 000 + +1 001 + -1 010 + 2 011s0 s = 0 for +, 1 for - + 3 011s1 + 4 100s00 + 5 100s01 + 6 100s10 + 7 100s11 + 8 101s000 + 9 101s001 + ... + 14 101s110 + 15 101s111 + 16 110s00000 + 17 110s00001 + 18 110s00010 + ... + 46 110s11110 + 47 110s11111 + 48 1110s00000 + 49 1110s00001 + ... + 78 1110s11110 + 79 1110s11111 + 80 1111s000000 + 81 1111s000001 + ... + 126 1111s101110 + 127 1111s101111 + 128 11111110000 +*/ +signed char +get_diff(STREAM *s) +{ + const short code[] = { 1,2,3,5,5,6,2,4,8,16,48,80 }; + int i, sign; + + switch (i = getbits(s, 3)) + { + case 0: return 0; + case 1: return 1; + case 2: return -1; + case 7: i += getbits(s, 1); + } + sign = getbits(s, 1); + i = code[i+3] + getbits(s, code[i-3]); + return sign ? -i:i; +} + +void +decode1(FILE *fp, int ilen, int page, int color, int width, int height) +{ + static const char huff[2][68] = + { + { + 5,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 5,2,5,2,5,2,5,2,5,2,5,2,5,2,5,2, + 1,3,1,3,1,3,1,3,2,5,3,5,4,5,6,5 + }, + { + 5,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1, + 5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 1,3,1,3,1,3,1,3,2,5,3,5,4,5,6,5 + }, + }; + unsigned char *in, *stop; + struct stream stream[5]; + int size, hsel = 0, bit = 0, token, raw, dir, run, r, s; + int off = 0, row, col; + union { int i; unsigned char c[4]; } *kcmy = NULL; + char name[512], (*rgb)[3], rotor[]="01234"; + int dirs[] = { -1, 0, -1, 1, 2 }; + FILE *dfp; + + if (!(in = malloc (ilen))) return; + r = fread (in, 1, ilen, fp); + if (!DecFile) + { + free (in); + printf ("Page %d image found -- use \"-d basename\" to decode\n", page); + return; + } + size = width * (height+2) * 4; + if (!size || size / width / (height+2) != 4 || !(kcmy = malloc (size))) + { + free (in); + error (1, "Invalid dimensions for HBPLv1\n"); + } + sprintf (name, "%s-%02d.p%cm", DecFile, page, color ? 'p':'g'); + printf ("Decoding page %d to %s ...\n", page, name); + + memset (stream, 0, sizeof stream); + stream[0].p = in+48; + for (s = 0; s < 4; s++) + stream[s+1].p = stream[s].p + getLEdword (in+32+s*4); + stop = stream[1].p; + for (r = 1; r < 5; r++) + dirs[r] -= width; + if (!color) dirs[4] = -8; + + memset (kcmy, -color, size); + rgb = (void *) kcmy; + kcmy += width+1; + + while (stream[0].p < stop && off < height * width) + { + token = gethuff (stream, huff[hsel]); + switch (token) + { + case 6: + hsel = !hsel; + getbits (stream, 1); + break; + case 5: + for (s = 0; s <= color*3; s++) + kcmy[off].c[s] = kcmy[off-1].c[s] + get_diff (stream+1+s); + off++; + bit = 0; + break; + default: + run = get_len (stream); + raw = token + bit; + dir = dirs[rotor[raw]-'0']; + bit = (run < 17057); + while (run--) + { + kcmy[off].i = kcmy[off+dir].i; + off++; + } + if (raw) + { + s = rotor[raw]; + for (r = raw; r; r--) + rotor[r] = rotor[r-1]; + rotor[0] = s; + } + break; + } + } + free (in); + if (!(dfp = fopen (name, "w"))) + error (1, name); + fprintf (dfp, "P%d %d %d 255\n", 5+color, width, height); + for (off = row = 0; row < height; row++) + { + for (col = 0; col < width; col++) + { + if (color) + for (s = 0; s < 3; s++) + rgb[col][s] = (kcmy[off].c[0]^255) * + (kcmy[off].c[s+1]^255) / 255; + else + rgb[0][col] = kcmy[off].c[0]^255; + off++; + } + fwrite (rgb, color*2+1, width, dfp); + } + fclose (dfp); + free (rgb); +} + +int +parse1(FILE *fp, int *curOff) +{ + int rectype, stoptype, type, subtype; + int val[2] = { 0,0 }, page = 0, color = 0, width = 0, height = 0; + int i; + char *strsize[256] = { + /*00*/ "Letter", "Legal", "A4", "Executive", "unk", + /*05*/ "unk", "env#10", "envMonarch", "envC5", "envDL", + /*10*/ "unk", "B5", "unk", "unk", "unk", + /*15*/ "A5", "unk", "unk", "unk", "unk", + }; + // 205 == "folio", Sheesh + for (i = 0; i < 256; ++i) + if (strsize[i] == NULL) + strsize[i] = "Custom"; + strsize[205] = "folio"; // 8.5x13 + + proff(*curOff); printf("[hbpldecode1]\n"); + while ((proff(*curOff), (*curOff)++, rectype = fgetc(fp)) != EOF) + { + printf("RECTYPE '%c' [0x%x]:\n", rectype, rectype); + stoptype = 0; + switch (rectype) + { + case 0x41: stoptype = 0x83; break; + case 0x43: stoptype = 0xA2; break; + case 0x52: stoptype = 0xA4; break; + case 0x20: + case 0x51: + case 0x53: + case 0x44: break; + case 0x42: return 0; + default: + (*curOff)--; + ungetc (rectype, fp); + printf ("Unknown rectype 0x%x at 0x%x(%d)\n", + rectype, *curOff, *curOff); + return 1; + } + if (!stoptype) continue; + do + { + type = fgetc(fp); + (*curOff)++; +again: switch ((*curOff)++, subtype = fgetc(fp)) + { + case 0xa1: val[0] = fgetc(fp); (*curOff)++; break; + case 0xc2: val[1] = get2(fp); *curOff += 2; + case 0xa2: val[0] = get2(fp); *curOff += 2; break; + case 0xc4: val[1] = get4(fp); *curOff += 4; + case 0xc3: + case 0xa4: val[0] = get4(fp); *curOff += 4; break; + case 0xb1: goto again; + default: error (1, "Unknown subtype 0x%02x\n", subtype); + } + proff(*curOff); + printf(" %x %x: ", type, subtype); + switch (type) + { + case 0x94: + printf("%d [paper=%s]\n", val[0], STRARY(val[0], strsize)); + break; + case 0x95: + printf("%dx%d%s\n", val[1], val[0], + val[0] ? " [WxH in 0.1mm units]":""); + break; + case 0x99: + printf("%d [page]\n", val[0]); + page = val[0]; + break; + case 0x9d: + printf("0x%x [%s]\n", val[0], val[0] == 9 ? "Mono" : "Color"); + color = val[0] != 9; + break; + case 0x9a: + case 0xa2: + printf("%dx%d (0x%x x 0x%x) [WxH]\n", + val[1], val[0], val[1], val[0]); + width = val[1]; + height = val[0]; + break; + case 0xa4: + printf("%d (0x%x) bytes of data...\n", val[0], val[0]); + decode1 (fp, val[0], page, color, width, height); + *curOff += val[0]; + break; + default: + printf("0x%x\n", val[0]); + } + } while (type != stoptype); + } + return 0; +} + +void +decode(FILE *fp) +{ + int c; + // int rc; + // FILE *dfp = NULL; + // int pageNum = 1; + int len; + int curOff = 0; + //struct jbg_dec_state s[5]; + // unsigned char bih[4][20]; + // int imageCnt[4] = {0,0,0,0}; + // int pn = 0; + char buf[70000]; + + c = getc(fp); + if (c == EOF) + { + printf("EOF on file\n"); + return; + } + ungetc(c, fp); + if (c == '\033') + { + while (fgets(buf, sizeof(buf), fp)) + { + proff(curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if ((strcmp(buf, "@PJL ENTER LANGUAGE=HBPL\r\n") == 0) + || (strcmp(buf, "@PJL ENTER LANGUAGE=HBPL\n") == 0)) + break; + } + } + + c = getc(fp); + ungetc(c, fp); + if (c == 0x1b) + { + // Decode version 2, ESC based + decode2(fp, curOff); + goto done; + } + + if (parse1 (fp, &curOff)) + { + printf ("Continuing with hexdump...\n"); + if ( (len = fread(buf, 1, sizeof(buf), fp)) ) + hexdump (stdout, 0, "", "", buf, len); + exit(1); + } + +done: + c = fgetc(fp); + if (c != 033) + return; + ungetc(c, fp); + + while (fgets(buf, sizeof(buf), fp)) + { + proff(curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (strcmp(buf, "@PJL ENTER LANGUAGE=HBPL\n") == 0) + break; + } + printf("\n"); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hor:D:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'r': RawFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + decode(fp); + fclose(fp); + } + else + decode(stdin); + + exit(0); +} diff --git a/hiperc.h b/hiperc.h new file mode 100644 index 0000000..208d00c --- /dev/null +++ b/hiperc.h @@ -0,0 +1,171 @@ +/* + * Manifest constants for the HIPERC protocol + */ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +typedef enum { + HIPERC_START_PAGE = 0, + HIPERC_DATA = 1, + HIPERC_END_PAGE = 255, +} HIPERC_RECTYPE; + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +typedef enum { + DMBIN_AUTO = 0, + DMBIN_TRAY1 = 1, + DMBIN_TRAY2 = 2, + DMBIN_MULTI = 3, + DMBIN_MANUAL = 4, +} DM_BIN; + +typedef enum { + DMMEDIA_PLAIN = 0, // Plain paper + DMMEDIA_THICK = 1, + DMMEDIA_THIN = 2, + DMMEDIA_BOND = 3, + DMMEDIA_COLOR = 4, + DMMEDIA_CARDSTOCK = 5, + DMMEDIA_LABELS = 6, // Labels + DMMEDIA_ENVELOPE = 7, // Envelope + DMMEDIA_PREPRINTED = 8, + DMMEDIA_COTTON = 9, + DMMEDIA_RECYCLED = 10, +} DMMEDIA; + +typedef enum { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2, +} DMCOLOR; + +typedef enum { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2, +} DMORIENT; + +typedef enum { + DMPAPER_LETTER = 1, // Letter, 8 1/2- by 11-inches + DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches + DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches + DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches + DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches + DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches + DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches + DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters + DMPAPER_A4 = 9, // A4 Sheet, 210- by 297-millimeters + DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters + DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters + DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters + DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper + DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper + DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper + DMPAPER_10X14 =16, // 10- by 14-inch sheet + DMPAPER_11X17 =17, // 11- by 17-inch sheet + DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches + DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches + DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches + DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches + DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches + DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches + DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches + DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches + DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches + DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters + DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters + DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters + DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters + DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters + DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters + DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters + DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters + DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters + DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters + DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches + DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches + DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches + DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in + DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in + + DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm + DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm + DMPAPER_9X11 =44, // 9 x 11 in + DMPAPER_10X11 =45, // 10 x 11 in + DMPAPER_15X11 =46, // 15 x 11 in + DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm + DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE + DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE + DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in + DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in + DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in + DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in + DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in + DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm + DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in + DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm + DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm + DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in + DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm + DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm + DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm + DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm + DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm + DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm + DMPAPER_A2 =66, // A2 420 x 594 mm + DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm + DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm +} DMPAPER; + +typedef union _SWAP_32{ + char byte[sizeof(uint32_t)]; + uint32_t dword; +} SWAP_32; + +typedef union _SWAP_16{ + char byte[sizeof(uint16_t)]; + uint16_t word; +} SWAP_16; + +static inline uint32_t +be32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +be16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} diff --git a/hipercdecode.1in b/hipercdecode.1in new file mode 100644 index 0000000..f8dec45 --- /dev/null +++ b/hipercdecode.1in @@ -0,0 +1,169 @@ +.TH hipercdecode 1 "${MODpage}" "hipercdecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +hipercdecode \- Decode a HIPERC stream into human readable form. +.SH SYNOPSIS +.B hipercdecode +.RI [ options "] <" hiperc-file +.SH DESCRIPTION +.B hipercdecode +decodes a HIPERC stream into human readable form. +Uncompressed and JBIG formats are handled. +.P +An HIPERC stream is the printer language used by the +Oki Data C310dn, C3100, C3200n, C3250n, C3300n, C3400n, C5100n, C5250n, C5500n, +C5600, and the C5800n +printers. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an HIPERC stream file created by foo2hiperc. + +.nf +.ft CW +$ foo2hiperc-wrapper testpage.ps | hipercdecode -h + 0: \\033%-12345X@PJL + f: @PJL RDYMSG DISPLAY = "Unknown" + 30: @PJL SET OKIJOBACCOUNTJOB USERID="Unknown" JOBNAME="Unknown" + 6e: @PJL SET OKIAUXJOBINFO DATA="DocumentName=Unknown" + a2: @PJL SET OKIAUXJOBINFO DATA="ComputerName=dual.rkkda.org" + dd: @PJL SET OKIAUXJOBINFO DATA="ReceptionTime=00:00:00 2008/01/30" + 11e: @PJL SET OKIAUTOTRAYSWITCH=ON + 13d: @PJL SET OKIPAPERSIZECHECK=ENABLE + 160: @PJL SET RESOLUTION=600 + 179: @PJL SET PAPER=LETTER + 190: @PJL SET OKITRAYSEQUENCE=PAPERFEEDTRAY + 1b8: @PJL SET OKIPAPERFEED=TRAY1 + 1d5: @PJL SET OKIMEDIATYPE = PLAIN + 1f4: @PJL SET LPARM:PCL OKIPRINTMARGIN=INCH1D6 + 21f: @PJL SET COPIES=1 + 232: @PJL SET QTY=1 + 242: @PJL SET HIPERCEFFECTIVEBLOCKSIZE=34799360 + 26e: @PJL ENTER LANGUAGE=HIPERC + 289: RECTYPE 0 (len=52,0x34 cnt=1) + 291: BLKNUM 0, nbie=1, pn=3 [black] uc=0,0, wid=4864 ud=0,100 + 2a5: BLKNUM 1 (len=20), uncompressed=1, bie: + DL = 48, D = 48, P = 49, - = 48, XY = 4864 x 6816 + L0 = 256, MX = 0, MY = 0 + Order = 0 + Options = 0 + 1 stripes, 0 layers, 49 planes + 2bd: RECTYPE 1 (len=155668,0x26014 cnt=1) + 2c5: BLKNUM 0 (len=4), plane=3, uc=0,0,0 + 2cd: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... + 262d1: RECTYPE 1 (len=155668,0x26014 cnt=2) + 262d9: BLKNUM 0 (len=4), plane=3, uc=0,0,0 + 262e1: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... + 4c2e5: RECTYPE 1 (len=155668,0x26014 cnt=3) + 4c2ed: BLKNUM 0 (len=4), plane=3, uc=0,0,0 + 4c2f5: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... + 722f9: RECTYPE 1 (len=155668,0x26014 cnt=4) + 72301: BLKNUM 0 (len=4), plane=3, uc=0,0,0 + 72309: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... + 9830d: RECTYPE 1 (len=155668,0x26014 cnt=5) + 98315: BLKNUM 0 (len=4), plane=3, uc=0,0,0 + 9831d: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... + be321: RECTYPE 1 (len=155668,0x26014 cnt=6) + be329: BLKNUM 0 (len=4), plane=3, uc=0,0,0 + be331: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... + e4335: RECTYPE 1 (len=155668,0x26014 cnt=7) + e433d: BLKNUM 0 (len=4), plane=3, uc=0,0,0 + e4345: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +10a349: RECTYPE 1 (len=155668,0x26014 cnt=8) +10a351: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +10a359: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +13035d: RECTYPE 1 (len=155668,0x26014 cnt=9) +130365: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +13036d: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +156371: RECTYPE 1 (len=155668,0x26014 cnt=10) +156379: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +156381: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +17c385: RECTYPE 1 (len=155668,0x26014 cnt=11) +17c38d: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +17c395: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +1a2399: RECTYPE 1 (len=155668,0x26014 cnt=12) +1a23a1: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +1a23a9: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +1c83ad: RECTYPE 1 (len=155668,0x26014 cnt=13) +1c83b5: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +1c83bd: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +1ee3c1: RECTYPE 1 (len=155668,0x26014 cnt=14) +1ee3c9: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +1ee3d1: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +2143d5: RECTYPE 1 (len=155668,0x26014 cnt=15) +2143dd: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +2143e5: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +23a3e9: RECTYPE 1 (len=155668,0x26014 cnt=16) +23a3f1: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +23a3f9: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +2603fd: RECTYPE 1 (len=155668,0x26014 cnt=17) +260405: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +26040d: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +286411: RECTYPE 1 (len=155668,0x26014 cnt=18) +286419: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +286421: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +2ac425: RECTYPE 1 (len=155668,0x26014 cnt=19) +2ac42d: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +2ac435: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +2d2439: RECTYPE 1 (len=155668,0x26014 cnt=20) +2d2441: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +2d2449: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +2f844d: RECTYPE 1 (len=155668,0x26014 cnt=21) +2f8455: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +2f845d: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +31e461: RECTYPE 1 (len=155668,0x26014 cnt=22) +31e469: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +31e471: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +344475: RECTYPE 1 (len=155668,0x26014 cnt=23) +34447d: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +344485: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +36a489: RECTYPE 1 (len=155668,0x26014 cnt=24) +36a491: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +36a499: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +39049d: RECTYPE 1 (len=155668,0x26014 cnt=25) +3904a5: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +3904ad: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +3b64b1: RECTYPE 1 (len=155668,0x26014 cnt=26) +3b64b9: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +3b64c1: BLKNUM 1 (len=155648), Data=00 00 00 00 00 00 00 00 00 00 00 ... +3dc4c5: RECTYPE 1 (len=97300,0x17c14 cnt=27) +3dc4cd: BLKNUM 0 (len=4), plane=3, uc=0,0,0 +3dc4d5: BLKNUM 1 (len=97280), Data=00 00 00 00 00 00 00 00 00 00 00 ... +3f40d9: RECTYPE 255 (len=8,0x8 cnt=28) +3f40e1: \\033%-12345X + +.ft P +.fi + +.SH FILES +.BR /usr/bin/hipercdecode +.SH SEE ALSO +.BR foo2hiperc-wrapper (1), +.BR foo2hiperc (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLHC}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/hipercdecode.c b/hipercdecode.c new file mode 100644 index 0000000..50cea78 --- /dev/null +++ b/hipercdecode.c @@ -0,0 +1,465 @@ +/* + * $Id: hipercdecode.c,v 1.8 2014/01/24 19:25:47 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "hiperc.h" +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *RawFile; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; +FILE *FpRaw[4]; +FILE *FpDec[4]; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" hipercdecode [options] < oki-file\n" +"\n" +" Decode a HIPERC into human readable form. Uncompressed and JBIG\n" +" are handled.\n" +"\n" +" A HIPERC stream is the printer language used by the Oki Data C310dn,\n" +" C3100, C3200n, C3250n, C3300n, C3400n, C5100n, C5250n, C5500n, C5600,\n" +" and the C5800n printers.\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -r basename Basename of .jbg file for saving raw planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +static int +getdword(unsigned char buf[4]) +{ + return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3] << 0); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + unsigned char blk[50*1024*1024]; + +void +decode(FILE *fp) +{ + int c; + int rc; + FILE *dfp = NULL; + int pageNum = 1; + int len; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[4][20]; + int imageCnt[4] = {0,0,0,0}; + int pn = 0; + char buf[1024]; + int reccnt = 0; + int uncompressed = 0; + unsigned int w = 0, h = 0; + + c = getc(fp); + if (c == EOF) + { + printf("EOF on file\n"); + return; + } + ungetc(c, fp); + if (c == '\033') + { + while (fgets(buf, sizeof(buf), fp)) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (strcmp(buf, "@PJL ENTER LANGUAGE=HIPERC\n") == 0) + break; + } + } + + for (;;) + { + unsigned int reclen; + unsigned int rectype; + unsigned int blknum; + + rc = fread(&reclen, 4, 1, fp); + if (rc != 1) break; + rc = fread(&rectype, 4, 1, fp); + if (rc != 1) break; + + reclen = be32(reclen); + rectype = be32(rectype); + if (PrintOffset) printf("%d: ", curOff); + else if (PrintHexOffset) printf("%6x: ", curOff); + printf("RECTYPE %d (len=%d,0x%x cnt=%d)", + rectype, reclen, reclen, ++reccnt); + if (rectype == 0) + printf(", Page %d\n", pageNum); + else + printf("\n"); + curOff += 8; + + blknum = 0; + reclen -= 8; + while (reclen) + { + int blklen; + int i; +// unsigned char blk[50*1024*1024]; + + if (PrintOffset) printf("%d: ", curOff); + else if (PrintHexOffset) printf("%6x: ", curOff); + + rc = fread(&blklen, 4, 1, fp); + if (rc != 1) break; + curOff += 4; + reclen -= 4; + + blklen = be32(blklen); + rc = fread(&blk, blklen, 1, fp); + if (rc != 1) return; + curOff += blklen; + reclen -= blklen; + + + switch (rectype) + { + case 0: + reccnt = 0; + switch (blknum) + { + case 0: + printf("\tBLKNUM %d, nbie=%d, pn=%d", + blknum, blk[0], blk[1]); + switch (pn = blk[1]) + { + case 0: printf(" [cyan] "); break; + case 1: printf(" [magen]"); break; + case 2: printf(" [yello]"); break; + case 3: printf(" [black]"); break; + } + printf(" uc=%d,%d, wid=%d ud=%d,%x\n", + blk[2], blk[3], + getdword(blk+4), getdword(blk+8), getdword(blk+12)); + w = getdword(blk+4); + if (pn < 0 || pn > 3) + error(1, "Plane %d is not 0-3.\n", pn); + break; + case 1: /* BIH */ + uncompressed = (blk[0] == 48); + printf("\tBLKNUM %d (len=%d), uncompressed=%d, bie:\n", + blknum, blklen, uncompressed); + memcpy(bih[pn], blk, 20); + // bih[18] |= JBG_ILEAVE | JBG_SMID; + // bih[19] |= JBG_TPDON | JBG_DPON; + // bih[19] |= JBG_DELAY_AT; + print_bih(bih[pn]); + h = (blk[8] << 24) | (blk[9] << 16) + | (blk[10] << 8) | (blk[11] << 0); + imageCnt[pn] = 0; + break; + } + break; + case 1: + switch (blknum) + { + case 0: /* PLANE */ + printf("\tBLKNUM %d (len=%d), plane=%d, uc=%d,%d,%d\n", + blknum, blklen, pn = blk[0], blk[1], blk[2], blk[3]); + break; + case 1: /* DATA */ + printf("\tBLKNUM %d (len=%d), Data=", blknum, blklen); + for (i = 0; i < blklen && i < 11; ++i) + printf("%02x ", blk[i]); + if (blklen >= 11) + printf("..."); + printf("\n"); + if (RawFile && !FpRaw[pn]) + { + sprintf(buf, "%s-%02d-%d.jbg", + RawFile, pageNum, pn); + FpRaw[pn] = fopen(buf, "w"); + rc = fwrite(bih[pn], 1, 20, FpRaw[pn]); + } + if (FpRaw[pn]) + rc = fwrite(blk, 1, blklen, FpRaw[pn]); + if (uncompressed) + { + if (DecFile && !FpDec[pn]) + { + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, pn); + FpDec[pn] = fopen(buf, "w"); + fprintf(FpDec[pn], "P4\n"); + fprintf(FpDec[pn], "%9d %9d\n", w, h); + } + if (FpDec[pn]) + rc = fwrite(blk, 1, blklen, FpDec[pn]); + } + else if (DecFile) + { + size_t cnt; + unsigned char *image; + + if (imageCnt[pn] == 0) + { + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih[pn], 20, NULL); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + // rc = fwrite(bih, 20, 1, dfp); + imageCnt[pn] = 20; + len = jbg_dec_getsize(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + if (image && len) + memset(image, 0, len); + } + for (i = 0; i < blklen; ++i) + { + rc = jbg_dec_in(&s[pn], &blk[i], 1, &cnt); + if (rc == JBG_EOK) + break; + if (rc != JBG_EAGAIN && rc != JBG_EOK) + error(1, "jbg_dec_in c=%x i=%d rc=%d (%s)\n", + blk[i], i, rc, jbg_strerror(rc)); + } + if (0) { + printf("\ti=%d (%s)\n", i, jbg_strerror(rc)); + len = jbg_dec_getsize(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + printf("\tlen=%d image=%lx (%s)\n", + len, (long) image, jbg_strerror(rc)); + for (i=0; i= 22) + printf("..."); + printf("\n"); + break; + } + + ++blknum; + } + if (rectype == 255) + { + if (FpDec[pn]) + { + int i; + for (i = 0; i < 4; ++i) + { + if (FpDec[i]) + fclose(FpDec[i]); + FpDec[i] = 0; + } + } + c = getc(fp); + if (c == EOF) break; + ungetc(c, fp); + if (c == '\033') break; + ++pageNum; + } + } + + while (fgets(buf, sizeof(buf), fp)) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (strcmp(buf, "@PJL ENTER LANGUAGE=HIPERC\n") == 0) + break; + } + printf("\n"); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hor:D:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'r': RawFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + decode(fp); + fclose(fp); + } + else + decode(stdin); + + exit(0); +} diff --git a/hplj1000 b/hplj1000 new file mode 100755 index 0000000..323069c --- /dev/null +++ b/hplj1000 @@ -0,0 +1,309 @@ +#!/bin/sh + +# hplj1000: +# hplj1005: +# hplj1018: +# hplj1020: +# hpljP1005: +# hpljP1006: +# hpljP1007: +# hpljP1008: +# hpljP1505: +# +# Hotplug script for HP *1??? USB laser printers. The model number +# that this script deals with is determined from the script name. +# +# Used to download firmware automatically into the printer when it +# is powered up or plugged into the USB port. +# +# Also, run this script once with the magic argument "install-usermap" +# to create the proper entry in the /etc/hotplug/usb.usermap file. +# +# The inspiration fo this script is from: +# Oscar Santacreu. Alicante-Spain (2002) +# Mike Morgan (2004) +# + +# udev calls us twice on FC4! Just want /dev/usb/lp +case "$DEVNAME" in +/dev/usb/usb*) exit;; # Bug: FC4 +/dev/bus/usb/*) exit;; # Bug: Ubuntu 14 +esac + +PROGNAME="$0" + +# +# Set $DEV to, e.g. /dev/usb/lp0, to force the device you want +# Else, leave it null to automatically detect the device +# +DEV=/dev/usb/lp0 +DEV="" + +# +# Path to the USB CUPS backend. We use this backend to upload the firmware +# into the printer when we are on a CUPS/libusb-based system. +# +USB_BACKEND=/usr/lib/cups/backend/usb + +# +# Directory to find downloadable HP firmware files sihpMMMM.dl +# +FWDIR=/usr/share/foo2zjs/firmware + +# +# Program used to determine USB printer id information +# +# NOTE: /usr/bin is NOT mounted at this point +# +# e.g. /etc/rc.sysinit: +# /sbin/start_udev +# [snip] +# # Mount all other filesystems (except for NFS and /proc, which is already +# +PRINTERID=/bin/usb_printerid + +# +# Figure out how to log our messages +# +if [ -t 1 ]; then + # Running from a tty... + log() { + echo "$PROGNAME: foo2zjs: $@" + } +elif [ -x /usr/bin/logger ]; then + # Have logger... + log() { + logger -t "$PROGNAME" -- "foo2zjs: $@" + } +else + # No logger... + log() { + echo "$PROGNAME: foo2zjs: $@" >> /var/log/messages + } +fi + +# +# Figure out the model number from the name of this script +# +case "$0" in +*P1005) + MODEL=P1005; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3d17 #Model + FWDIR=/usr/share/foo2xqx/firmware + ;; +*P1006) + MODEL=P1006; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3e17 #Model + FWDIR=/usr/share/foo2xqx/firmware + ;; +*P1007) + MODEL=P1007; FWMODEL=P1005 # Alias + USB1=0x03f0 #Vendor + USB2=0x4817 #Model + FWDIR=/usr/share/foo2xqx/firmware + ;; +*P1008) + MODEL=P1008; FWMODEL=P1006 # Alias + USB1=0x03f0 #Vendor + USB2=0x4917 #Model + FWDIR=/usr/share/foo2xqx/firmware + ;; +*P1505) + MODEL=P1505; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3f17 #Model + FWDIR=/usr/share/foo2xqx/firmware + ;; +*P1505n) + MODEL=P1505n; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x4017 #Model + FWDIR=/usr/share/foo2xqx/firmware + ;; +*1000) + MODEL=1000; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x0517 #Model + ;; +*1005) + MODEL=1005; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x1317 #Model + ;; +*1018) + MODEL=1018; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x4117 #Model + ;; +*1020) + MODEL=1020; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x2b17 #Model + ;; +*) + log "Only HP LaserJet 100[05],1018,1020,P100[5678],P1505 are supported" + exit + ;; +esac + +# +# Remove HPLIP proprietary rules! +# +model=` echo "$MODEL" | tr 'A-Z' 'a-z' ` +rm -f /etc/udev/rules.d/*hpmud*laserjet_${model}* +rm -f /etc/udev/rules.d/*hpmud_support.rules +rm -f /etc/udev/rules.d/*hpmud_plugin.rules +rm -f /lib/udev/rules.d/*hpmud_support.rules +rm -f /lib/udev/rules.d/*hpmud_plugin.rules + +# +# The special command line argument "install-usermap" will install +# the proper entry into the /etc/hotplug/usb.usermap file +# +case "$1" in +install-usermap) + if [ "$USB2" != "" ]; then + if [ -w /etc/hotplug/usb.usermap ]; then + USERMAP=/etc/hotplug/usb.usermap + elif [ -d /etc/hotplug/usb/ ]; then + USERMAP=/etc/hotplug/usb/foo2zjs.usermap + if [ ! -s $USERMAP ]; then + echo > $USERMAP + fi + else + log "No /etc/hotplug usermap!" + exit + fi + chmod 664 $USERMAP + ex - $USERMAP <<-EOF + g/^hplj$MODEL/d + \$a + hplj$MODEL 0x0003 $USB1 $USB2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 + . + w + q + EOF + else + log "I don't know the USB info for this model yet. Please run" + log "usb_printerid on the usb device and send the output to:" + log "rick.richardson@comcast.net" + fi + exit 0 + ;; +install-usblp) + for f in /etc/modprobe.d/blacklist*; do + if grep -s -q usblp $f; then + ed - $f <<-EOF + g/^blacklist.*usblp/d + w + q + EOF + #echo $f + /sbin/modprobe usblp + fi + done + exit 0 + ;; +esac + +# +# Procedures to load a single device with firmware +# +load_usblp() { + _dev="$1" + fw="$FWDIR/sihp$FWMODEL.dl" + if [ ! -f "$fw" ]; then + log "Missing HP LaserJet $MODEL firmware file $fw" + log "...read foo2zjs installation instructions and run ./getweb $MODEL" + return 1 + fi + + log "loading HP LaserJet $MODEL firmware $fw to $_dev ..." + # There is a timeout problem with udev and FC4, so spin it off. + ( + if cat $fw > $_dev; then + log "... download successful." + else + log "... download failed." + fi + ) & + return 0 +} + +load_cups() { + fw="$FWDIR/sihp$FWMODEL.dl" + if [ ! -f "$fw" ]; then + log "Missing HP LaserJet $MODEL firmware file $fw" + log "...read foo2zjs installation instructions and run ./getweb $MODEL" + return 1 + fi + + # There is a timeout problem with udev and FC4, so spin it off. + ( + device_found=0 + for uri in `$USB_BACKEND 2> /dev/null | grep -i 'HP.*LaserJet.*'"$MODEL" | grep -v FWVER | cut -d ' ' -f 2`; do + log "loading HP LaserJet $MODEL firmware $fw to CUPS USB device ..." + device_found=1 + if DEVICE_URI="$uri" $USB_BACKEND 1 1 1 1 '' $fw 2> /dev/null; then + log "$uri... download successful." + else + log "$uri... download failed." + fi + done + ) & + return 0 +} + +# +# Add a sleep +# +sleep 3 + +# +# OK, now download firmware to any printers that need it +# +if [ "$DEV" != "" ]; then + # + # force downloading to a specific device + # + load_usblp "$DEV" +elif [ -x $PRINTERID -o -x $USB_BACKEND ]; then + if [ -x $PRINTERID ]; then + # + # Sniff around for printers that need a firmware download + # + usblps=`find /dev/usb -type c -name 'lp*'`" "`find /dev -type c -name 'usblp*'` + for dev in $usblps; do + status=`$PRINTERID $dev 2>/dev/null | grep -y "hp LaserJet $MODEL"` + if [ "$status" != "" ]; then + # This is a LaserJet 100x + chmod 0666 $dev + status=`$PRINTERID $dev | grep 'FWVER'` + if [ "$status" = "" ]; then + # Firmware is not yet loaded + load_usblp "$dev" + else + log "HP LaserJet $MODEL firmware already loaded into $dev" + fi + fi + done + if [ "$usblps" != " " ]; then + # All done! + exit + fi + fi + + if [ -x $USB_BACKEND ]; then + # + # If we have CUPS installed, use the CUPS "usb" backend, as then we do + # not need to care whether the system uses the usblp kernel module or + # libusb + # + load_cups + fi +else + log "HP LaserJet $MODEL firmware was not downloaded..." + log "...couldn't find $PRINTERID, DEV is not set, and CUPS not installed." +fi diff --git a/hplj1020.desktop b/hplj1020.desktop new file mode 100644 index 0000000..121ab2b --- /dev/null +++ b/hplj1020.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Reactivate HP LaserJet 1018/1020 after reloading paper +Comment=Click the button in this program when your printer ran out of paper and you have refilled the paper +# zExec=usb_printerid /dev/usb/lp0 +Exec=wish /usr/share/foo2zjs/hplj10xx_gui.tcl +Terminal=false +Type=Application +Icon=/usr/share/pixmaps/hplj1020_icon.png +StartupNotify=true +Categories=System; +X-Desktop-File-Install-Version=0.10 diff --git a/hplj1020_icon.gif b/hplj1020_icon.gif new file mode 100644 index 0000000..b39d412 Binary files /dev/null and b/hplj1020_icon.gif differ diff --git a/hplj1020_icon.png b/hplj1020_icon.png new file mode 100644 index 0000000..fae4db2 Binary files /dev/null and b/hplj1020_icon.png differ diff --git a/hplj10xx.conf b/hplj10xx.conf new file mode 100644 index 0000000..a2083bb --- /dev/null +++ b/hplj10xx.conf @@ -0,0 +1,75 @@ +# FREEBSD 8.+ - hplj10xx.conf +# +# $ man devd.conf +# +# Variables that can be used with the match statement +# A partial list of variables and their possible values that can be used +# together with the match statement +# +# Variable Description +# ...snip... +# device-name Name of attached/detached device. +# + +# Firmware download HP LaserJet P1005 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x3d17"; + action "cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet P1006 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x3e17"; + action "cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet P1007 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x4817"; + action "cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet P1008 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x4917"; + action "cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet P1505 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x3f17"; + action "cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet 1000 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x0517"; + action "cat /usr/share/foo2zjs/firmware/sihp1000.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet 1005 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x1317"; + action "cat /usr/share/foo2zjs/firmware/sihp1005.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet 1018 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x4117"; + action "cat /usr/share/foo2zjs/firmware/sihp1018.dl > /dev/$device-name"; +}; + +# Firmware download HP LaserJet 1020 printer +attach 100 { + match "vendor" "0x03f0"; + match "product" "0x2b17"; + action "cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/$device-name"; +}; diff --git a/hplj10xx.rules b/hplj10xx.rules new file mode 100644 index 0000000..ee0295d --- /dev/null +++ b/hplj10xx.rules @@ -0,0 +1,39 @@ +# +# hplj10xx.rules.old: udev equal or after 1.30 +# +#Own udev rule for HP Laserjet 1000 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="hp LaserJet 1000", NAME="usb/%k", \ + SYMLINK+="hplj1000-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1000" +#Own udev rule for HP Laserjet 1005 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="hp LaserJet 1005 series", NAME="usb/%k", \ + SYMLINK+="hplj1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1005" +#Own udev rule for HP Laserjet 1018 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet 1018", NAME="usb/%k", \ + SYMLINK+="hplj1018-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1018" +#Own udev rule for HP Laserjet 1020 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet 1020", NAME="usb/%k", \ + SYMLINK+="hplj1020-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1020" +#Own udev rule for HP Laserjet P1005 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1005", NAME="usb/%k", \ + SYMLINK+="hpljP1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1005" +#Own udev rule for HP Laserjet P1006 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1006", NAME="usb/%k", \ + SYMLINK+="hpljP1006-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1006" +#Own udev rule for HP Laserjet P1007 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1007", NAME="usb/%k", \ + SYMLINK+="hpljP1007-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1007" +#Own udev rule for HP Laserjet P1008 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1008", NAME="usb/%k", \ + SYMLINK+="hpljP1008-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1008" +#Own udev rule for HP Laserjet P1505 +KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1505", NAME="usb/%k", \ + SYMLINK+="hpljP1505-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1505" diff --git a/hplj10xx.rules.old b/hplj10xx.rules.old new file mode 100644 index 0000000..761adcf --- /dev/null +++ b/hplj10xx.rules.old @@ -0,0 +1,39 @@ +# +# hplj10xx.rules.old: udev before 1.30 +# +#Own udev rule for HP Laserjet 1000 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="hp LaserJet 1000", NAME="usb/%k", \ + SYMLINK+="hplj1000-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1000" +#Own udev rule for HP Laserjet 1005 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="hp LaserJet 1005 series", NAME="usb/%k", \ + SYMLINK+="hplj1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1005" +#Own udev rule for HP Laserjet 1018 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="HP LaserJet 1018", NAME="usb/%k", \ + SYMLINK+="hplj1018-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1018" +#Own udev rule for HP Laserjet 1020 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="HP LaserJet 1020", NAME="usb/%k", \ + SYMLINK+="hplj1020-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1020" +#Own udev rule for HP Laserjet P1005 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="HP LaserJet P1005", NAME="usb/%k", \ + SYMLINK+="hpljP1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1005" +#Own udev rule for HP Laserjet P1006 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="HP LaserJet P1006", NAME="usb/%k", \ + SYMLINK+="hpljP1006-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1006" +#Own udev rule for HP Laserjet P1007 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="HP LaserJet P1007", NAME="usb/%k", \ + SYMLINK+="hpljP1007-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1007" +#Own udev rule for HP Laserjet P1008 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="HP LaserJet P1008", NAME="usb/%k", \ + SYMLINK+="hpljP1008-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1008" +#Own udev rule for HP Laserjet P1505 +KERNEL=="lp*", BUS=="usb", SYSFS{idVendor}=="03f0", \ + SYSFS{product}=="HP LaserJet P1505", NAME="usb/%k", \ + SYMLINK+="hpljP1505-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1505" diff --git a/hplj10xx_gui.tcl b/hplj10xx_gui.tcl new file mode 100755 index 0000000..265066c --- /dev/null +++ b/hplj10xx_gui.tcl @@ -0,0 +1,209 @@ +#!/usr/bin/wish + +global share +set share "/usr/share" + +proc replaced {product dev} { + global share + + set xqx [file join $share foo2xqx firmware ] + + #puts "$product $dev" + switch $product { + "HP LaserJet 1018" { exec usb_printerid $dev } + "HP LaserJet 1020" { exec usb_printerid $dev } + "HP LaserJet P1005" { exec cp [file join $xqx sihpP1005.dl] $dev } + "HP LaserJet P1007" { exec cp [file join $xqx sihpP1005.dl] $dev } + "HP LaserJet P1006" { exec cp [file join $xqx sihpP1006.dl] $dev } + "HP LaserJet P1008" { exec cp [file join $xqx sihpP1006.dl] $dev } + "none" { exec usb_printerid $dev } + } +} + +proc devput {dev str reply re} { + upvar $reply r + set fp [open $dev "w+"] + fconfigure $fp -buffering line -eofchar \x0c + puts $fp "\033%-12345X@PJL\n@PJL $str\n\033%-12345Z" + while {1} { + gets $fp r + if [regexp ".* $str.*" $r] { + break + } + } + while {1} { + gets $fp r + # puts $r + if [regexp "\"\?\"" $r] { + break + } + if [regexp "$re" $r] { + break + } + } + close $fp +} + +proc devreset {dev} { + set fp [open $dev "w+"] + fconfigure $fp -buffering line -eofchar \x0c + puts $fp "\033%-12345X@PJL\n@PJL ECHO\n\033%-12345Z" + close $fp +} + +proc code2str {code} { + switch -regexp $code { + 10001 { return "Idle" } + 10002 { return "Offline" } + 10003 { return "Warming up" } + 10004 { return "Busy (self-test)" } + 10005 { return "Busy (reset)" } + 10006 { return "Low toner" } + 10023 { return "Printing" } + 30119 { return "Media jam" } + 41[0-9][0-9][0-9] { return "Out of paper" } + 40021 { return "Door open" } + 40022 { return "Media jam" } + 40038 { return "Low toner" } + 40600 { return "No toner" } + } + return "Unknown" +} + +proc do_hdr {f n} { + frame $f.sf$n + label $f.sf$n.label1 -text "Device Status" \ + -font "*adobe-helvetica-bold-r-normal--*-140-*" + # -relief solid + pack $f.sf$n.label1 -side top -fill y -expand 1 + grid $f.sf$n -row 0 -column 0 + + label $f.config$n -text "Replaced\nThe Paper?" \ + -font "*adobe-helvetica-bold-r-normal--*-140-*" + # -relief solid + grid $f.config$n -row 0 -column 1 +} + +proc do_one {f n file product serial replace} { + frame $f.sf$n + + if { $product == "" } { + set prodsn $file + set product "none" + } else { + set prodsn [concat $product "SN: " $serial] + } + label $f.sf$n.label1 -text "$prodsn" + pack $f.sf$n.label1 -side top -fill y -expand 1 + + devput $file "INFO STATUS" code . + set str [code2str $code] + label $f.sf$n.label2 -text "Status: $code ($str)" + pack $f.sf$n.label2 -side top -fill y -expand 1 + + devput $file "INFO PAGECOUNT" pagecount . + label $f.sf$n.label3 -text "Page Count: $pagecount" + pack $f.sf$n.label3 -side top -fill y -expand 1 + + set re "xxx" + switch -regexp $product { + "HP LaserJet P1.*" { set re "PercentRemaining" } + "HP LaserJet Pro.*" { set re "PercentLifeRemaining" } + } + + devput $file "INFO SUPPLIES" perlife "$re" + if { $perlife == "\"?\"" } { + label $f.sf$n.label4 -text "Toner: PercentLifeRemaining = ???" + } else { + label $f.sf$n.label4 -text "Toner: $perlife%" + } + pack $f.sf$n.label4 -side top -fill y -expand 1 + + grid $f.sf$n -row $n -column 0 -pady 5 + + if { $replace == 1 } { set state "normal" } else { set state "disabled" } + button $f.config$n -text "test" -image icon -state $state \ + -command "replaced {$product} $file" + grid $f.config$n -row $n -column 1 + $f.balloon bind $f.config$n -balloonmsg "Replaced Paper" + + devreset $file +} + +proc main {w} { + global share + + image create photo icon -file [file join $share foo2zjs hplj1020_icon.gif] + + frame $w.frame + tixBalloon $w.frame.balloon + + set n 0 + set old 1 + set pwd [pwd] + + foreach file [lsort [glob -nocomplain /sys/class/usb/lp*/device]] { + set old 0 + regsub /.*usb/(lp\[^/]*)/.* $file {\1} lp + cd $file + cd .. + # puts [pwd] + if { [file exists "product"] == 0 } { + continue + } + set fp [open "product" "r"] + gets $fp product + close $fp + set fp [open "serial" "r"] + gets $fp serial + close $fp + cd $pwd + + #puts $product + switch -regexp $product { + "HP LaserJet 1018" { set replace 1 } + "HP LaserJet 1020" { set replace 1 } + "HP LaserJet P1005" { set replace 1 } + "HP LaserJet P1006" { set replace 1 } + "HP LaserJet P1007" { set replace 1 } + "HP LaserJet P1008" { set replace 1 } + "HP LaserJet Professional P1102" { set replace 0 } + "HP LaserJet Professional P1102w" { set replace 0 } + "CLP-310 Series" { set product [concat "Samsung" $product] + set replace 0 } + default { continue } + } + set file /dev/usb/$lp + + if {$n == 0} { + do_hdr $w.frame 0 + incr n + } + + do_one $w.frame $n $file $product $serial $replace + incr n + } + if {$old == 1} { + foreach file [lsort [glob -nocomplain /dev/usb/lp?]] { + if {$n == 0} { + do_hdr $w.frame 0 + incr n + } + + do_one $w.frame $n $file "" "" 1 + incr n + } + } + if {$n == 0} { + label $w.frame.label -text "No HP LaserJet 1018/1020/P100x" + pack $w.frame.label + } + + pack $w.frame -expand 1 +} + +wm title . "HP LaserJet 1018/1020/P100x GUI" + +package require Tix + +main "" diff --git a/icc2ps/AUTHORS b/icc2ps/AUTHORS new file mode 100644 index 0000000..c2fa8a7 --- /dev/null +++ b/icc2ps/AUTHORS @@ -0,0 +1,4 @@ +Main Author: +------------ +Marti Maria + diff --git a/icc2ps/COPYING b/icc2ps/COPYING new file mode 100644 index 0000000..184e60a --- /dev/null +++ b/icc2ps/COPYING @@ -0,0 +1,8 @@ +Little CMS +Copyright (c) 1998-2007 Marti Maria Saguer + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/icc2ps/Makefile b/icc2ps/Makefile new file mode 100644 index 0000000..f3abb99 --- /dev/null +++ b/icc2ps/Makefile @@ -0,0 +1,63 @@ +UNAME := $(shell uname) + +PREFIX= /usr +PREFIX= $(DESTDIR)/usr +BIN= $(PREFIX)/bin +MANDIR=$(PREFIX)/share/man + +SRC= icc2ps.c xgetopt.c +LIB= cmscam97.c cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ + cmslut.c cmsmatsh.c cmsmtrx.c cmsnamed.c cmspack.c cmspcs.c cmsps2.c \ + cmssamp.c cmswtpnt.c cmsxform.c cmsio0.c cmsvirt.c +CFLAGS= -O3 +INSTALL=install +ifeq ($(UNAME),SunOS) + INSTALL=/usr/ucb/install + CC=gcc +endif + +.SUFFIXES: .1 .1in + +all: foo2zjs-icc2ps man + +foo2zjs-icc2ps: $(SRC) $(LIB) + $(CC) $(CFLAGS) $(SRC) $(LIB) -lm -o $@ + +install: all + $(INSTALL) -c foo2zjs-icc2ps $(BIN) + +man: foo2zjs-icc2ps.1 + +.1in.1: + -rm -f $*.1 + MODver=$(VERSION); \ + ../includer-man -v DEF1=$(OLDGROFF) $*.1in | sed > $*.1 \ + -e "s@\$${URLOAK}@$(URLOAK)@" \ + -e "s@\$${URLZJS}@$(URLZJS)@" \ + -e "s@\$${URLHP}@$(URLHP)@" \ + -e "s@\$${URLXQX}@$(URLXQX)@" \ + -e "s@\$${URLLAVA}@$(URLLAVA)@" \ + -e "s@\$${URLQPDL}@$(URLQPDL)@" \ + -e "s@\$${URLSLX}@$(URLSLX)@" \ + -e "s@\$${URLHC}@$(URLHC)@" \ + -e "s/\$${MODver}/$$MODver/" + chmod a-w $*.1 + +install-man: man + $(INSTALL) -d -m 755 $(MANDIR) + $(INSTALL) -d -m 755 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 foo2zjs-icc2ps.1 $(MANDIR)/man1/ + +clean: + rm -f *.o foo2zjs-icc2ps *.1 + +foo2zjs-icc2ps: icc34.h lcms.h + +regress: all + @./foo2zjs-icc2ps a b 2>&1 | grep "little cms P" + @for i in ../icm/*.icm; do \ + b=`basename $$i`; \ + ./foo2zjs-icc2ps -o $$i -t0 | grep -v Created >$$b.ps; \ + md5sum $$b.ps; \ + done + @rm -f *icm.ps diff --git a/icc2ps/README b/icc2ps/README new file mode 100644 index 0000000..60ceeda --- /dev/null +++ b/icc2ps/README @@ -0,0 +1,94 @@ + + Read.me for release 1.17 + ======================== + + Little cms + Copyright (C) 1998-2007 Marti Maria + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, subject + to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + The lcms library is now distributed under + + MIT PUBLIC LICENSE + + See file COPYING. for details + + + This is the 15th. public release the engine. It has been tested + across several versions before, but it is possible some + bugs still arises. If so, sorry for the inconvenience, and + please feel free to submit any suggestion/solution (if you can + found it) at: + + info@littlecms.com + + + Note that the aesthetics of resulting colors are due only to + profiles, and not as consequence of the lcms package. + + The main site for the package is located at + + http://www.littlecms.com + or + http://www.lcms.coloraid.de + + + Littlecms has also a mailing list on: + + http://lists.sourceforge.net/lists/listinfo/lcms-user + + + Looking forward the lcms project would grow in future, I will + welcome any contribution/optimization/enhancement. + + Enjoy! + + + About profiles + ============== + + The demo of this package includes some profiles for colorspace + conversions. I figure all of them are in public domain, but + since some contains copyright notice, I will enumerate here + the sources: + + Sun Microsystems Java SDK (widely available) + Kodak public FTP site: ftp.kodak.com + ICM Stress demo from microsoft. www.microsoft.com + sRGB from sRGB site www.srgb.com + + If you found any of these not to be in public domain, + please notify me. I will remove the offending profile as soon as + posible. + + + + Additional files + ================ + + ICC34.h is the header file the International Color Consortium + has posted for version spec 3.4, with some minor modifications + for improving portability. + + You can reach it at + + http://www.color.org + + diff --git a/icc2ps/README.foo2zjs b/icc2ps/README.foo2zjs new file mode 100644 index 0000000..fb898f2 --- /dev/null +++ b/icc2ps/README.foo2zjs @@ -0,0 +1,13 @@ +This is a small piece of "Little CMS" (lcms), v1.15, repackaged for use with +foo2zjs, but otherwise unmodified. + +If you would like the full lcms package, get it from here: + http://www.littlecms.com + +-Rick + +Jan 22, 2008 +------------ +Bug: + cmsio1.c + diff --git a/icc2ps/cmscam02.c b/icc2ps/cmscam02.c new file mode 100644 index 0000000..bade0e0 --- /dev/null +++ b/icc2ps/cmscam02.c @@ -0,0 +1,490 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +// CIECAM 02 appearance model. Many thanks to Jordi Vilar for the debugging. + +#include "lcms.h" + + +LCMSAPI LCMSHANDLE LCMSEXPORT cmsCIECAM02Init(LPcmsViewingConditions pVC); +LCMSAPI void LCMSEXPORT cmsCIECAM02Done(LCMSHANDLE hModel); +LCMSAPI void LCMSEXPORT cmsCIECAM02Forward(LCMSHANDLE hModel, LPcmsCIEXYZ pIn, LPcmsJCh pOut); +LCMSAPI void LCMSEXPORT cmsCIECAM02Reverse(LCMSHANDLE hModel, LPcmsJCh pIn, LPcmsCIEXYZ pOut); + + +// ---------- Implementation -------------------------------------------- + +typedef struct { + + double XYZ[3]; + double RGB[3]; + double RGBc[3]; + double RGBp[3]; + double RGBpa[3]; + double a, b, h, e, H, A, J, Q, s, t, C, M; + double abC[2]; + double abs[2]; + double abM[2]; + +} CAM02COLOR, *LPCAM02COLOR; + +typedef struct { + + CAM02COLOR adoptedWhite; + double LA, Yb; + double F, c, Nc; + int surround; + double n, Nbb, Ncb, z, FL, D; + +} cmsCIECAM02, *LPcmsCIECAM02; + + +static +double compute_n(LPcmsCIECAM02 pMod) +{ + return(pMod -> Yb / pMod -> adoptedWhite.XYZ[1]); +} + +static +double compute_z(LPcmsCIECAM02 pMod) +{ + return(1.48 + pow(pMod -> n, 0.5)); +} + +static +double computeNbb(LPcmsCIECAM02 pMod) +{ + return(0.725 * pow((1.0 / pMod -> n), 0.2)); +} + +static +double computeFL(LPcmsCIECAM02 pMod) +{ + double k, FL; + + k = 1.0 / ((5.0 * pMod->LA) + 1.0); + FL = 0.2 * pow(k, 4.0) * (5.0 * pMod->LA) + 0.1 * + (pow((1.0 - pow(k, 4.0)), 2.0)) * + (pow((5.0 * pMod->LA), (1.0 / 3.0))); + + return FL; +} + +static +double computeD(LPcmsCIECAM02 pMod) +{ + double D; + + D = pMod->F - (1.0/3.6)*(exp(((-pMod ->LA-42) / 92.0))); + + return D; +} + + +static +CAM02COLOR XYZtoCAT02(CAM02COLOR clr) +{ + clr.RGB[0] = (clr.XYZ[0] * 0.7328) + (clr.XYZ[1] * 0.4296) + (clr.XYZ[2] * -0.1624); + clr.RGB[1] = (clr.XYZ[0] * -0.7036) + (clr.XYZ[1] * 1.6975) + (clr.XYZ[2] * 0.0061); + clr.RGB[2] = (clr.XYZ[0] * 0.0030) + (clr.XYZ[1] * 0.0136) + (clr.XYZ[2] * 0.9834); + + return clr; +} + +static +CAM02COLOR ChromaticAdaptation(CAM02COLOR clr, LPcmsCIECAM02 pMod) +{ + int i; + for (i = 0; i < 3; i++) { + clr.RGBc[i] = ((pMod -> adoptedWhite.XYZ[1] * + (pMod->D / pMod -> adoptedWhite.RGB[i])) + + (1.0 - pMod->D)) * clr.RGB[i]; + } + + return clr; +} + + +static +CAM02COLOR CAT02toHPE (CAM02COLOR clr) +{ + + double M[9]; + + + M[0] =(( 0.38971 * 1.096124) + (0.68898 * 0.454369) + (-0.07868 * -0.009628)); + M[1] =(( 0.38971 * -0.278869) + (0.68898 * 0.473533) + (-0.07868 * -0.005698)); + M[2] =(( 0.38971 * 0.182745) + (0.68898 * 0.072098) + (-0.07868 * 1.015326)); + M[3] =((-0.22981 * 1.096124) + (1.18340 * 0.454369) + ( 0.04641 * -0.009628)); + M[4] =((-0.22981 * -0.278869) + (1.18340 * 0.473533) + ( 0.04641 * -0.005698)); + M[5] =((-0.22981 * 0.182745) + (1.18340 * 0.072098) + ( 0.04641 * 1.015326)); + M[6] =(-0.009628); + M[7] =(-0.005698); + M[8] =( 1.015326); + + clr.RGBp[0] = (clr.RGBc[0] * M[0]) + (clr.RGBc[1] * M[1]) + (clr.RGBc[2] * M[2]); + clr.RGBp[1] = (clr.RGBc[0] * M[3]) + (clr.RGBc[1] * M[4]) + (clr.RGBc[2] * M[5]); + clr.RGBp[2] = (clr.RGBc[0] * M[6]) + (clr.RGBc[1] * M[7]) + (clr.RGBc[2] * M[8]); + + return clr; +} + +static +CAM02COLOR NonlinearCompression(CAM02COLOR clr, LPcmsCIECAM02 pMod) +{ + int i; + double temp; + + for (i = 0; i < 3; i++) { + if (clr.RGBp[i] < 0) { + + temp = pow((-1.0 * pMod->FL * clr.RGBp[i] / 100.0), 0.42); + clr.RGBpa[i] = (-1.0 * 400.0 * temp) / (temp + 27.13) + 0.1; + } + else { + temp = pow((pMod->FL * clr.RGBp[i] / 100.0), 0.42); + clr.RGBpa[i] = (400.0 * temp) / (temp + 27.13) + 0.1; + } + } + + clr.A = (((2.0 * clr.RGBpa[0]) + clr.RGBpa[1] + + (clr.RGBpa[2] / 20.0)) - 0.305) * pMod->Nbb; + + return clr; +} + +static +CAM02COLOR ComputeCorrelates(CAM02COLOR clr, LPcmsCIECAM02 pMod) +{ + double a, b, temp, e, t, r2d, d2r; + + a = clr.RGBpa[0] - (12.0 * clr.RGBpa[1] / 11.0) + (clr.RGBpa[2] / 11.0); + b = (clr.RGBpa[0] + clr.RGBpa[1] - (2.0 * clr.RGBpa[2])) / 9.0; + + r2d = (180.0 / 3.141592654); + if (a == 0) { + if (b == 0) clr.h = 0; + else if (b > 0) clr.h = 90; + else clr.h = 270; + } + else if (a > 0) { + temp = b / a; + if (b > 0) clr.h = (r2d * atan(temp)); + else if (b == 0) clr.h = 0; + else clr.h = (r2d * atan(temp)) + 360; + } + else { + temp = b / a; + clr.h = (r2d * atan(temp)) + 180; + } + + d2r = (3.141592654 / 180.0); + e = ((12500.0 / 13.0) * pMod->Nc * pMod->Ncb) * + (cos((clr.h * d2r + 2.0)) + 3.8); + + if (clr.h < 20.14) { + temp = ((clr.h + 122.47)/1.2) + ((20.14 - clr.h)/0.8); + clr.H = 300 + (100*((clr.h + 122.47)/1.2)) / temp; + } + else if (clr.h < 90.0) { + temp = ((clr.h - 20.14)/0.8) + ((90.00 - clr.h)/0.7); + clr.H = (100*((clr.h - 20.14)/0.8)) / temp; + } + else if (clr.h < 164.25) { + temp = ((clr.h - 90.00)/0.7) + ((164.25 - clr.h)/1.0); + clr.H = 100 + ((100*((clr.h - 90.00)/0.7)) / temp); + } + else if (clr.h < 237.53) { + temp = ((clr.h - 164.25)/1.0) + ((237.53 - clr.h)/1.2); + clr.H = 200 + ((100*((clr.h - 164.25)/1.0)) / temp); + } + else { + temp = ((clr.h - 237.53)/1.2) + ((360 - clr.h + 20.14)/0.8); + clr.H = 300 + ((100*((clr.h - 237.53)/1.2)) / temp); + } + + clr.J = 100.0 * pow((clr.A / pMod->adoptedWhite.A), + (pMod->c * pMod->z)); + + clr.Q = (4.0 / pMod->c) * pow((clr.J / 100.0), 0.5) * + (pMod->adoptedWhite.A + 4.0) * pow(pMod->FL, 0.25); + + t = (e * pow(((a * a) + (b * b)), 0.5)) / + (clr.RGBpa[0] + clr.RGBpa[1] + + ((21.0 / 20.0) * clr.RGBpa[2])); + + clr.C = pow(t, 0.9) * pow((clr.J / 100.0), 0.5) * + pow((1.64 - pow(0.29, pMod->n)), 0.73); + + clr.M = clr.C * pow(pMod->FL, 0.25); + clr.s = 100.0 * pow((clr.M / clr.Q), 0.5); + + return clr; +} + + +static +CAM02COLOR InverseCorrelates(CAM02COLOR clr, LPcmsCIECAM02 pMod) +{ + + double t, e, p1, p2, p3, p4, p5, hr, d2r; + d2r = 3.141592654 / 180.0; + + t = pow( (clr.C / (pow((clr.J / 100.0), 0.5) * + (pow((1.64 - pow(0.29, pMod->n)), 0.73)))), + (1.0 / 0.9) ); + e = ((12500.0 / 13.0) * pMod->Nc * pMod->Ncb) * + (cos((clr.h * d2r + 2.0)) + 3.8); + + clr.A = pMod->adoptedWhite.A * pow( + (clr.J / 100.0), + (1.0 / (pMod->c * pMod->z))); + + p1 = e / t; + p2 = (clr.A / pMod->Nbb) + 0.305; + p3 = 21.0 / 20.0; + + hr = clr.h * d2r; + + if (fabs(sin(hr)) >= fabs(cos(hr))) { + p4 = p1 / sin(hr); + clr.b = (p2 * (2.0 + p3) * (460.0 / 1403.0)) / + (p4 + (2.0 + p3) * (220.0 / 1403.0) * + (cos(hr) / sin(hr)) - (27.0 / 1403.0) + + p3 * (6300.0 / 1403.0)); + clr.a = clr.b * (cos(hr) / sin(hr)); + } + else { + p5 = p1 / cos(hr); + clr.a = (p2 * (2.0 + p3) * (460.0 / 1403.0)) / + (p5 + (2.0 + p3) * (220.0 / 1403.0) - + ((27.0 / 1403.0) - p3 * (6300.0 / 1403.0)) * + (sin(hr) / cos(hr))); + clr.b = clr.a * (sin(hr) / cos(hr)); + } + + clr.RGBpa[0] = ((460.0 / 1403.0) * p2) + + ((451.0 / 1403.0) * clr.a) + + ((288.0 / 1403.0) * clr.b); + clr.RGBpa[1] = ((460.0 / 1403.0) * p2) - + ((891.0 / 1403.0) * clr.a) - + ((261.0 / 1403.0) * clr.b); + clr.RGBpa[2] = ((460.0 / 1403.0) * p2) - + ((220.0 / 1403.0) * clr.a) - + ((6300.0 / 1403.0) * clr.b); + + return clr; +} + +static +CAM02COLOR InverseNonlinearity(CAM02COLOR clr, LPcmsCIECAM02 pMod) +{ + int i; + double c1; + + for (i = 0; i < 3; i++) { + if ((clr.RGBpa[i] - 0.1) < 0) c1 = -1; + else c1 = 1; + clr.RGBp[i] = c1 * (100.0 / pMod->FL) * + pow(((27.13 * fabs(clr.RGBpa[i] - 0.1)) / + (400.0 - fabs(clr.RGBpa[i] - 0.1))), + (1.0 / 0.42)); + } + + return clr; +} + +static +CAM02COLOR HPEtoCAT02(CAM02COLOR clr) +{ + double M[9]; + + M[0] = (( 0.7328 * 1.910197) + (0.4296 * 0.370950)); + M[1] = (( 0.7328 * -1.112124) + (0.4296 * 0.629054)); + M[2] = (( 0.7328 * 0.201908) + (0.4296 * 0.000008) - 0.1624); + M[3] = ((-0.7036 * 1.910197) + (1.6975 * 0.370950)); + M[4] = ((-0.7036 * -1.112124) + (1.6975 * 0.629054)); + M[5] = ((-0.7036 * 0.201908) + (1.6975 * 0.000008) + 0.0061); + M[6] = (( 0.0030 * 1.910197) + (0.0136 * 0.370950)); + M[7] = (( 0.0030 * -1.112124) + (0.0136 * 0.629054)); + M[8] = (( 0.0030 * 0.201908) + (0.0136 * 0.000008) + 0.9834);; + + clr.RGBc[0] = (clr.RGBp[0] * M[0]) + (clr.RGBp[1] * M[1]) + (clr.RGBp[2] * M[2]); + clr.RGBc[1] = (clr.RGBp[0] * M[3]) + (clr.RGBp[1] * M[4]) + (clr.RGBp[2] * M[5]); + clr.RGBc[2] = (clr.RGBp[0] * M[6]) + (clr.RGBp[1] * M[7]) + (clr.RGBp[2] * M[8]); + return (clr); +} + + +static +CAM02COLOR InverseChromaticAdaptation(CAM02COLOR clr, LPcmsCIECAM02 pMod) +{ + int i; + for (i = 0; i < 3; i++) { + clr.RGB[i] = clr.RGBc[i] / + ((pMod->adoptedWhite.XYZ[1] * pMod->D / pMod->adoptedWhite.RGB[i]) + 1.0 - pMod->D); + } + return(clr); +} + + +static +CAM02COLOR CAT02toXYZ(CAM02COLOR clr) +{ + clr.XYZ[0] = (clr.RGB[0] * 1.096124) + (clr.RGB[1] * -0.278869) + (clr.RGB[2] * 0.182745); + clr.XYZ[1] = (clr.RGB[0] * 0.454369) + (clr.RGB[1] * 0.473533) + (clr.RGB[2] * 0.072098); + clr.XYZ[2] = (clr.RGB[0] * -0.009628) + (clr.RGB[1] * -0.005698) + (clr.RGB[2] * 1.015326); + + return(clr); +} + + + + +LCMSHANDLE LCMSEXPORT cmsCIECAM02Init(LPcmsViewingConditions pVC) +{ + LPcmsCIECAM02 lpMod; + + + if((lpMod = (LPcmsCIECAM02) _cmsMalloc(sizeof(cmsCIECAM02))) == NULL) { + return (LCMSHANDLE) NULL; + } + + + ZeroMemory(lpMod, sizeof(cmsCIECAM02)); + + lpMod ->adoptedWhite.XYZ[0] = pVC ->whitePoint.X; + lpMod ->adoptedWhite.XYZ[1] = pVC ->whitePoint.Y; + lpMod ->adoptedWhite.XYZ[2] = pVC ->whitePoint.Z; + + lpMod -> LA = pVC ->La; + lpMod -> Yb = pVC ->Yb; + lpMod -> D = pVC ->D_value; + lpMod -> surround = pVC ->surround; + + switch (lpMod -> surround) { + + case AVG_SURROUND_4: + lpMod->F = 1.0; // Not included in CAM02 + lpMod->c = 0.69; + lpMod->Nc = 1.0; + break; + + case CUTSHEET_SURROUND: + lpMod->F = 0.8; + lpMod->c = 0.41; + lpMod->Nc = 0.8; + break; + + case DARK_SURROUND: + lpMod -> F = 0.8; + lpMod -> c = 0.525; + lpMod -> Nc = 0.8; + break; + + + case DIM_SURROUND: + lpMod -> F = 0.9; + lpMod -> c = 0.59; + lpMod -> Nc = 0.95; + break; + + default: + // Average surround + lpMod -> F = 1.0; + lpMod -> c = 0.69; + lpMod -> Nc = 1.0; + } + + lpMod -> n = compute_n(lpMod); + lpMod -> z = compute_z(lpMod); + lpMod -> Nbb = computeNbb(lpMod); + lpMod -> FL = computeFL(lpMod); + + if (lpMod -> D == D_CALCULATE || + lpMod -> D == D_CALCULATE_DISCOUNT) { + + lpMod -> D = computeD(lpMod); + } + + lpMod -> Ncb = lpMod -> Nbb; + + lpMod -> adoptedWhite = XYZtoCAT02(lpMod -> adoptedWhite); + lpMod -> adoptedWhite = ChromaticAdaptation(lpMod -> adoptedWhite, lpMod); + lpMod -> adoptedWhite = CAT02toHPE(lpMod -> adoptedWhite); + lpMod -> adoptedWhite = NonlinearCompression(lpMod -> adoptedWhite, lpMod); + + return (LCMSHANDLE) lpMod; + +} + +void LCMSEXPORT cmsCIECAM02Done(LCMSHANDLE hModel) +{ + LPcmsCIECAM02 lpMod = (LPcmsCIECAM02) (LPSTR) hModel; + if (lpMod) _cmsFree(lpMod); +} + + +void LCMSEXPORT cmsCIECAM02Forward(LCMSHANDLE hModel, LPcmsCIEXYZ pIn, LPcmsJCh pOut) +{ + CAM02COLOR clr; + LPcmsCIECAM02 lpMod = (LPcmsCIECAM02) (LPSTR) hModel; + + clr.XYZ[0] = pIn ->X; + clr.XYZ[1] = pIn ->Y; + clr.XYZ[2] = pIn ->Z; + + clr = XYZtoCAT02(clr); + clr = ChromaticAdaptation(clr, lpMod); + clr = CAT02toHPE(clr); + clr = NonlinearCompression(clr, lpMod); + clr = ComputeCorrelates(clr, lpMod); + + pOut ->J = clr.J; + pOut ->C = clr.C; + pOut ->h = clr.h; +} + +void LCMSEXPORT cmsCIECAM02Reverse(LCMSHANDLE hModel, LPcmsJCh pIn, LPcmsCIEXYZ pOut) +{ + CAM02COLOR clr; + LPcmsCIECAM02 lpMod = (LPcmsCIECAM02) (LPSTR) hModel; + + + clr.J = pIn -> J; + clr.C = pIn -> C; + clr.h = pIn -> h; + + clr = InverseCorrelates(clr, lpMod); + clr = InverseNonlinearity(clr, lpMod); + clr = HPEtoCAT02(clr); + clr = InverseChromaticAdaptation(clr, lpMod); + clr = CAT02toXYZ(clr); + + pOut ->X = clr.XYZ[0]; + pOut ->Y = clr.XYZ[1]; + pOut ->Z = clr.XYZ[2]; + +} + diff --git a/icc2ps/cmscam97.c b/icc2ps/cmscam97.c new file mode 100644 index 0000000..0e8a79b --- /dev/null +++ b/icc2ps/cmscam97.c @@ -0,0 +1,721 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + + +/* +typedef struct { + double J; + double C; + double h; + + } cmsJCh, FAR* LPcmsJCh; + + +#define AVG_SURROUND_4 0 +#define AVG_SURROUND 1 +#define DIM_SURROUND 2 +#define DARK_SURROUND 3 +#define CUTSHEET_SURROUND 4 + + +typedef struct { + + cmsCIEXYZ whitePoint; + double Yb; + double La; + int surround; + double D_value; + + } cmsViewingConditions, FAR* LPcmsViewingConditions; + + + +LCMSAPI LCMSHANDLE LCMSEXPORT cmsCIECAM97sInit(LPcmsViewingConditions pVC); +LCMSAPI void LCMSEXPORT cmsCIECAM97sDone(LCMSHANDLE hModel); +LCMSAPI void LCMSEXPORT cmsCIECAM97sForward(LCMSHANDLE hModel, LPcmsCIEXYZ pIn, LPcmsJCh pOut); +LCMSAPI void LCMSEXPORT cmsCIECAM97sReverse(LCMSHANDLE hModel, LPcmsJCh pIn, LPcmsCIEXYZ pOut); + +*/ + +// ---------- Implementation -------------------------------------------- + +// #define USE_CIECAM97s2 1 + +#ifdef USE_CIECAM97s2 + +# define NOISE_CONSTANT 3.05 +#else +# define NOISE_CONSTANT 2.05 +#endif + + +/* + The model input data are the adapting field luminance in cd/m2 + (normally taken to be 20% of the luminance of white in the adapting field), + LA , the relative tristimulus values of the stimulus, XYZ, the relative + tristimulus values of white in the same viewing conditions, Xw Yw Zw , + and the relative luminance of the background, Yb . Relative tristimulus + values should be expressed on a scale from Y = 0 for a perfect black + to Y = 100 for a perfect reflecting diffuser. Additionally, the + parameters c, for the impact of surround, Nc , a chromatic induction factor, + and F, a factor for degree of adaptation, must be selected according to the + guidelines in table + + All CIE tristimulus values are obtained using the CIE 1931 + Standard Colorimetric Observer (2°). + +*/ + +typedef struct { + + cmsCIEXYZ WP; + int surround; + int calculate_D; + + double Yb; // rel. luminance of background + + cmsCIEXYZ RefWhite; + + double La; // The adapting field luminance in cd/m2 + + double c; // Impact of surround + double Nc; // Chromatic induction factor + double Fll; // Lightness contrast factor (Removed on rev 2) + double F; // Degree of adaptation + + + double k; + double Fl; + + double Nbb; // The background and chromatic brightness induction factors. + double Ncb; + double z; // base exponential nonlinearity + double n; // background induction factor + double D; + + MAT3 MlamRigg; + MAT3 MlamRigg_1; + + MAT3 Mhunt; + MAT3 Mhunt_1; + + MAT3 Mhunt_x_MlamRigg_1; + MAT3 MlamRigg_x_Mhunt_1; + + + VEC3 RGB_subw; + VEC3 RGB_subw_prime; + + double p; + + VEC3 RGB_subwc; + + VEC3 RGB_subaw_prime; + double A_subw; + double Q_subw; + + } cmsCIECAM97s,FAR *LPcmsCIECAM97s; + + + +// Free model structure + +LCMSAPI void LCMSEXPORT cmsCIECAM97sDone(LCMSHANDLE hModel) +{ + LPcmsCIECAM97s lpMod = (LPcmsCIECAM97s) (LPSTR) hModel; + if (lpMod) _cmsFree(lpMod); +} + +// Partial discounting for adaptation degree computation + +static +double discount(double d, double chan) +{ + return (d * chan + 1 - d); +} + + +// This routine does model exponential nonlinearity on the short wavelenght +// sensitive channel. On CIECAM97s rev 2 this has been reverted to linear. + +static +void FwAdaptationDegree(LPcmsCIECAM97s lpMod, LPVEC3 RGBc, LPVEC3 RGB) +{ + + +#ifdef USE_CIECAM97s2 + RGBc->n[0] = RGB->n[0]* discount(lpMod->D, 100.0/lpMod->RGB_subw.n[0]); + RGBc->n[1] = RGB->n[1]* discount(lpMod->D, 100.0/lpMod->RGB_subw.n[1]); + RGBc->n[2] = RGB->n[2]* discount(lpMod->D, 100.0/lpMod->RGB_subw.n[2]); +#else + + RGBc->n[0] = RGB->n[0]* discount(lpMod->D, 1.0/lpMod->RGB_subw.n[0]); + RGBc->n[1] = RGB->n[1]* discount(lpMod->D, 1.0/lpMod->RGB_subw.n[1]); + + RGBc->n[2] = pow(fabs(RGB->n[2]), lpMod ->p) * discount(lpMod->D, (1.0/pow(lpMod->RGB_subw.n[2], lpMod->p))); + + // If B happens to be negative, Then Bc is also set to be negative + + if (RGB->n[2] < 0) + RGBc->n[2] = -RGBc->n[2]; +#endif +} + + +static +void RvAdaptationDegree(LPcmsCIECAM97s lpMod, LPVEC3 RGBc, LPVEC3 RGB) +{ + + +#ifdef USE_CIECAM97s2 + RGBc->n[0] = RGB->n[0]/discount(lpMod->D, 100.0/lpMod->RGB_subw.n[0]); + RGBc->n[1] = RGB->n[1]/discount(lpMod->D, 100.0/lpMod->RGB_subw.n[1]); + RGBc->n[2] = RGB->n[2]/discount(lpMod->D, 100.0/lpMod->RGB_subw.n[2]); +#else + + RGBc->n[0] = RGB->n[0]/discount(lpMod->D, 1.0/lpMod->RGB_subw.n[0]); + RGBc->n[1] = RGB->n[1]/discount(lpMod->D, 1.0/lpMod->RGB_subw.n[1]); + RGBc->n[2] = pow(fabs(RGB->n[2]), 1.0/lpMod->p)/pow(discount(lpMod->D, 1.0/pow(lpMod->RGB_subw.n[2], lpMod->p)), 1.0/lpMod->p); + if (RGB->n[2] < 0) + RGBc->n[2] = -RGBc->n[2]; +#endif +} + + + +static +void PostAdaptationConeResponses(LPcmsCIECAM97s lpMod, LPVEC3 RGBa_prime, LPVEC3 RGBprime) +{ + if (RGBprime->n[0]>=0.0) { + + RGBa_prime->n[0]=((40.0*pow(lpMod -> Fl * RGBprime->n[0]/100.0, 0.73))/(pow(lpMod -> Fl * RGBprime->n[0]/100.0, 0.73)+2))+1; + } + else + { + RGBa_prime->n[0]=((-40.0*pow((-lpMod -> Fl * RGBprime->n[0])/100.0, 0.73))/(pow((-lpMod -> Fl * RGBprime->n[0])/100.0, 0.73)+2))+1; + } + + if (RGBprime->n[1]>=0.0) + { + RGBa_prime->n[1]=((40.0*pow(lpMod -> Fl * RGBprime->n[1]/100.0, 0.73))/(pow(lpMod -> Fl * RGBprime->n[1]/100.0, 0.73)+2))+1; + } + else + { + RGBa_prime->n[1]=((-40.0*pow((-lpMod -> Fl * RGBprime->n[1])/100.0, 0.73))/(pow((-lpMod -> Fl * RGBprime->n[1])/100.0, 0.73)+2))+1; + } + + if (RGBprime->n[2]>=0.0) + { + RGBa_prime->n[2]=((40.0*pow(lpMod -> Fl * RGBprime->n[2]/100.0, 0.73))/(pow(lpMod -> Fl * RGBprime->n[2]/100.0, 0.73)+2))+1; + } + else + { + RGBa_prime->n[2]=((-40.0*pow((-lpMod -> Fl * RGBprime->n[2])/100.0, 0.73))/(pow((-lpMod -> Fl * RGBprime->n[2])/100.0, 0.73)+2))+1; + } +} + + +// Compute hue quadrature, eccentricity factor, e + +static +void ComputeHueQuadrature(double h, double* H, double* e) +{ + + +#define IRED 0 +#define IYELLOW 1 +#define IGREEN 2 +#define IBLUE 3 + + double e_tab[] = {0.8, 0.7, 1.0, 1.2}; + double H_tab[] = { 0, 100, 200, 300}; + int p1, p2; + double e1, e2, h1, h2; + + + if (h >= 20.14 && h < 90.0) { // Red + + p1 = IRED; + p2 = IYELLOW; + } + else + if (h >= 90.0 && h < 164.25) { // Yellow + + p1 = IYELLOW; + p2 = IGREEN; + } + else + if (h >= 164.25 && h < 237.53) { // Green + + p1 = IGREEN; + p2 = IBLUE; } + else { // Blue + + p1 = IBLUE; + p2 = IRED; + } + + e1 = e_tab[p1]; e2 = e_tab[p2]; + h1 = H_tab[p1]; h2 = H_tab[p2]; + + + + *e = e1 + ((e2-e1)*(h-h1)/(h2 - h1)); + *H = h1 + (100. * (h - h1) / e1) / ((h - h1)/e1 + (h2 - h) / e2); + +#undef IRED +#undef IYELLOW +#undef IGREEN +#undef IBLUE + +} + + + + + + +LCMSAPI LCMSHANDLE LCMSEXPORT cmsCIECAM97sInit(LPcmsViewingConditions pVC) +{ + LPcmsCIECAM97s lpMod; + VEC3 tmp; + + if((lpMod = (LPcmsCIECAM97s) _cmsMalloc(sizeof(cmsCIECAM97s))) == NULL) { + return (LCMSHANDLE) NULL; + } + + + lpMod->WP.X = pVC->whitePoint.X; + lpMod->WP.Y = pVC->whitePoint.Y; + lpMod->WP.Z = pVC->whitePoint.Z; + + lpMod->Yb = pVC->Yb; + lpMod->La = pVC->La; + + lpMod->surround = pVC->surround; + + lpMod->RefWhite.X = 100.0; + lpMod->RefWhite.Y = 100.0; + lpMod->RefWhite.Z = 100.0; + +#ifdef USE_CIECAM97s2 + + VEC3init(&lpMod->MlamRigg.v[0], 0.8562, 0.3372, -0.1934); + VEC3init(&lpMod->MlamRigg.v[1], -0.8360, 1.8327, 0.0033); + VEC3init(&lpMod->MlamRigg.v[2], 0.0357,-0.0469, 1.0112); + + VEC3init(&lpMod->MlamRigg_1.v[0], 0.9874, -0.1768, 0.1894); + VEC3init(&lpMod->MlamRigg_1.v[1], 0.4504, 0.4649, 0.0846); + VEC3init(&lpMod->MlamRigg_1.v[2],-0.0139, 0.0278, 0.9861); + +#else + // Bradford transform: Lam-Rigg cone responses + VEC3init(&lpMod->MlamRigg.v[0], 0.8951, 0.2664, -0.1614); + VEC3init(&lpMod->MlamRigg.v[1], -0.7502, 1.7135, 0.0367); + VEC3init(&lpMod->MlamRigg.v[2], 0.0389, -0.0685, 1.0296); + + + // Inverse of Lam-Rigg + VEC3init(&lpMod->MlamRigg_1.v[0], 0.98699, -0.14705, 0.15996); + VEC3init(&lpMod->MlamRigg_1.v[1], 0.43231, 0.51836, 0.04929); + VEC3init(&lpMod->MlamRigg_1.v[2], -0.00853, 0.04004, 0.96849); + +#endif + + // Hunt-Pointer-Estevez cone responses + VEC3init(&lpMod->Mhunt.v[0], 0.38971, 0.68898, -0.07868); + VEC3init(&lpMod->Mhunt.v[1], -0.22981, 1.18340, 0.04641); + VEC3init(&lpMod->Mhunt.v[2], 0.0, 0.0, 1.0); + + // Inverse of Hunt-Pointer-Estevez + VEC3init(&lpMod->Mhunt_1.v[0], 1.91019, -1.11214, 0.20195); + VEC3init(&lpMod->Mhunt_1.v[1], 0.37095, 0.62905, 0.0); + VEC3init(&lpMod->Mhunt_1.v[2], 0.0, 0.0, 1.0); + + + if (pVC->D_value == -1.0) + lpMod->calculate_D = 1; + else + if (pVC->D_value == -2.0) + lpMod->calculate_D = 2; + else { + lpMod->calculate_D = 0; + lpMod->D = pVC->D_value; + } + + // Table I (revised) + + switch (lpMod->surround) { + + case AVG_SURROUND_4: + lpMod->F = 1.0; + lpMod->c = 0.69; + lpMod->Fll = 0.0; // Not included on Rev 2 + lpMod->Nc = 1.0; + break; + case AVG_SURROUND: + lpMod->F = 1.0; + lpMod->c = 0.69; + lpMod->Fll = 1.0; + lpMod->Nc = 1.0; + break; + case DIM_SURROUND: + lpMod->F = 0.99; + lpMod->c = 0.59; + lpMod->Fll = 1.0; + lpMod->Nc = 0.95; + break; + case DARK_SURROUND: + lpMod->F = 0.9; + lpMod->c = 0.525; + lpMod->Fll = 1.0; + lpMod->Nc = 0.8; + break; + case CUTSHEET_SURROUND: + lpMod->F = 0.9; + lpMod->c = 0.41; + lpMod->Fll = 1.0; + lpMod->Nc = 0.8; + break; + default: + lpMod->F = 1.0; + lpMod->c = 0.69; + lpMod->Fll = 1.0; + lpMod->Nc = 1.0; + break; + } + + lpMod->k = 1 / (5 * lpMod->La + 1); + lpMod->Fl = lpMod->La * pow(lpMod->k, 4) + 0.1*pow(1 - pow(lpMod->k, 4), 2.0) * pow(5*lpMod->La, 1.0/3.0); + + if (lpMod->calculate_D > 0) { + + lpMod->D = lpMod->F * (1 - 1 / (1 + 2*pow(lpMod->La, 0.25) + pow(lpMod->La, 2)/300.0)); + if (lpMod->calculate_D > 1) + lpMod->D = (lpMod->D + 1.0) / 2; + } + + + // RGB_subw = [MlamRigg][WP/YWp] +#ifdef USE_CIECAM97s2 + MAT3eval(&lpMod -> RGB_subw, &lpMod -> MlamRigg, &lpMod -> WP); +#else + VEC3divK(&tmp, (LPVEC3) &lpMod -> WP, lpMod->WP.Y); + MAT3eval(&lpMod -> RGB_subw, &lpMod -> MlamRigg, &tmp); +#endif + + + + MAT3per(&lpMod -> Mhunt_x_MlamRigg_1, &lpMod -> Mhunt, &lpMod->MlamRigg_1 ); + MAT3per(&lpMod -> MlamRigg_x_Mhunt_1, &lpMod -> MlamRigg, &lpMod -> Mhunt_1 ); + + // p is used on forward model + lpMod->p = pow(lpMod->RGB_subw.n[2], 0.0834); + + FwAdaptationDegree(lpMod, &lpMod->RGB_subwc, &lpMod->RGB_subw); + +#if USE_CIECAM97s2 + MAT3eval(&lpMod->RGB_subw_prime, &lpMod->Mhunt_x_MlamRigg_1, &lpMod -> RGB_subwc); +#else + VEC3perK(&tmp, &lpMod -> RGB_subwc, lpMod->WP.Y); + MAT3eval(&lpMod->RGB_subw_prime, &lpMod->Mhunt_x_MlamRigg_1, &tmp); +#endif + + lpMod->n = lpMod-> Yb / lpMod-> WP.Y; + + lpMod->z = 1 + lpMod->Fll * sqrt(lpMod->n); + lpMod->Nbb = lpMod->Ncb = 0.725 / pow(lpMod->n, 0.2); + + PostAdaptationConeResponses(lpMod, &lpMod->RGB_subaw_prime, &lpMod->RGB_subw_prime); + + lpMod->A_subw=lpMod->Nbb*(2.0*lpMod->RGB_subaw_prime.n[0]+lpMod->RGB_subaw_prime.n[1]+lpMod->RGB_subaw_prime.n[2]/20.0-NOISE_CONSTANT); + + return (LCMSHANDLE) lpMod; +} + + + + +// +// The forward model: XYZ -> JCh +// + +LCMSAPI void LCMSEXPORT cmsCIECAM97sForward(LCMSHANDLE hModel, LPcmsCIEXYZ inPtr, LPcmsJCh outPtr) +{ + + LPcmsCIECAM97s lpMod = (LPcmsCIECAM97s) (LPSTR) hModel; + double a, b, h, s, H1val, es, A; + VEC3 In, RGB, RGBc, RGBprime, RGBa_prime; + + if (inPtr -> Y <= 0.0) { + + outPtr -> J = outPtr -> C = outPtr -> h = 0.0; + return; + } + + // An initial chromatic adaptation transform is used to go from the source + // viewing conditions to corresponding colours under the equal-energy-illuminant + // reference viewing conditions. This is handled differently on rev 2 + + VEC3init(&In, inPtr -> X, inPtr -> Y, inPtr -> Z); // 2.1 + +#ifdef USE_CIECAM97s2 + // Since the chromatic adaptation transform has been linearized, it + // is no longer required to divide the stimulus tristimulus values + // by their own Y tristimulus value prior to the chromatic adaptation. +#else + VEC3divK(&In, &In, inPtr -> Y); +#endif + + MAT3eval(&RGB, &lpMod -> MlamRigg, &In); // 2.2 + + FwAdaptationDegree(lpMod, &RGBc, &RGB); + + // The post-adaptation signals for both the sample and the white are then + // transformed from the sharpened cone responses to the Hunt-Pointer-Estevez + // cone responses. +#ifdef USE_CIECAM97s2 +#else + VEC3perK(&RGBc, &RGBc, inPtr->Y); +#endif + + MAT3eval(&RGBprime, &lpMod->Mhunt_x_MlamRigg_1, &RGBc); + + // The post-adaptation cone responses (for both the stimulus and the white) + // are then calculated. + + PostAdaptationConeResponses(lpMod, &RGBa_prime, &RGBprime); + + // Preliminary red-green and yellow-blue opponent dimensions are calculated + + a = RGBa_prime.n[0] - (12.0 * RGBa_prime.n[1] / 11.0) + RGBa_prime.n[2]/11.0; + b = (RGBa_prime.n[0] + RGBa_prime.n[1] - 2.0 * RGBa_prime.n[2]) / 9.0; + + + // The CIECAM97s hue angle, h, is then calculated + h = (180.0/M_PI)*(atan2(b, a)); + + + while (h < 0) + h += 360.0; + + outPtr->h = h; + + // hue quadrature and eccentricity factors, e, are calculated + + ComputeHueQuadrature(h, &H1val, &es); + + // ComputeHueQuadrature(h, &H1val, &h1, &e1, &h2, &e2, &es); + + + // The achromatic response A + A = lpMod->Nbb * (2.0 * RGBa_prime.n[0] + RGBa_prime.n[1] + RGBa_prime.n[2]/20.0 - NOISE_CONSTANT); + + // CIECAM97s Lightness J + outPtr -> J = 100.0 * pow(A / lpMod->A_subw, lpMod->c * lpMod->z); + + // CIECAM97s saturation s + s = (50 * hypot (a, b) * 100 * es * (10.0/13.0) * lpMod-> Nc * lpMod->Ncb) / (RGBa_prime.n[0] + RGBa_prime.n[1] + 1.05 * RGBa_prime.n[2]); + + // CIECAM97s Chroma C + +#ifdef USE_CIECAM97s2 + // Eq. 26 has been modified to allow accurate prediction of the Munsell chroma scales. + outPtr->C = 0.7487 * pow(s, 0.973) * pow(outPtr->J/100.0, 0.945 * lpMod->n) * (1.64 - pow(0.29, lpMod->n)); + +#else + outPtr->C = 2.44 * pow(s, 0.69) * pow(outPtr->J/100.0, 0.67 * lpMod->n) * (1.64 - pow(0.29, lpMod->n)); +#endif +} + + +// +// The reverse model JCh -> XYZ +// + + +LCMSAPI void LCMSEXPORT cmsCIECAM97sReverse(LCMSHANDLE hModel, LPcmsJCh inPtr, LPcmsCIEXYZ outPtr) +{ + LPcmsCIECAM97s lpMod = (LPcmsCIECAM97s) (LPSTR) hModel; + double J, C, h, A, H1val, es, s, a, b; + double tan_h, sec_h; + double R_suba_prime, G_suba_prime, B_suba_prime; + double R_prime, G_prime, B_prime; + double Y_subc, Y_prime, B_term; + VEC3 tmp; + VEC3 RGB_prime, RGB_subc_Y; + VEC3 Y_over_Y_subc_RGB; + VEC3 XYZ_primeprime_over_Y_subc; +#ifdef USE_CIECAM92s2 + VEC3 RGBY; + VEC3 Out; +#endif + + J = inPtr->J; + h = inPtr->h; + C = inPtr->C; + + if (J <= 0) { + + outPtr->X = 0.0; + outPtr->Y = 0.0; + outPtr->Z = 0.0; + return; + } + + + + // (2) From J Obtain A + + A = pow(J/100.0, 1/(lpMod->c * lpMod->z)) * lpMod->A_subw; + + + // (3), (4), (5) Using H Determine h1, h2, e1, e2 + // e1 and h1 are the values of e and h for the unique hue having the + // nearest lower valur of h and e2 and h2 are the values of e and h for + // the unique hue having the nearest higher value of h. + + + ComputeHueQuadrature(h, &H1val, &es); + + // (7) Calculate s + + s = pow(C / (2.44 * pow(J/100.0, 0.67*lpMod->n) * (1.64 - pow(0.29, lpMod->n))) , (1./0.69)); + + + // (8) Calculate a and b. + // NOTE: sqrt(1 + tan^2) == sec(h) + + tan_h = tan ((M_PI/180.)*(h)); + sec_h = sqrt(1 + tan_h * tan_h); + + if ((h > 90) && (h < 270)) + sec_h = -sec_h; + + a = s * ( A/lpMod->Nbb + NOISE_CONSTANT) / ( sec_h * 50000.0 * es * lpMod->Nc * lpMod->Ncb/ 13.0 + + s * (11.0 / 23.0 + (108.0/23.0) * tan_h)); + + b = a * tan_h; + + //(9) Calculate R'a G'a and B'a + + R_suba_prime = (20.0/61.0) * (A/lpMod->Nbb + NOISE_CONSTANT) + (41.0/61.0) * (11.0/23.0) * a + (288.0/61.0) / 23.0 * b; + G_suba_prime = (20.0/61.0) * (A/lpMod->Nbb + NOISE_CONSTANT) - (81.0/61.0) * (11.0/23.0) * a - (261.0/61.0) / 23.0 * b; + B_suba_prime = (20.0/61.0) * (A/lpMod->Nbb + NOISE_CONSTANT) - (20.0/61.0) * (11.0/23.0) * a - (20.0/61.0) * (315.0/23.0) * b; + + // (10) Calculate R', G' and B' + + if ((R_suba_prime - 1) < 0) { + + R_prime = -100.0 * pow((2.0 - 2.0 * R_suba_prime) / + (39.0 + R_suba_prime), 1.0/0.73); + } + else + { + R_prime = 100.0 * pow((2.0 * R_suba_prime - 2.0) / + (41.0 - R_suba_prime), 1.0/0.73); + } + + if ((G_suba_prime - 1) < 0) + { + G_prime = -100.0 * pow((2.0 - 2.0 * G_suba_prime) / + (39.0 + G_suba_prime), 1.0/0.73); + } + else + { + G_prime = 100.0 * pow((2.0 * G_suba_prime - 2.0) / + (41.0 - G_suba_prime), 1.0/0.73); + } + + if ((B_suba_prime - 1) < 0) + { + B_prime = -100.0 * pow((2.0 - 2.0 * B_suba_prime) / + (39.0 + B_suba_prime), 1.0/0.73); + } + else + { + B_prime = 100.0 * pow((2.0 * B_suba_prime - 2.0) / + (41.0 - B_suba_prime), 1.0/0.73); + } + + + // (11) Calculate RcY, GcY and BcY + + VEC3init(&RGB_prime, R_prime, G_prime, B_prime); + VEC3divK(&tmp, &RGB_prime, lpMod -> Fl); + + MAT3eval(&RGB_subc_Y, &lpMod->MlamRigg_x_Mhunt_1, &tmp); + + + + +#ifdef USE_CIECAM97s2 + + // (12) + + + RvAdaptationDegree(lpMod, &RGBY, &RGB_subc_Y); + MAT3eval(&Out, &lpMod->MlamRigg_1, &RGBY); + + outPtr -> X = Out.n[0]; + outPtr -> Y = Out.n[1]; + outPtr -> Z = Out.n[2]; + +#else + + // (12) Calculate Yc + + Y_subc = 0.43231*RGB_subc_Y.n[0]+0.51836*RGB_subc_Y.n[1]+0.04929*RGB_subc_Y.n[2]; + + // (13) Calculate (Y/Yc)R, (Y/Yc)G and (Y/Yc)B + + VEC3divK(&RGB_subc_Y, &RGB_subc_Y, Y_subc); + RvAdaptationDegree(lpMod, &Y_over_Y_subc_RGB, &RGB_subc_Y); + + // (14) Calculate Y' + Y_prime = 0.43231*(Y_over_Y_subc_RGB.n[0]*Y_subc) + 0.51836*(Y_over_Y_subc_RGB.n[1]*Y_subc) + 0.04929 * (Y_over_Y_subc_RGB.n[2]*Y_subc); + + if (Y_prime < 0 || Y_subc < 0) + { + // Discard to near black point + + outPtr -> X = 0; + outPtr -> Y = 0; + outPtr -> Z = 0; + return; + } + + B_term = pow(Y_prime / Y_subc, (1.0 / lpMod->p) - 1); + + // (15) Calculate X'', Y'' and Z'' + Y_over_Y_subc_RGB.n[2] /= B_term; + MAT3eval(&XYZ_primeprime_over_Y_subc, &lpMod->MlamRigg_1, &Y_over_Y_subc_RGB); + + outPtr->X = XYZ_primeprime_over_Y_subc.n[0] * Y_subc; + outPtr->Y = XYZ_primeprime_over_Y_subc.n[1] * Y_subc; + outPtr->Z = XYZ_primeprime_over_Y_subc.n[2] * Y_subc; +#endif + +} diff --git a/icc2ps/cmscgats.c b/icc2ps/cmscgats.c new file mode 100644 index 0000000..042429f --- /dev/null +++ b/icc2ps/cmscgats.c @@ -0,0 +1,2703 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// IT8.7 / CGATS.17-200x handling + +#include "lcms.h" + + +LCMSAPI LCMSHANDLE LCMSEXPORT cmsIT8Alloc(void); +LCMSAPI void LCMSEXPORT cmsIT8Free(LCMSHANDLE IT8); + +// Tables + +LCMSAPI int LCMSEXPORT cmsIT8TableCount(LCMSHANDLE IT8); +LCMSAPI int LCMSEXPORT cmsIT8SetTable(LCMSHANDLE IT8, int nTable); + +// Persistence +LCMSAPI LCMSHANDLE LCMSEXPORT cmsIT8LoadFromFile(const char* cFileName); +LCMSAPI LCMSHANDLE LCMSEXPORT cmsIT8LoadFromMem(void *Ptr, size_t len); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SaveToFile(LCMSHANDLE IT8, const char* cFileName); + +// Properties +LCMSAPI const char* LCMSEXPORT cmsIT8GetSheetType(LCMSHANDLE hIT8); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetSheetType(LCMSHANDLE hIT8, const char* Type); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetComment(LCMSHANDLE hIT8, const char* cComment); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyStr(LCMSHANDLE hIT8, const char* cProp, const char *Str); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyDbl(LCMSHANDLE hIT8, const char* cProp, double Val); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyHex(LCMSHANDLE hIT8, const char* cProp, int Val); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyMulti(LCMSHANDLE hIT8, const char* cProp, const char* cSubProp, const char *Val); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyUncooked(LCMSHANDLE hIT8, const char* Key, const char* Buffer); + +LCMSAPI const char* LCMSEXPORT cmsIT8GetProperty(LCMSHANDLE hIT8, const char* cProp); +LCMSAPI double LCMSEXPORT cmsIT8GetPropertyDbl(LCMSHANDLE hIT8, const char* cProp); +LCMSAPI const char* LCMSEXPORT cmsIT8GetPropertyMulti(LCMSHANDLE hIT8, const char* cProp, const char *cSubProp); +LCMSAPI int LCMSEXPORT cmsIT8EnumProperties(LCMSHANDLE IT8, const char ***PropertyNames); +LCMSAPI int LCMSEXPORT cmsIT8EnumPropertyMulti(LCMSHANDLE hIT8, const char* cProp, const char*** SubpropertyNames); + +// Datasets + +LCMSAPI const char* LCMSEXPORT cmsIT8GetPatchName(LCMSHANDLE hIT8, int nPatch, char* buffer); + +LCMSAPI const char* LCMSEXPORT cmsIT8GetDataRowCol(LCMSHANDLE IT8, int row, int col); +LCMSAPI double LCMSEXPORT cmsIT8GetDataRowColDbl(LCMSHANDLE IT8, int col, int row); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataRowCol(LCMSHANDLE hIT8, int row, int col, + const char* Val); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataRowColDbl(LCMSHANDLE hIT8, int row, int col, + double Val); + +LCMSAPI const char* LCMSEXPORT cmsIT8GetData(LCMSHANDLE IT8, const char* cPatch, const char* cSample); + + +LCMSAPI double LCMSEXPORT cmsIT8GetDataDbl(LCMSHANDLE IT8, const char* cPatch, const char* cSample); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetData(LCMSHANDLE IT8, const char* cPatch, + const char* cSample, + const char *Val); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataDbl(LCMSHANDLE hIT8, const char* cPatch, + const char* cSample, + double Val); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataFormat(LCMSHANDLE IT8, int n, const char *Sample); +LCMSAPI int LCMSEXPORT cmsIT8EnumDataFormat(LCMSHANDLE IT8, char ***SampleNames); + +LCMSAPI void LCMSEXPORT cmsIT8DefineDblFormat(LCMSHANDLE IT8, const char* Formatter); + +LCMSAPI int LCMSEXPORT cmsIT8SetTableByLabel(LCMSHANDLE hIT8, const char* cSet, + const char* cField, + const char* ExpectedType); + +// ------------------------------------------------------------- Implementation + + +#define SIZEOFLONGMINUS1 (sizeof(long)-1) +#define ALIGNLONG(x) (((x)+SIZEOFLONGMINUS1) & ~(SIZEOFLONGMINUS1)) + +// #define STRICT_CGATS 1 + +#define MAXID 128 // Max lenght of identifier +#define MAXSTR 1024 // Max lenght of string +#define MAXTABLES 255 // Max Number of tables in a single stream +#define MAXINCLUDE 20 // Max number of nested includes + +#define DEFAULT_DBL_FORMAT "%.10g" // Double formatting + +#include +#include + +#ifndef NON_WINDOWS +#include +#define DIR_CHAR '\\' +#else +#define DIR_CHAR '/' +#endif + +// Symbols + +typedef enum { + + SNONE, + SINUM, // Integer + SDNUM, // Real + SIDENT, // Identifier + SSTRING, // string + SCOMMENT, // comment + SEOLN, // End of line + SEOF, // End of stream + SSYNERROR, // Syntax error found on stream + + // Keywords + + SBEGIN_DATA, + SBEGIN_DATA_FORMAT, + SEND_DATA, + SEND_DATA_FORMAT, + SKEYWORD, + SDATA_FORMAT_ID, + SINCLUDE + + } SYMBOL; + + +// How to write the value + +typedef enum { + WRITE_UNCOOKED, + WRITE_STRINGIFY, + WRITE_HEXADECIMAL, + WRITE_BINARY, + WRITE_PAIR + + } WRITEMODE; + +// Linked list of variable names + +typedef struct _KeyVal { + + struct _KeyVal* Next; + char* Keyword; // Name of variable + struct _KeyVal* NextSubkey; // If key is a dictionary, points to the next item + char* Subkey; // If key is a dictionary, points to the subkey name + char* Value; // Points to value + WRITEMODE WriteAs; // How to write the value + + } KEYVALUE, *LPKEYVALUE; + + +// Linked list of memory chunks (Memory sink) + +typedef struct _OwnedMem { + + struct _OwnedMem* Next; + void * Ptr; // Point to value + + } OWNEDMEM, *LPOWNEDMEM; + +// Suballocator + +typedef struct _SubAllocator { + + LPBYTE Block; + size_t BlockSize; + size_t Used; + + } SUBALLOCATOR, *LPSUBALLOCATOR; + +// Table. Each individual table can hold properties and rows & cols + +typedef struct _Table { + + int nSamples, nPatches; // Cols, Rows + int SampleID; // Pos of ID + + LPKEYVALUE HeaderList; // The properties + + char** DataFormat; // The binary stream descriptor + char** Data; // The binary stream + + } TABLE, *LPTABLE; + +// File stream being parsed + +typedef struct _FileContext { + char FileName[MAX_PATH]; // File name if being readed from file + FILE* Stream; // File stream or NULL if holded in memory + } FILECTX, *LPFILECTX; + +// This struct hold all information about an openened +// IT8 handler. Only one dataset is allowed. + +typedef struct { + + char SheetType[MAXSTR]; + + int TablesCount; // How many tables in this stream + int nTable; // The actual table + + TABLE Tab[MAXTABLES]; + + // Memory management + + LPOWNEDMEM MemorySink; // The storage backend + SUBALLOCATOR Allocator; // String suballocator -- just to keep it fast + + // Parser state machine + + SYMBOL sy; // Current symbol + int ch; // Current character + + int inum; // integer value + double dnum; // real value + char id[MAXID]; // identifier + char str[MAXSTR]; // string + + // Allowed keywords & datasets. They have visibility on whole stream + + LPKEYVALUE ValidKeywords; + LPKEYVALUE ValidSampleID; + + char* Source; // Points to loc. being parsed + int lineno; // line counter for error reporting + + LPFILECTX FileStack[MAXINCLUDE]; // Stack of files being parsed + int IncludeSP; // Include Stack Pointer + + char* MemoryBlock; // The stream if holded in memory + + char DoubleFormatter[MAXID]; // Printf-like 'double' formatter + + } IT8, *LPIT8; + + + +typedef struct { + + FILE* stream; // For save-to-file behaviour + + LPBYTE Base; + LPBYTE Ptr; // For save-to-mem behaviour + size_t Used; + size_t Max; + + } SAVESTREAM, FAR* LPSAVESTREAM; + + +// ------------------------------------------------------ IT8 parsing routines + + +// A keyword +typedef struct { + + const char *id; + SYMBOL sy; + + } KEYWORD; + +// The keyword->symbol translation table. Sorting is required. +static const KEYWORD TabKeys[] = { + + {"$INCLUDE", SINCLUDE}, + {".INCLUDE", SINCLUDE}, + {"BEGIN_DATA", SBEGIN_DATA }, + {"BEGIN_DATA_FORMAT", SBEGIN_DATA_FORMAT }, + {"DATA_FORMAT_IDENTIFIER", SDATA_FORMAT_ID}, + {"END_DATA", SEND_DATA}, + {"END_DATA_FORMAT", SEND_DATA_FORMAT}, + {"KEYWORD", SKEYWORD} + }; + +#define NUMKEYS (sizeof(TabKeys)/sizeof(KEYWORD)) + +// Predefined properties + +// A property +typedef struct { + const char *id; + WRITEMODE as; + } PROPERTY; + +static PROPERTY PredefinedProperties[] = { + + {"NUMBER_OF_FIELDS", WRITE_UNCOOKED}, // Required - NUMBER OF FIELDS + {"NUMBER_OF_SETS", WRITE_UNCOOKED}, // Required - NUMBER OF SETS + {"ORIGINATOR", WRITE_STRINGIFY}, // Required - Identifies the specific system, organization or individual that created the data file. + {"FILE_DESCRIPTOR", WRITE_STRINGIFY}, // Required - Describes the purpose or contents of the data file. + {"CREATED", WRITE_STRINGIFY}, // Required - Indicates date of creation of the data file. + {"DESCRIPTOR", WRITE_STRINGIFY}, // Required - Describes the purpose or contents of the data file. + {"DIFFUSE_GEOMETRY", WRITE_STRINGIFY}, // The diffuse geometry used. Allowed values are "sphere" or "opal". + {"MANUFACTURER", WRITE_STRINGIFY}, + {"MANUFACTURE", WRITE_STRINGIFY}, // Some broken Fuji targets does store this value + {"PROD_DATE", WRITE_STRINGIFY}, // Identifies year and month of production of the target in the form yyyy:mm. + {"SERIAL", WRITE_STRINGIFY}, // Uniquely identifies individual physical target. + + {"MATERIAL", WRITE_STRINGIFY}, // Identifies the material on which the target was produced using a code + // uniquely identifying th e material. This is intend ed to be used for IT8.7 + // physical targets only (i.e . IT8.7/1 a nd IT8.7/2). + + {"INSTRUMENTATION", WRITE_STRINGIFY}, // Used to report the specific instrumentation used (manufacturer and + // model number) to generate the data reported. This data will often + // provide more information about the particular data collected than an + // extensive list of specific details. This is particularly important for + // spectral data or data derived from spectrophotometry. + + {"MEASUREMENT_SOURCE", WRITE_STRINGIFY}, // Illumination used for spectral measurements. This data helps provide + // a guide to the potential for issues of paper fluorescence, etc. + + {"PRINT_CONDITIONS", WRITE_STRINGIFY}, // Used to define the characteristics of the printed sheet being reported. + // Where standard conditions have been defined (e.g., SWOP at nominal) + // named conditions may suffice. Otherwise, detailed information is + // needed. + + {"SAMPLE_BACKING", WRITE_STRINGIFY}, // Identifies the backing material used behind the sample during + // measurement. Allowed values are “black”, “white”, or {"na". + + {"CHISQ_DOF", WRITE_STRINGIFY}, // Degrees of freedom associated with the Chi squared statistic + +// new in recent specs: + {"MEASUREMENT_GEOMETRY", WRITE_STRINGIFY}, // The type of measurement, either reflection or transmission, should be indicated + // along with details of the geometry and the aperture size and shape. For example, + // for transmission measurements it is important to identify 0/diffuse, diffuse/0, + // opal or integrating sphere, etc. For reflection it is important to identify 0/45, + // 45/0, sphere (specular included or excluded), etc. + + {"FILTER", WRITE_STRINGIFY}, // Identifies the use of physical filter(s) during measurement. Typically used to + // denote the use of filters such as none, D65, Red, Green or Blue. + + {"POLARIZATION", WRITE_STRINGIFY}, // Identifies the use of a physical polarization filter during measurement. Allowed + // values are {"yes”, “white”, “none” or “na”. + + {"WEIGHTING_FUNCTION", WRITE_PAIR}, // Indicates such functions as: the CIE standard observer functions used in the + // calculation of various data parameters (2 degree and 10 degree), CIE standard + // illuminant functions used in the calculation of various data parameters (e.g., D50, + // D65, etc.), density status response, etc. If used there shall be at least one + // name-value pair following the WEIGHTING_FUNCTION tag/keyword. The first attribute + // in the set shall be {"name" and shall identify the particular parameter used. + // The second shall be {"value" and shall provide the value associated with that name. + // For ASCII data, a string containing the Name and Value attribute pairs shall follow + // the weighting function keyword. A semi-colon separates attribute pairs from each + // other and within the attribute the name and value are separated by a comma. + + {"COMPUTATIONAL_PARAMETER", WRITE_PAIR}, // Parameter that is used in computing a value from measured data. Name is the name + // of the calculation, parameter is the name of the parameter used in the calculation + // and value is the value of the parameter. + + {"TARGET_TYPE", WRITE_STRINGIFY}, // The type of target being measured, e.g. IT8.7/1, IT8.7/3, user defined, etc. + + {"COLORANT", WRITE_STRINGIFY}, // Identifies the colorant(s) used in creating the target. + + {"TABLE_DESCRIPTOR", WRITE_STRINGIFY}, // Describes the purpose or contents of a data table. + + {"TABLE_NAME", WRITE_STRINGIFY} // Provides a short name for a data table. +}; + +#define NUMPREDEFINEDPROPS (sizeof(PredefinedProperties)/sizeof(PROPERTY)) + + +// Predefined sample types on dataset +static const char* PredefinedSampleID[] = { + "SAMPLE_ID", // Identifies sample that data represents + "STRING", // Identifies label, or other non-machine readable value. + // Value must begin and end with a " symbol + + "CMYK_C", // Cyan component of CMYK data expressed as a percentage + "CMYK_M", // Magenta component of CMYK data expressed as a percentage + "CMYK_Y", // Yellow component of CMYK data expressed as a percentage + "CMYK_K", // Black component of CMYK data expressed as a percentage + "D_RED", // Red filter density + "D_GREEN", // Green filter density + "D_BLUE", // Blue filter density + "D_VIS", // Visual filter density + "D_MAJOR_FILTER", // Major filter d ensity + "RGB_R", // Red component of RGB data + "RGB_G", // Green component of RGB data + "RGB_B", // Blue com ponent of RGB data + "SPECTRAL_NM", // Wavelength of measurement expressed in nanometers + "SPECTRAL_PCT", // Percentage reflectance/transmittance + "SPECTRAL_DEC", // Reflectance/transmittance + "XYZ_X", // X component of tristimulus data + "XYZ_Y", // Y component of tristimulus data + "XYZ_Z", // Z component of tristimulus data + "XYY_X" // x component of chromaticity data + "XYY_Y", // y component of chromaticity data + "XYY_CAPY", // Y component of tristimulus data + "LAB_L", // L* component of Lab data + "LAB_A", // a* component of Lab data + "LAB_B", // b* component of Lab data + "LAB_C", // C*ab component of Lab data + "LAB_H", // hab component of Lab data + "LAB_DE", // CIE dE + "LAB_DE_94", // CIE dE using CIE 94 + "LAB_DE_CMC", // dE using CMC + "LAB_DE_2000", // CIE dE using CIE DE 2000 + "MEAN_DE", // Mean Delta E (LAB_DE) of samples compared to batch average + // (Used for data files for ANSI IT8.7/1 and IT8.7/2 targets) + "STDEV_X", // Standard deviation of X (tristimulus data) + "STDEV_Y", // Standard deviation of Y (tristimulus data) + "STDEV_Z", // Standard deviation of Z (tristimulus data) + "STDEV_L", // Standard deviation of L* + "STDEV_A", // Standard deviation of a* + "STDEV_B", // Standard deviation of b* + "STDEV_DE", // Standard deviation of CIE dE + "CHI_SQD_PAR"}; // The average of the standard deviations of L*, a* and b*. It is + // used to derive an estimate of the chi-squared parameter which is + // recommended as the predictor of the variability of dE + +#define NUMPREDEFINEDSAMPLEID (sizeof(PredefinedSampleID)/sizeof(char *)) + +//Forward declaration of some internal functions +static +void* AllocChunk(LPIT8 it8, size_t size); + +// Checks if c is a separator +static +LCMSBOOL isseparator(int c) +{ + return (c == ' ') || (c == '\t') || (c == '\r'); +} + +// Checks whatever if c is a valid identifier char +static +LCMSBOOL ismiddle(int c) +{ + return (!isseparator(c) && (c != '#') && (c !='\"') && (c != '\'') && (c > 32) && (c < 127)); +} + +// Checks whatsever if c is a valid identifier middle char. +static +LCMSBOOL isidchar(int c) +{ + return isalnum(c) || ismiddle(c); +} + +// Checks whatsever if c is a valid identifier first char. +static +LCMSBOOL isfirstidchar(int c) +{ + return !isdigit(c) && ismiddle(c); +} + +// checks whether the supplied path looks like an absolute path +// NOTE: this function doesn't checks if the path exists or even if it's legal +static +LCMSBOOL isabsolutepath(const char *path) +{ + if(path == NULL) + return FALSE; + + if(path[0] == DIR_CHAR) + return TRUE; + +#ifndef NON_WINDOWS + if(isalpha(path[0]) && path[1] == ':') + return TRUE; +#endif + return FALSE; +} + +// Makes a file path based on a given reference path +// NOTE: buffer is assumed to point to at least MAX_PATH bytes +// NOTE: both relPath and basePath are assumed to be no more than MAX_PATH characters long (including the null terminator!) +// NOTE: this function doesn't check if the path exists or even if it's legal +static +LCMSBOOL _cmsMakePath(const char *relPath, const char *basePath, char *buffer) +{ + if (!isabsolutepath(relPath)) { + + char *tail; + + strncpy(buffer, basePath, MAX_PATH-1); + tail = strrchr(buffer, DIR_CHAR); + if (tail != NULL) { + + size_t len = tail - buffer; + strncpy(tail + 1, relPath, MAX_PATH - len -1); + // TODO: if combined path is longer than MAX_PATH, this should return FALSE! + return TRUE; + } + } + strncpy(buffer, relPath, MAX_PATH - 1); + buffer[MAX_PATH-1] = 0; + return TRUE; +} + + +// Make sure no exploit is being even tried + +static +const char* NoMeta(const char* str) +{ + if (strchr(str, '%') != NULL) + return "**** CORRUPTED FORMAT STRING ***"; + + return str; +} + + +// Syntax error +static +LCMSBOOL SynError(LPIT8 it8, const char *Txt, ...) +{ + char Buffer[256], ErrMsg[1024]; + va_list args; + + va_start(args, Txt); + vsnprintf(Buffer, 255, Txt, args); + Buffer[255] = 0; + va_end(args); + + snprintf(ErrMsg, 1023, "%s: Line %d, %s", it8->FileStack[it8 ->IncludeSP]->FileName, it8->lineno, Buffer); + ErrMsg[1023] = 0; + it8->sy = SSYNERROR; + cmsSignalError(LCMS_ERRC_ABORTED, "%s", ErrMsg); + return FALSE; +} + +// Check if current symbol is same as specified. issue an error else. +static +LCMSBOOL Check(LPIT8 it8, SYMBOL sy, const char* Err) +{ + if (it8 -> sy != sy) + return SynError(it8, NoMeta(Err)); + return TRUE; +} + + + +// Read Next character from stream +static +void NextCh(LPIT8 it8) +{ + if (it8 -> FileStack[it8 ->IncludeSP]->Stream) { + + it8 ->ch = fgetc(it8 ->FileStack[it8 ->IncludeSP]->Stream); + + if (feof(it8 -> FileStack[it8 ->IncludeSP]->Stream)) { + + if (it8 ->IncludeSP > 0) { + + fclose(it8 ->FileStack[it8->IncludeSP--]->Stream); + it8 -> ch = ' '; // Whitespace to be ignored + + } else + it8 ->ch = 0; // EOF + } + + + + } + else { + it8->ch = *it8->Source; + if (it8->ch) it8->Source++; + } +} + + +// Try to see if current identifier is a keyword, if so return the referred symbol +static +SYMBOL BinSrchKey(const char *id) +{ + int l = 1; + int r = NUMKEYS; + int x, res; + + while (r >= l) + { + x = (l+r)/2; + res = stricmp(id, TabKeys[x-1].id); + if (res == 0) return TabKeys[x-1].sy; + if (res < 0) r = x - 1; + else l = x + 1; + } + + return SNONE; +} + + +// 10 ^n +static +double xpow10(int n) +{ + return pow(10, (double) n); +} + + +// Reads a Real number, tries to follow from integer number +static +void ReadReal(LPIT8 it8, int inum) +{ + it8->dnum = (double) inum; + + while (isdigit(it8->ch)) { + + it8->dnum = it8->dnum * 10.0 + (it8->ch - '0'); + NextCh(it8); + } + + if (it8->ch == '.') { // Decimal point + + double frac = 0.0; // fraction + int prec = 0; // precission + + NextCh(it8); // Eats dec. point + + while (isdigit(it8->ch)) { + + frac = frac * 10.0 + (it8->ch - '0'); + prec++; + NextCh(it8); + } + + it8->dnum = it8->dnum + (frac / xpow10(prec)); + } + + // Exponent, example 34.00E+20 + if (toupper(it8->ch) == 'E') { + + int e; + int sgn; + + NextCh(it8); sgn = 1; + + if (it8->ch == '-') { + + sgn = -1; NextCh(it8); + } + else + if (it8->ch == '+') { + + sgn = +1; + NextCh(it8); + } + + + e = 0; + while (isdigit(it8->ch)) { + + if ((double) e * 10L < INT_MAX) + e = e * 10 + (it8->ch - '0'); + + NextCh(it8); + } + + e = sgn*e; + + it8 -> dnum = it8 -> dnum * xpow10(e); + } +} + + + +// Reads next symbol +static +void InSymbol(LPIT8 it8) +{ + register char *idptr; + register int k; + SYMBOL key; + int sng; + + do { + + while (isseparator(it8->ch)) + NextCh(it8); + + if (isfirstidchar(it8->ch)) { // Identifier + + + k = 0; + idptr = it8->id; + + do { + + if (++k < MAXID) *idptr++ = (char) it8->ch; + + NextCh(it8); + + } while (isidchar(it8->ch)); + + *idptr = '\0'; + + + key = BinSrchKey(it8->id); + if (key == SNONE) it8->sy = SIDENT; + else it8->sy = key; + + } + else // Is a number? + if (isdigit(it8->ch) || it8->ch == '.' || it8->ch == '-' || it8->ch == '+') + { + int sign = 1; + + if (it8->ch == '-') { + sign = -1; + NextCh(it8); + } + + it8->inum = 0; + it8->sy = SINUM; + + if (it8->ch == '0') { // 0xnnnn (Hexa) or 0bnnnn (Binary) + + NextCh(it8); + if (toupper(it8->ch) == 'X') { + + int j; + + NextCh(it8); + while (isxdigit(it8->ch)) + { + it8->ch = toupper(it8->ch); + if (it8->ch >= 'A' && it8->ch <= 'F') j = it8->ch -'A'+10; + else j = it8->ch - '0'; + + if ((long) it8->inum * 16L > (long) INT_MAX) + { + SynError(it8, "Invalid hexadecimal number"); + return; + } + + it8->inum = it8->inum * 16 + j; + NextCh(it8); + } + return; + } + + if (toupper(it8->ch) == 'B') { // Binary + + int j; + + NextCh(it8); + while (it8->ch == '0' || it8->ch == '1') + { + j = it8->ch - '0'; + + if ((long) it8->inum * 2L > (long) INT_MAX) + { + SynError(it8, "Invalid binary number"); + return; + } + + it8->inum = it8->inum * 2 + j; + NextCh(it8); + } + return; + } + } + + + while (isdigit(it8->ch)) { + + if ((long) it8->inum * 10L > (long) INT_MAX) { + ReadReal(it8, it8->inum); + it8->sy = SDNUM; + it8->dnum *= sign; + return; + } + + it8->inum = it8->inum * 10 + (it8->ch - '0'); + NextCh(it8); + } + + if (it8->ch == '.') { + + ReadReal(it8, it8->inum); + it8->sy = SDNUM; + it8->dnum *= sign; + return; + } + + it8 -> inum *= sign; + + // Special case. Numbers followed by letters are taken as identifiers + + if (isidchar(it8 ->ch)) { + + if (it8 ->sy == SINUM) { + + sprintf(it8->id, "%d", it8->inum); + } + else { + + sprintf(it8->id, it8 ->DoubleFormatter, it8->dnum); + } + + k = (int) strlen(it8 ->id); + idptr = it8 ->id + k; + do { + + if (++k < MAXID) *idptr++ = (char) it8->ch; + + NextCh(it8); + + } while (isidchar(it8->ch)); + + *idptr = '\0'; + + it8->sy = SIDENT; + } + return; + + } + else + switch ((int) it8->ch) { + + // EOF marker -- ignore it + case '\x1a': + NextCh(it8); + break; + + // Eof stream markers + + case 0: + case -1: + it8->sy = SEOF; + break; + + + // Next line + + case '\n': + NextCh(it8); + it8->sy = SEOLN; + it8->lineno++; + break; + + // Comment + + case '#': + NextCh(it8); + while (it8->ch && it8->ch != '\n') + NextCh(it8); + + it8->sy = SCOMMENT; + break; + + // String. + + case '\'': + case '\"': + idptr = it8->str; + sng = it8->ch; + k = 0; + NextCh(it8); + + while (k < MAXSTR && it8->ch != sng) { + + if (it8->ch == '\n'|| it8->ch == '\r') k = MAXSTR+1; + else { + *idptr++ = (char) it8->ch; + NextCh(it8); + k++; + } + } + + it8->sy = SSTRING; + *idptr = '\0'; + NextCh(it8); + break; + + + default: + SynError(it8, "Unrecognized character: 0x%x", it8 ->ch); + return; + } + + } while (it8->sy == SCOMMENT); + + // Handle the include special token + + if (it8 -> sy == SINCLUDE) { + + LPFILECTX FileNest; + + if(it8 -> IncludeSP >= (MAXINCLUDE-1)) + { + SynError(it8, "Too many recursion levels"); + return; + } + + InSymbol(it8); + if (!Check(it8, SSTRING, "Filename expected")) return; + + FileNest = it8 -> FileStack[it8 -> IncludeSP + 1]; + if(FileNest == NULL) + { + FileNest = it8 ->FileStack[it8 -> IncludeSP + 1] = (LPFILECTX)AllocChunk(it8, sizeof(FILECTX)); + //if(FileNest == NULL) + // TODO: how to manage out-of-memory conditions? + } + + if(_cmsMakePath(it8->str, it8->FileStack[it8->IncludeSP]->FileName, FileNest->FileName) == FALSE) + { + SynError(it8, "File path too long"); + return; + } + + FileNest->Stream = fopen(FileNest->FileName, "rt"); + if (FileNest->Stream == NULL) { + + SynError(it8, "File %s not found", FileNest->FileName); + return; + } + it8->IncludeSP++; + + it8 ->ch = ' '; + InSymbol(it8); + } + +} + +// Checks end of line separator +static +LCMSBOOL CheckEOLN(LPIT8 it8) +{ + if (!Check(it8, SEOLN, "Expected separator")) return FALSE; + while (it8 -> sy == SEOLN) + InSymbol(it8); + return TRUE; + +} + +// Skip a symbol + +static +void Skip(LPIT8 it8, SYMBOL sy) +{ + if (it8->sy == sy && it8->sy != SEOF) + InSymbol(it8); +} + + +// Skip multiple EOLN +static +void SkipEOLN(LPIT8 it8) +{ + while (it8->sy == SEOLN) { + InSymbol(it8); + } +} + + +// Returns a string holding current value +static +LCMSBOOL GetVal(LPIT8 it8, char* Buffer, size_t max, const char* ErrorTitle) +{ + switch (it8->sy) { + + case SIDENT: strncpy(Buffer, it8->id, max); + Buffer[max-1]=0; + break; + case SINUM: snprintf(Buffer, max, "%d", it8 -> inum); break; + case SDNUM: snprintf(Buffer, max, it8->DoubleFormatter, it8 -> dnum); break; + case SSTRING: strncpy(Buffer, it8->str, max); + Buffer[max-1] = 0; + break; + + + default: + return SynError(it8, "%s", ErrorTitle); + } + + Buffer[max] = 0; + return TRUE; +} + +// ---------------------------------------------------------- Table + +static +LPTABLE GetTable(LPIT8 it8) +{ + if ((it8 -> nTable >= it8 ->TablesCount) || (it8 -> nTable < 0)) { + + SynError(it8, "Table %d out of sequence", it8 -> nTable); + return it8 -> Tab; + } + + return it8 ->Tab + it8 ->nTable; +} + +// ---------------------------------------------------------- Memory management + + + +// Frees an allocator and owned memory +void LCMSEXPORT cmsIT8Free(LCMSHANDLE hIT8) +{ + LPIT8 it8 = (LPIT8) hIT8; + + if (it8 == NULL) + return; + + + if (it8->MemorySink) { + + LPOWNEDMEM p; + LPOWNEDMEM n; + + for (p = it8->MemorySink; p != NULL; p = n) { + + n = p->Next; + if (p->Ptr) _cmsFree(p->Ptr); + _cmsFree(p); + } + } + + if (it8->MemoryBlock) + _cmsFree(it8->MemoryBlock); + + _cmsFree(it8); +} + + +// Allocates a chunk of data, keep linked list +static +void* AllocBigBlock(LPIT8 it8, size_t size) +{ + LPOWNEDMEM ptr1; + void* ptr = _cmsMalloc(size); + + if (ptr) { + + ZeroMemory(ptr, size); + ptr1 = (LPOWNEDMEM) _cmsMalloc(sizeof(OWNEDMEM)); + + if (ptr1 == NULL) { + + _cmsFree(ptr); + return NULL; + } + + ZeroMemory(ptr1, sizeof(OWNEDMEM)); + + ptr1-> Ptr = ptr; + ptr1-> Next = it8 -> MemorySink; + it8 -> MemorySink = ptr1; + } + + return ptr; +} + + +// Suballocator. +static +void* AllocChunk(LPIT8 it8, size_t size) +{ + size_t free = it8 ->Allocator.BlockSize - it8 ->Allocator.Used; + LPBYTE ptr; + + size = ALIGNLONG(size); + + if (size > free) { + + if (it8 -> Allocator.BlockSize == 0) + + it8 -> Allocator.BlockSize = 20*1024; + else + it8 ->Allocator.BlockSize *= 2; + + if (it8 ->Allocator.BlockSize < size) + it8 ->Allocator.BlockSize = size; + + it8 ->Allocator.Used = 0; + it8 ->Allocator.Block = (LPBYTE) AllocBigBlock(it8, it8 ->Allocator.BlockSize); + } + + ptr = it8 ->Allocator.Block + it8 ->Allocator.Used; + it8 ->Allocator.Used += size; + + return (void*) ptr; + +} + + +// Allocates a string +static +char *AllocString(LPIT8 it8, const char* str) +{ + size_t Size = strlen(str)+1; + char *ptr; + + + ptr = (char *) AllocChunk(it8, Size); + if (ptr) strncpy (ptr, str, Size-1); + + return ptr; +} + +// Searches through linked list + +static +LCMSBOOL IsAvailableOnList(LPKEYVALUE p, const char* Key, const char* Subkey, LPKEYVALUE* LastPtr) +{ + if (LastPtr) *LastPtr = p; + + for (; p != NULL; p = p->Next) { + + if (LastPtr) *LastPtr = p; + + if (*Key != '#') { // Comments are ignored + + if (stricmp(Key, p->Keyword) == 0) + break; + } + } + + if (p == NULL) + return FALSE; + + if (Subkey == 0) + return TRUE; + + for (; p != NULL; p = p->NextSubkey) { + + if (LastPtr) *LastPtr = p; + + if (stricmp(Subkey, p->Subkey) == 0) + return TRUE; + } + + return FALSE; +} + + + +// Add a property into a linked list +static +LPKEYVALUE AddToList(LPIT8 it8, LPKEYVALUE* Head, const char *Key, const char *Subkey, const char* xValue, WRITEMODE WriteAs) +{ + LPKEYVALUE p; + + // Check if property is already in list (this is an error) + + if (IsAvailableOnList(*Head, Key, Subkey, &p)) { + + // This may work for editing properties + + // return SynError(it8, "duplicate key <%s>", Key); + } + else { + LPKEYVALUE last = p; + + // Allocate the container + p = (LPKEYVALUE) AllocChunk(it8, sizeof(KEYVALUE)); + if (p == NULL) + { + SynError(it8, "AddToList: out of memory"); + return NULL; + } + + // Store name and value + p->Keyword = AllocString(it8, Key); + p->Subkey = (Subkey == NULL) ? NULL : AllocString(it8, Subkey); + + // Keep the container in our list + if (*Head == NULL) + *Head = p; + else + { + if(Subkey != 0 && last != 0) { + last->NextSubkey = p; + + // If Subkey is not null, then last is the last property with the same key, + // but not necessarily is the last property in the list, so we need to move + // to the actual list end + while(last->Next != 0) + last = last->Next; + } + last->Next = p; + } + + p->Next = NULL; + p->NextSubkey = NULL; + } + + p->WriteAs = WriteAs; + if (xValue != NULL) { + + p->Value = AllocString(it8, xValue); + } + else { + p->Value = NULL; + } + + return p; +} + +static +LPKEYVALUE AddAvailableProperty(LPIT8 it8, const char* Key, WRITEMODE as) +{ + return AddToList(it8, &it8->ValidKeywords, Key, NULL, NULL, as); +} + + +static +LPKEYVALUE AddAvailableSampleID(LPIT8 it8, const char* Key) +{ + return AddToList(it8, &it8->ValidSampleID, Key, NULL, NULL, WRITE_UNCOOKED); +} + + +static +void AllocTable(LPIT8 it8) +{ + LPTABLE t; + + t = it8 ->Tab + it8 ->TablesCount; + + t->HeaderList = NULL; + t->DataFormat = NULL; + t->Data = NULL; + + it8 ->TablesCount++; +} + + +int LCMSEXPORT cmsIT8SetTable(LCMSHANDLE IT8, int nTable) +{ + LPIT8 it8 = (LPIT8) IT8; + + if (nTable >= it8 ->TablesCount) { + + if (nTable == it8 ->TablesCount) { + + AllocTable(it8); + } + else { + SynError(it8, "Table %d is out of sequence", nTable); + return -1; + } + } + + it8 ->nTable = nTable; + + return nTable; +} + + + +// Init an empty container +LCMSHANDLE LCMSEXPORT cmsIT8Alloc(void) +{ + LPIT8 it8; + int i; + + it8 = (LPIT8) malloc(sizeof(IT8)); + if (it8 == NULL) return NULL; + + ZeroMemory(it8, sizeof(IT8)); + + AllocTable(it8); + + it8->MemoryBlock = NULL; + it8->MemorySink = NULL; + + it8 ->nTable = 0; + + it8->Allocator.Used = 0; + it8->Allocator.Block = NULL; + it8->Allocator.BlockSize = 0; + + it8->ValidKeywords = NULL; + it8->ValidSampleID = NULL; + + it8 -> sy = SNONE; + it8 -> ch = ' '; + it8 -> Source = NULL; + it8 -> inum = 0; + it8 -> dnum = 0.0; + + it8->FileStack[0] = (LPFILECTX)AllocChunk(it8, sizeof(FILECTX)); + it8->IncludeSP = 0; + it8 -> lineno = 1; + + strcpy(it8->DoubleFormatter, DEFAULT_DBL_FORMAT); + strcpy(it8->SheetType, "CGATS.17"); + + // Initialize predefined properties & data + + for (i=0; i < NUMPREDEFINEDPROPS; i++) + AddAvailableProperty(it8, PredefinedProperties[i].id, PredefinedProperties[i].as); + + for (i=0; i < NUMPREDEFINEDSAMPLEID; i++) + AddAvailableSampleID(it8, PredefinedSampleID[i]); + + + return (LCMSHANDLE) it8; +} + + +const char* LCMSEXPORT cmsIT8GetSheetType(LCMSHANDLE hIT8) +{ + LPIT8 it8 = (LPIT8) hIT8; + + return it8 ->SheetType; + +} + +LCMSBOOL LCMSEXPORT cmsIT8SetSheetType(LCMSHANDLE hIT8, const char* Type) +{ + LPIT8 it8 = (LPIT8) hIT8; + + strncpy(it8 ->SheetType, Type, MAXSTR-1); + it8 ->SheetType[MAXSTR-1] = 0; + return TRUE; +} + +LCMSBOOL LCMSEXPORT cmsIT8SetComment(LCMSHANDLE hIT8, const char* Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + + if (!Val) return FALSE; + if (!*Val) return FALSE; + + return AddToList(it8, &GetTable(it8)->HeaderList, "# ", NULL, Val, WRITE_UNCOOKED) != NULL; +} + + + +// Sets a property +LCMSBOOL LCMSEXPORT cmsIT8SetPropertyStr(LCMSHANDLE hIT8, const char* Key, const char *Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + + if (!Val) return FALSE; + if (!*Val) return FALSE; + + return AddToList(it8, &GetTable(it8)->HeaderList, Key, NULL, Val, WRITE_STRINGIFY) != NULL; +} + + +LCMSBOOL LCMSEXPORT cmsIT8SetPropertyDbl(LCMSHANDLE hIT8, const char* cProp, double Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + char Buffer[1024]; + + sprintf(Buffer, it8->DoubleFormatter, Val); + + return AddToList(it8, &GetTable(it8)->HeaderList, cProp, NULL, Buffer, WRITE_UNCOOKED) != NULL; +} + +LCMSBOOL LCMSEXPORT cmsIT8SetPropertyHex(LCMSHANDLE hIT8, const char* cProp, int Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + char Buffer[1024]; + + sprintf(Buffer, "%d", Val); + + return AddToList(it8, &GetTable(it8)->HeaderList, cProp, NULL, Buffer, WRITE_HEXADECIMAL) != NULL; +} + +LCMSBOOL LCMSEXPORT cmsIT8SetPropertyUncooked(LCMSHANDLE hIT8, const char* Key, const char* Buffer) +{ + LPIT8 it8 = (LPIT8) hIT8; + + return AddToList(it8, &GetTable(it8)->HeaderList, Key, NULL, Buffer, WRITE_UNCOOKED) != NULL; +} + +LCMSBOOL LCMSEXPORT cmsIT8SetPropertyMulti(LCMSHANDLE hIT8, const char* Key, const char* SubKey, const char *Buffer) +{ + LPIT8 it8 = (LPIT8) hIT8; + + return AddToList(it8, &GetTable(it8)->HeaderList, Key, SubKey, Buffer, WRITE_PAIR) != NULL; +} + +// Gets a property +const char* LCMSEXPORT cmsIT8GetProperty(LCMSHANDLE hIT8, const char* Key) +{ + LPIT8 it8 = (LPIT8) hIT8; + LPKEYVALUE p; + + if (IsAvailableOnList(GetTable(it8) -> HeaderList, Key, NULL, &p)) + { + return p -> Value; + } + return NULL; +} + + +double LCMSEXPORT cmsIT8GetPropertyDbl(LCMSHANDLE hIT8, const char* cProp) +{ + const char *v = cmsIT8GetProperty(hIT8, cProp); + + if (v) return atof(v); + else return 0.0; +} + +const char* LCMSEXPORT cmsIT8GetPropertyMulti(LCMSHANDLE hIT8, const char* Key, const char *SubKey) +{ + LPIT8 it8 = (LPIT8) hIT8; + LPKEYVALUE p; + + if (IsAvailableOnList(GetTable(it8) -> HeaderList, Key, SubKey, &p)) + { + return p -> Value; + } + return NULL; +} + +// ----------------------------------------------------------------- Datasets + + +static +void AllocateDataFormat(LPIT8 it8) +{ + LPTABLE t = GetTable(it8); + + if (t -> DataFormat) return; // Already allocated + + t -> nSamples = (int) cmsIT8GetPropertyDbl(it8, "NUMBER_OF_FIELDS"); + + if (t -> nSamples <= 0) { + + SynError(it8, "AllocateDataFormat: Unknown NUMBER_OF_FIELDS"); + t -> nSamples = 10; + } + + t -> DataFormat = (char**) AllocChunk (it8, (t->nSamples + 1) * sizeof(char *)); + if (t->DataFormat == NULL) + { + SynError(it8, "AllocateDataFormat: Unable to allocate dataFormat array"); + } + +} + +static +const char *GetDataFormat(LPIT8 it8, int n) +{ + LPTABLE t = GetTable(it8); + + if (t->DataFormat) + return t->DataFormat[n]; + + return NULL; +} + +static +LCMSBOOL SetDataFormat(LPIT8 it8, int n, const char *label) +{ + LPTABLE t = GetTable(it8); + +#ifdef STRICT_CGATS + if (!IsAvailableOnList(it8-> ValidSampleID, label, NULL, NULL)) { + SynError(it8, "Invalid data format '%s'.", label); + return FALSE; + } +#endif + + if (!t->DataFormat) + AllocateDataFormat(it8); + + if (n > t -> nSamples) { + SynError(it8, "More than NUMBER_OF_FIELDS fields."); + return FALSE; + } + + + if (t->DataFormat) { + t->DataFormat[n] = AllocString(it8, label); + } + + return TRUE; +} + + +LCMSBOOL LCMSEXPORT cmsIT8SetDataFormat(LCMSHANDLE h, int n, const char *Sample) +{ + LPIT8 it8 = (LPIT8) h; + return SetDataFormat(it8, n, Sample); +} + +static +void AllocateDataSet(LPIT8 it8) +{ + LPTABLE t = GetTable(it8); + + if (t -> Data) return; // Already allocated + + t-> nSamples = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS")); + t-> nPatches = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS")); + + t-> Data = (char**)AllocChunk (it8, (t->nSamples + 1) * (t->nPatches + 1) *sizeof (char*)); + if (t->Data == NULL) + { + SynError(it8, "AllocateDataSet: Unable to allocate data array"); + } + +} + +static +char* GetData(LPIT8 it8, int nSet, int nField) +{ + LPTABLE t = GetTable(it8); + int nSamples = t -> nSamples; + int nPatches = t -> nPatches; + + + if (nSet >= nPatches || nField >= nSamples) + return NULL; + + if (!t->Data) return NULL; + return t->Data [nSet * nSamples + nField]; +} + +static +LCMSBOOL SetData(LPIT8 it8, int nSet, int nField, const char *Val) +{ + LPTABLE t = GetTable(it8); + + if (!t->Data) + AllocateDataSet(it8); + + if (!t->Data) return FALSE; + + + + if (nSet > t -> nPatches || nSet < 0) { + + return SynError(it8, "Patch %d out of range, there are %d patches", nSet, t -> nPatches); + } + + if (nField > t ->nSamples || nField < 0) { + return SynError(it8, "Sample %d out of range, there are %d samples", nField, t ->nSamples); + + } + + + t->Data [nSet * t -> nSamples + nField] = AllocString(it8, Val); + return TRUE; +} + + +// --------------------------------------------------------------- File I/O + + +// Writes a string to file +static +void WriteStr(LPSAVESTREAM f, const char *str) +{ + + size_t len; + + if (str == NULL) + str = " "; + + // Lenghth to write + len = strlen(str); + f ->Used += len; + + + if (f ->stream) { // Should I write it to a file? + + fwrite(str, 1, len, f->stream); + + } + else { // Or to a memory block? + + + if (f ->Base) { // Am I just counting the bytes? + + if (f ->Used > f ->Max) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Write to memory overflows in CGATS parser"); + return; + } + + CopyMemory(f ->Ptr, str, len); + f->Ptr += len; + + } + + } +} + + +// Write formatted + +static +void Writef(LPSAVESTREAM f, const char* frm, ...) +{ + char Buffer[4096]; + va_list args; + + va_start(args, frm); + vsnprintf(Buffer, 4095, frm, args); + Buffer[4095] = 0; + WriteStr(f, Buffer); + va_end(args); + +} + +// Writes full header +static +void WriteHeader(LPIT8 it8, LPSAVESTREAM fp) +{ + LPKEYVALUE p; + LPTABLE t = GetTable(it8); + + + for (p = t->HeaderList; (p != NULL); p = p->Next) + { + if (*p ->Keyword == '#') { + + char* Pt; + + WriteStr(fp, "#\n# "); + for (Pt = p ->Value; *Pt; Pt++) { + + + Writef(fp, "%c", *Pt); + + if (*Pt == '\n') { + WriteStr(fp, "# "); + } + } + + WriteStr(fp, "\n#\n"); + continue; + } + + + if (!IsAvailableOnList(it8-> ValidKeywords, p->Keyword, NULL, NULL)) { + +#ifdef STRICT_CGATS + WriteStr(fp, "KEYWORD\t\""); + WriteStr(fp, p->Keyword); + WriteStr(fp, "\"\n"); +#endif + + AddAvailableProperty(it8, p->Keyword, WRITE_UNCOOKED); + + } + + WriteStr(fp, p->Keyword); + if (p->Value) { + + switch (p ->WriteAs) { + + case WRITE_UNCOOKED: + Writef(fp, "\t%s", p ->Value); + break; + + case WRITE_STRINGIFY: + Writef(fp, "\t\"%s\"", p->Value ); + break; + + case WRITE_HEXADECIMAL: + Writef(fp, "\t0x%X", atoi(p ->Value)); + break; + + case WRITE_BINARY: + Writef(fp, "\t0x%B", atoi(p ->Value)); + break; + + case WRITE_PAIR: + Writef(fp, "\t\"%s,%s\"", p->Subkey, p->Value); + break; + + default: SynError(it8, "Unknown write mode %d", p ->WriteAs); + return; + } + } + + WriteStr (fp, "\n"); + } + +} + + +// Writes the data format +static +void WriteDataFormat(LPSAVESTREAM fp, LPIT8 it8) +{ + int i, nSamples; + LPTABLE t = GetTable(it8); + + if (!t -> DataFormat) return; + + WriteStr(fp, "BEGIN_DATA_FORMAT\n"); + WriteStr(fp, " "); + nSamples = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS")); + + for (i = 0; i < nSamples; i++) { + + WriteStr(fp, t->DataFormat[i]); + WriteStr(fp, ((i == (nSamples-1)) ? "\n" : "\t")); + } + + WriteStr (fp, "END_DATA_FORMAT\n"); +} + + +// Writes data array +static +void WriteData(LPSAVESTREAM fp, LPIT8 it8) +{ + int i, j; + LPTABLE t = GetTable(it8); + + if (!t->Data) return; + + WriteStr (fp, "BEGIN_DATA\n"); + + t->nPatches = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS")); + + for (i = 0; i < t-> nPatches; i++) { + + WriteStr(fp, " "); + + for (j = 0; j < t->nSamples; j++) { + + char *ptr = t->Data[i*t->nSamples+j]; + + if (ptr == NULL) WriteStr(fp, "\"\""); + else { + // If value contains whitespace, enclose within quote + + if (strchr(ptr, ' ') != NULL) { + + WriteStr(fp, "\""); + WriteStr(fp, ptr); + WriteStr(fp, "\""); + } + else + WriteStr(fp, ptr); + } + + WriteStr(fp, ((j == (t->nSamples-1)) ? "\n" : "\t")); + } + } + WriteStr (fp, "END_DATA\n"); +} + + + +// Saves whole file +LCMSBOOL LCMSEXPORT cmsIT8SaveToFile(LCMSHANDLE hIT8, const char* cFileName) +{ + SAVESTREAM sd; + int i; + LPIT8 it8 = (LPIT8) hIT8; + + ZeroMemory(&sd, sizeof(SAVESTREAM)); + + sd.stream = fopen(cFileName, "wt"); + if (!sd.stream) return FALSE; + + WriteStr(&sd, it8->SheetType); + WriteStr(&sd, "\n"); + for (i=0; i < it8 ->TablesCount; i++) { + + cmsIT8SetTable(hIT8, i); + WriteHeader(it8, &sd); + WriteDataFormat(&sd, it8); + WriteData(&sd, it8); + } + + fclose(sd.stream); + + return TRUE; +} + + +// Saves to memory +LCMSBOOL LCMSEXPORT cmsIT8SaveToMem(LCMSHANDLE hIT8, void *MemPtr, size_t* BytesNeeded) +{ + SAVESTREAM sd; + int i; + LPIT8 it8 = (LPIT8) hIT8; + + ZeroMemory(&sd, sizeof(SAVESTREAM)); + + sd.stream = NULL; + sd.Base = (LPBYTE) MemPtr; + sd.Ptr = sd.Base; + + sd.Used = 0; + + if (sd.Base) + sd.Max = *BytesNeeded; // Write to memory? + else + sd.Max = 0; // Just counting the needed bytes + + WriteStr(&sd, it8->SheetType); + WriteStr(&sd, "\n"); + for (i=0; i < it8 ->TablesCount; i++) { + + cmsIT8SetTable(hIT8, i); + WriteHeader(it8, &sd); + WriteDataFormat(&sd, it8); + WriteData(&sd, it8); + } + + sd.Used++; // The \0 at the very end + + if (sd.Base) + sd.Ptr = 0; + + *BytesNeeded = sd.Used; + + return TRUE; +} + + +// -------------------------------------------------------------- Higer level parsing + +static +LCMSBOOL DataFormatSection(LPIT8 it8) +{ + int iField = 0; + LPTABLE t = GetTable(it8); + + InSymbol(it8); // Eats "BEGIN_DATA_FORMAT" + CheckEOLN(it8); + + while (it8->sy != SEND_DATA_FORMAT && + it8->sy != SEOLN && + it8->sy != SEOF && + it8->sy != SSYNERROR) { + + if (it8->sy != SIDENT) { + + return SynError(it8, "Sample type expected"); + } + + if (!SetDataFormat(it8, iField, it8->id)) return FALSE; + iField++; + + InSymbol(it8); + SkipEOLN(it8); + } + + SkipEOLN(it8); + Skip(it8, SEND_DATA_FORMAT); + SkipEOLN(it8); + + if (iField != t ->nSamples) { + SynError(it8, "Count mismatch. NUMBER_OF_FIELDS was %d, found %d\n", t ->nSamples, iField); + + + } + + return TRUE; +} + + + +static +LCMSBOOL DataSection (LPIT8 it8) +{ + int iField = 0; + int iSet = 0; + char Buffer[MAXSTR]; + LPTABLE t = GetTable(it8); + + InSymbol(it8); // Eats "BEGIN_DATA" + CheckEOLN(it8); + + if (!t->Data) + AllocateDataSet(it8); + + while (it8->sy != SEND_DATA && it8->sy != SEOF) + { + if (iField >= t -> nSamples) { + iField = 0; + iSet++; + + } + + if (it8->sy != SEND_DATA && it8->sy != SEOF) { + + if (!GetVal(it8, Buffer, 255, "Sample data expected")) + return FALSE; + + if (!SetData(it8, iSet, iField, Buffer)) + return FALSE; + + iField++; + + InSymbol(it8); + SkipEOLN(it8); + } + } + + SkipEOLN(it8); + Skip(it8, SEND_DATA); + SkipEOLN(it8); + + // Check for data completion. + + if ((iSet+1) != t -> nPatches) + return SynError(it8, "Count mismatch. NUMBER_OF_SETS was %d, found %d\n", t ->nPatches, iSet+1); + + return TRUE; +} + + + + +static +LCMSBOOL HeaderSection(LPIT8 it8) +{ + char VarName[MAXID]; + char Buffer[MAXSTR]; + LPKEYVALUE Key; + + while (it8->sy != SEOF && + it8->sy != SSYNERROR && + it8->sy != SBEGIN_DATA_FORMAT && + it8->sy != SBEGIN_DATA) { + + + switch (it8 -> sy) { + + case SKEYWORD: + InSymbol(it8); + if (!GetVal(it8, Buffer, MAXSTR-1, "Keyword expected")) return FALSE; + if (!AddAvailableProperty(it8, Buffer, WRITE_UNCOOKED)) return FALSE; + InSymbol(it8); + break; + + + case SDATA_FORMAT_ID: + InSymbol(it8); + if (!GetVal(it8, Buffer, MAXSTR-1, "Keyword expected")) return FALSE; + if (!AddAvailableSampleID(it8, Buffer)) return FALSE; + InSymbol(it8); + break; + + + case SIDENT: + strncpy(VarName, it8->id, MAXID-1); + VarName[MAXID-1] = 0; + + if (!IsAvailableOnList(it8-> ValidKeywords, VarName, NULL, &Key)) { + +#ifdef STRICT_CGATS + return SynError(it8, "Undefined keyword '%s'", VarName); +#else + Key = AddAvailableProperty(it8, VarName, WRITE_UNCOOKED); + if (Key == NULL) return FALSE; +#endif + } + + InSymbol(it8); + if (!GetVal(it8, Buffer, MAXSTR-1, "Property data expected")) return FALSE; + + if(Key->WriteAs != WRITE_PAIR) { + AddToList(it8, &GetTable(it8)->HeaderList, VarName, NULL, Buffer, + (it8->sy == SSTRING) ? WRITE_STRINGIFY : WRITE_UNCOOKED); + } + else { + const char *Subkey; + char *Nextkey; + if (it8->sy != SSTRING) + return SynError(it8, "Invalid value '%s' for property '%s'.", Buffer, VarName); + + // chop the string as a list of "subkey, value" pairs, using ';' as a separator + for(Subkey = Buffer; Subkey != NULL; Subkey = Nextkey) + { + char *Value, *temp; + + // identify token pair boundary + Nextkey = (char*) strchr(Subkey, ';'); + if(Nextkey) + *Nextkey++ = '\0'; + + // for each pair, split the subkey and the value + Value = (char*) strrchr(Subkey, ','); + if(Value == NULL) + return SynError(it8, "Invalid value for property '%s'.", VarName); + + // gobble the spaces before the coma, and the coma itself + temp = Value++; + do *temp-- = '\0'; while(temp >= Subkey && *temp == ' '); + + // gobble any space at the right + temp = Value + strlen(Value) - 1; + while(*temp == ' ') *temp-- = '\0'; + + // trim the strings from the left + Subkey += strspn(Subkey, " "); + Value += strspn(Value, " "); + + if(Subkey[0] == 0 || Value[0] == 0) + return SynError(it8, "Invalid value for property '%s'.", VarName); + AddToList(it8, &GetTable(it8)->HeaderList, VarName, Subkey, Value, WRITE_PAIR); + } + } + + InSymbol(it8); + break; + + + case SEOLN: break; + + default: + return SynError(it8, "expected keyword or identifier"); + } + + SkipEOLN(it8); + } + + return TRUE; + +} + + +static +LCMSBOOL ParseIT8(LPIT8 it8, LCMSBOOL nosheet) +{ + char* SheetTypePtr = it8 ->SheetType; + + if (nosheet == 0) { + + // First line is a very special case. + + while (isseparator(it8->ch)) + NextCh(it8); + + while (it8->ch != '\r' && it8 ->ch != '\n' && it8->ch != '\t' && it8 -> ch != -1) { + + *SheetTypePtr++= (char) it8 ->ch; + NextCh(it8); + } + } + + *SheetTypePtr = 0; + InSymbol(it8); + + SkipEOLN(it8); + + while (it8-> sy != SEOF && + it8-> sy != SSYNERROR) { + + switch (it8 -> sy) { + + case SBEGIN_DATA_FORMAT: + if (!DataFormatSection(it8)) return FALSE; + break; + + case SBEGIN_DATA: + + if (!DataSection(it8)) return FALSE; + + if (it8 -> sy != SEOF) { + + AllocTable(it8); + it8 ->nTable = it8 ->TablesCount - 1; + } + break; + + case SEOLN: + SkipEOLN(it8); + break; + + default: + if (!HeaderSection(it8)) return FALSE; + } + + } + + return (it8 -> sy != SSYNERROR); +} + + + +// Init usefull pointers + +static +void CookPointers(LPIT8 it8) +{ + int idField, i; + char* Fld; + int j; + int nOldTable = it8 ->nTable; + + for (j=0; j < it8 ->TablesCount; j++) { + + LPTABLE t = it8 ->Tab + j; + + t -> SampleID = 0; + it8 ->nTable = j; + + for (idField = 0; idField < t -> nSamples; idField++) + { + if (t ->DataFormat == NULL) { + SynError(it8, "Undefined DATA_FORMAT"); + return; + + } + + Fld = t->DataFormat[idField]; + if (!Fld) continue; + + + if (stricmp(Fld, "SAMPLE_ID") == 0) { + + t -> SampleID = idField; + + for (i=0; i < t -> nPatches; i++) { + + char *Data = GetData(it8, i, idField); + if (Data) { + char Buffer[256]; + + strncpy(Buffer, Data, 255); + Buffer[255] = 0; + + if (strlen(Buffer) <= strlen(Data)) + strcpy(Data, Buffer); + else + SetData(it8, i, idField, Buffer); + + } + } + + } + + // "LABEL" is an extension. It keeps references to forward tables + + if ((stricmp(Fld, "LABEL") == 0) || Fld[0] == '$' ) { + + // Search for table references... + for (i=0; i < t -> nPatches; i++) { + + char *Label = GetData(it8, i, idField); + + if (Label) { + + int k; + + // This is the label, search for a table containing + // this property + + for (k=0; k < it8 ->TablesCount; k++) { + + LPTABLE Table = it8 ->Tab + k; + LPKEYVALUE p; + + if (IsAvailableOnList(Table->HeaderList, Label, NULL, &p)) { + + // Available, keep type and table + char Buffer[256]; + + char *Type = p ->Value; + int nTable = k; + + snprintf(Buffer, 255, "%s %d %s", Label, nTable, Type ); + + SetData(it8, i, idField, Buffer); + } + } + + + } + + } + + + } + + } + } + + it8 ->nTable = nOldTable; +} + +// Try to infere if the file is a CGATS/IT8 file at all. Read first line +// that should be something like some printable characters plus a \n + +static +int IsMyBlock(LPBYTE Buffer, size_t n) +{ + int cols = 1, space = 0, quot = 0; + size_t i; + + if (n < 10) return FALSE; // Too small + + if (n > 132) + n = 132; + + for (i = 1; i < n; i++) { + + switch(Buffer[i]) + { + case '\n': + case '\r': + return quot == 1 || cols > 2 ? 0 : cols; + case '\t': + case ' ': + if(!quot && !space) + space = 1; + break; + case '\"': + quot = !quot; + break; + default: + if (Buffer[i] < 32) return 0; + if (Buffer[i] > 127) return 0; + cols += space; + space = 0; + break; + } + } + + return FALSE; + +} + + +static +int IsMyFile(const char* FileName) +{ + FILE *fp; + size_t Size; + BYTE Ptr[133]; + + fp = fopen(FileName, "rt"); + if (!fp) { + cmsSignalError(LCMS_ERRC_ABORTED, "File '%s' not found", FileName); + return FALSE; + } + + Size = fread(Ptr, 1, 132, fp); + fclose(fp); + + Ptr[Size] = '\0'; + + return IsMyBlock(Ptr, Size); +} + +// ---------------------------------------------------------- Exported routines + + +LCMSHANDLE LCMSEXPORT cmsIT8LoadFromMem(void *Ptr, size_t len) +{ + LCMSHANDLE hIT8; + LPIT8 it8; + + int type = IsMyBlock((LPBYTE) Ptr, len); + if (type == 0) return NULL; + + hIT8 = cmsIT8Alloc(); + if (!hIT8) return NULL; + + it8 = (LPIT8) hIT8; + it8 ->MemoryBlock = (char*) _cmsMalloc(len + 1); + + strncpy(it8 ->MemoryBlock, (const char*) Ptr, len); + it8 ->MemoryBlock[len] = 0; + + strncpy(it8->FileStack[0]->FileName, "", MAX_PATH-1); + it8-> Source = it8 -> MemoryBlock; + + if (!ParseIT8(it8, type-1)) { + + cmsIT8Free(hIT8); + return FALSE; + } + + CookPointers(it8); + it8 ->nTable = 0; + + _cmsFree(it8->MemoryBlock); + it8 -> MemoryBlock = NULL; + + return hIT8; + + +} + + +LCMSHANDLE LCMSEXPORT cmsIT8LoadFromFile(const char* cFileName) +{ + + LCMSHANDLE hIT8; + LPIT8 it8; + + int type = IsMyFile(cFileName); + if (type == 0) return NULL; + + hIT8 = cmsIT8Alloc(); + it8 = (LPIT8) hIT8; + if (!hIT8) return NULL; + + + it8 ->FileStack[0]->Stream = fopen(cFileName, "rt"); + + if (!it8 ->FileStack[0]->Stream) { + cmsIT8Free(hIT8); + return NULL; + } + + + strncpy(it8->FileStack[0]->FileName, cFileName, MAX_PATH-1); + it8->FileStack[0]->FileName[MAX_PATH-1] = 0; + + if (!ParseIT8(it8, type-1)) { + + fclose(it8 ->FileStack[0]->Stream); + cmsIT8Free(hIT8); + return NULL; + } + + CookPointers(it8); + it8 ->nTable = 0; + + fclose(it8 ->FileStack[0]->Stream); + return hIT8; + +} + +int LCMSEXPORT cmsIT8EnumDataFormat(LCMSHANDLE hIT8, char ***SampleNames) +{ + LPIT8 it8 = (LPIT8) hIT8; + LPTABLE t = GetTable(it8); + + *SampleNames = t -> DataFormat; + return t -> nSamples; +} + + +int LCMSEXPORT cmsIT8EnumProperties(LCMSHANDLE hIT8, const char ***PropertyNames) +{ + LPIT8 it8 = (LPIT8) hIT8; + LPKEYVALUE p; + int n; + const char **Props; + LPTABLE t = GetTable(it8); + + // Pass#1 - count properties + + n = 0; + for (p = t -> HeaderList; p != NULL; p = p->Next) { + n++; + } + + + Props = (const char **) AllocChunk(it8, sizeof(char *) * n); + + // Pass#2 - Fill pointers + n = 0; + for (p = t -> HeaderList; p != NULL; p = p->Next) { + Props[n++] = p -> Keyword; + } + + *PropertyNames = Props; + return n; +} + +int LCMSEXPORT cmsIT8EnumPropertyMulti(LCMSHANDLE hIT8, const char* cProp, const char ***SubpropertyNames) +{ + LPIT8 it8 = (LPIT8) hIT8; + LPKEYVALUE p, tmp; + int n; + const char **Props; + LPTABLE t = GetTable(it8); + + if(!IsAvailableOnList(t->HeaderList, cProp, NULL, &p)) { + *SubpropertyNames = 0; + return 0; + } + + // Pass#1 - count properties + + n = 0; + for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { + if(tmp->Subkey != NULL) + n++; + } + + + Props = (const char **) AllocChunk(it8, sizeof(char *) * n); + + // Pass#2 - Fill pointers + n = 0; + for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { + if(tmp->Subkey != NULL) + Props[n++] = p ->Subkey; + } + + *SubpropertyNames = Props; + return n; +} + +static +int LocatePatch(LPIT8 it8, const char* cPatch) +{ + int i; + const char *data; + LPTABLE t = GetTable(it8); + + for (i=0; i < t-> nPatches; i++) { + + data = GetData(it8, i, t->SampleID); + + if (data != NULL) { + + if (stricmp(data, cPatch) == 0) + return i; + } + } + + // SynError(it8, "Couldn't find patch '%s'\n", cPatch); + return -1; +} + + +static +int LocateEmptyPatch(LPIT8 it8) +{ + int i; + const char *data; + LPTABLE t = GetTable(it8); + + for (i=0; i < t-> nPatches; i++) { + + data = GetData(it8, i, t->SampleID); + + if (data == NULL) + return i; + + } + + return -1; +} + +static +int LocateSample(LPIT8 it8, const char* cSample) +{ + int i; + const char *fld; + LPTABLE t = GetTable(it8); + + for (i=0; i < t->nSamples; i++) { + + fld = GetDataFormat(it8, i); + if (stricmp(fld, cSample) == 0) + return i; + } + + + // SynError(it8, "Couldn't find data field %s\n", cSample); + return -1; + +} + + +int LCMSEXPORT cmsIT8GetDataFormat(LCMSHANDLE hIT8, const char* cSample) +{ + LPIT8 it8 = (LPIT8) hIT8; + return LocateSample(it8, cSample); +} + + + +const char* LCMSEXPORT cmsIT8GetDataRowCol(LCMSHANDLE hIT8, int row, int col) +{ + LPIT8 it8 = (LPIT8) hIT8; + + return GetData(it8, row, col); +} + + +double LCMSEXPORT cmsIT8GetDataRowColDbl(LCMSHANDLE hIT8, int row, int col) +{ + const char* Buffer; + + Buffer = cmsIT8GetDataRowCol(hIT8, row, col); + + if (Buffer) { + + return atof(Buffer); + + } else + return 0; + +} + + +LCMSBOOL LCMSEXPORT cmsIT8SetDataRowCol(LCMSHANDLE hIT8, int row, int col, const char* Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + + return SetData(it8, row, col, Val); +} + + +LCMSBOOL LCMSEXPORT cmsIT8SetDataRowColDbl(LCMSHANDLE hIT8, int row, int col, double Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + char Buff[256]; + + sprintf(Buff, it8->DoubleFormatter, Val); + + return SetData(it8, row, col, Buff); +} + + + +const char* LCMSEXPORT cmsIT8GetData(LCMSHANDLE hIT8, const char* cPatch, const char* cSample) +{ + LPIT8 it8 = (LPIT8) hIT8; + int iField, iSet; + + + iField = LocateSample(it8, cSample); + if (iField < 0) { + return NULL; + } + + + iSet = LocatePatch(it8, cPatch); + if (iSet < 0) { + return NULL; + } + + return GetData(it8, iSet, iField); +} + + +double LCMSEXPORT cmsIT8GetDataDbl(LCMSHANDLE it8, const char* cPatch, const char* cSample) +{ + const char* Buffer; + + Buffer = cmsIT8GetData(it8, cPatch, cSample); + + if (Buffer) { + + return atof(Buffer); + + } else { + + return 0; + } +} + + + +LCMSBOOL LCMSEXPORT cmsIT8SetData(LCMSHANDLE hIT8, const char* cPatch, + const char* cSample, + const char *Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + int iField, iSet; + LPTABLE t = GetTable(it8); + + + iField = LocateSample(it8, cSample); + + if (iField < 0) + return FALSE; + + + + if (t-> nPatches == 0) { + + AllocateDataFormat(it8); + AllocateDataSet(it8); + CookPointers(it8); + } + + + if (stricmp(cSample, "SAMPLE_ID") == 0) + { + + iSet = LocateEmptyPatch(it8); + if (iSet < 0) { + return SynError(it8, "Couldn't add more patches '%s'\n", cPatch); + } + + iField = t -> SampleID; + } + else { + iSet = LocatePatch(it8, cPatch); + if (iSet < 0) { + return FALSE; + } + } + + return SetData(it8, iSet, iField, Val); +} + + +LCMSBOOL LCMSEXPORT cmsIT8SetDataDbl(LCMSHANDLE hIT8, const char* cPatch, + const char* cSample, + double Val) +{ + LPIT8 it8 = (LPIT8) hIT8; + char Buff[256]; + + snprintf(Buff, 255, it8->DoubleFormatter, Val); + return cmsIT8SetData(hIT8, cPatch, cSample, Buff); + +} + +// Buffer should get MAXSTR at least + +const char* LCMSEXPORT cmsIT8GetPatchName(LCMSHANDLE hIT8, int nPatch, char* buffer) +{ + LPIT8 it8 = (LPIT8) hIT8; + LPTABLE t = GetTable(it8); + char* Data = GetData(it8, nPatch, t->SampleID); + + if (!Data) return NULL; + if (!buffer) return Data; + + strncpy(buffer, Data, MAXSTR-1); + buffer[MAXSTR-1] = 0; + return buffer; +} + +int LCMSEXPORT cmsIT8GetPatchByName(LCMSHANDLE hIT8, const char *cPatch) +{ + return LocatePatch((LPIT8)hIT8, cPatch); +} + +int LCMSEXPORT cmsIT8TableCount(LCMSHANDLE hIT8) +{ + LPIT8 it8 = (LPIT8) hIT8; + + return it8 ->TablesCount; +} + +// This handles the "LABEL" extension. +// Label, nTable, Type + +int LCMSEXPORT cmsIT8SetTableByLabel(LCMSHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType) +{ + const char* cLabelFld; + char Type[256], Label[256]; + int nTable; + + if (cField != NULL && *cField == 0) + cField = "LABEL"; + + if (cField == NULL) + cField = "LABEL"; + + cLabelFld = cmsIT8GetData(hIT8, cSet, cField); + if (!cLabelFld) return -1; + + if (sscanf(cLabelFld, "%255s %d %255s", Label, &nTable, Type) != 3) + return -1; + + if (ExpectedType != NULL && *ExpectedType == 0) + ExpectedType = NULL; + + if (ExpectedType) { + + if (stricmp(Type, ExpectedType) != 0) return -1; + } + + return cmsIT8SetTable(hIT8, nTable); +} + + +LCMSBOOL LCMSEXPORT cmsIT8SetIndexColumn(LCMSHANDLE hIT8, const char* cSample) +{ + LPIT8 it8 = (LPIT8) hIT8; + + int pos = LocateSample(it8, cSample); + if(pos == -1) + return FALSE; + + it8->Tab[it8->nTable].SampleID = pos; + return TRUE; +} + + +void LCMSEXPORT cmsIT8DefineDblFormat(LCMSHANDLE hIT8, const char* Formatter) +{ + LPIT8 it8 = (LPIT8) hIT8; + + if (Formatter == NULL) + strcpy(it8->DoubleFormatter, DEFAULT_DBL_FORMAT); + else + strcpy(it8->DoubleFormatter, Formatter); +} + diff --git a/icc2ps/cmscnvrt.c b/icc2ps/cmscnvrt.c new file mode 100644 index 0000000..7a4b23d --- /dev/null +++ b/icc2ps/cmscnvrt.c @@ -0,0 +1,637 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include "lcms.h" + + + + +/* + This module provides conversion stages for handling intents. + +The chain of evaluation in a transform is: + + PCS1 PCS2 PCS3 PCS4 + +|From | |From | |Conversion | |Preview | |Gamut | |Conversion | |To | |To | +|Input|->|Device|->|Stage 1 |->|handling|->|Checking|->|Stage 2 |->|Device|->|output | + +-------- ------- ------------- --------- ---------- ------------- ------- --------- + + AToB0 prew0 gamut BToA0 +Formatting LUT Adjusting LUT LUT Adjusting LUT Formatting + Intent Intent 1 intent intent Intent 2 Intent + + +Some of these LUT may be missing + +There are two intents involved here, the intent of the transform itself, and the +intent the proof is being done, if is the case. Since the first intent is to be +applied to preview, is the proofing intent. The second intent identifies the +transform intent. Input data of any stage is taked as relative colorimetric +always. + + +NOTES: V4 states than perceptual & saturation intents between mixed v2 & v4 profiles should +scale PCS from a black point equal to ZERO in v2 profiles to the reference media black of +perceptual v4 PCS. Since I found many v2 profiles to be using a perceptual intent with black +point not zero at all, I'm implementing that as a black point compensation from whatever +black from perceptal intent to the reference media black for v4 profiles. + +*/ + + + + +int cdecl cmsChooseCnvrt(int Absolute, + int Phase1, LPcmsCIEXYZ BlackPointIn, + LPcmsCIEXYZ WhitePointIn, + LPcmsCIEXYZ IlluminantIn, + LPMAT3 ChromaticAdaptationMatrixIn, + + int Phase2, LPcmsCIEXYZ BlackPointOut, + LPcmsCIEXYZ WhitePointOut, + LPcmsCIEXYZ IlluminantOut, + LPMAT3 ChromaticAdaptationMatrixOut, + + int DoBlackPointCompensation, + double AdaptationState, + _cmsADJFN *fn1, + LPWMAT3 wm, LPWVEC3 wof); + + +// ------------------------------------------------------------------------- + +// D50 - Widely used + +LCMSAPI LPcmsCIEXYZ LCMSEXPORT cmsD50_XYZ(void) +{ + static cmsCIEXYZ D50XYZ = {D50X, D50Y, D50Z}; + + return &D50XYZ; +} + +LCMSAPI LPcmsCIExyY LCMSEXPORT cmsD50_xyY(void) +{ + static cmsCIExyY D50xyY; + cmsXYZ2xyY(&D50xyY, cmsD50_XYZ()); + + return &D50xyY; +} + + +// ---------------- From LUT to LUT -------------------------- + + +// Calculate m, offset Relativ -> Absolute undoing any chromatic +// adaptation done by the profile. + +#ifdef _MSC_VER +#pragma warning(disable : 4100 4505) +#endif + + + +// join scalings to obtain: +// relative input to absolute and then to relative output + +static +void Rel2RelStepAbsCoefs(double AdaptationState, + + LPcmsCIEXYZ BlackPointIn, + LPcmsCIEXYZ WhitePointIn, + LPcmsCIEXYZ IlluminantIn, + LPMAT3 ChromaticAdaptationMatrixIn, + + LPcmsCIEXYZ BlackPointOut, + LPcmsCIEXYZ WhitePointOut, + LPcmsCIEXYZ IlluminantOut, + LPMAT3 ChromaticAdaptationMatrixOut, + + LPMAT3 m, LPVEC3 of) +{ + + VEC3 WtPtIn, WtPtInAdapted; + VEC3 WtPtOut, WtPtOutAdapted; + MAT3 Scale, m1, m2, m3; + + VEC3init(&WtPtIn, WhitePointIn->X, WhitePointIn->Y, WhitePointIn->Z); + MAT3eval(&WtPtInAdapted, ChromaticAdaptationMatrixIn, &WtPtIn); + + VEC3init(&WtPtOut, WhitePointOut->X, WhitePointOut->Y, WhitePointOut->Z); + MAT3eval(&WtPtOutAdapted, ChromaticAdaptationMatrixOut, &WtPtOut); + + VEC3init(&Scale.v[0], WtPtInAdapted.n[0] / WtPtOutAdapted.n[0], 0, 0); + VEC3init(&Scale.v[1], 0, WtPtInAdapted.n[1] / WtPtOutAdapted.n[1], 0); + VEC3init(&Scale.v[2], 0, 0, WtPtInAdapted.n[2] / WtPtOutAdapted.n[2]); + + + // Adaptation state + + if (AdaptationState == 1.0) { + + // Observer is fully adapted. Keep chromatic adaptation + + CopyMemory(m, &Scale, sizeof(MAT3)); + + } + else { + + // Observer is not adapted, undo the chromatic adaptation + m1 = *ChromaticAdaptationMatrixIn; + MAT3inverse(&m1, &m2); + + MAT3per(&m3, &m2, &Scale); + MAT3per(m, &m3, ChromaticAdaptationMatrixOut); + } + + + VEC3init(of, 0.0, 0.0, 0.0); + +} + + +// The (in)famous black point compensation. Right now implemented as +// a linear scaling in XYZ + +static +void ComputeBlackPointCompensationFactors(LPcmsCIEXYZ BlackPointIn, + LPcmsCIEXYZ WhitePointIn, + LPcmsCIEXYZ IlluminantIn, + LPcmsCIEXYZ BlackPointOut, + LPcmsCIEXYZ WhitePointOut, + LPcmsCIEXYZ IlluminantOut, + LPMAT3 m, LPVEC3 of) +{ + + + cmsCIEXYZ RelativeBlackPointIn, RelativeBlackPointOut; + double ax, ay, az, bx, by, bz, tx, ty, tz; + + // At first, convert both black points to relative. + + cmsAdaptToIlluminant(&RelativeBlackPointIn, WhitePointIn, IlluminantIn, BlackPointIn); + cmsAdaptToIlluminant(&RelativeBlackPointOut, WhitePointOut, IlluminantOut, BlackPointOut); + + // Now we need to compute a matrix plus an offset m and of such of + // [m]*bpin + off = bpout + // [m]*D50 + off = D50 + // + // This is a linear scaling in the form ax+b, where + // a = (bpout - D50) / (bpin - D50) + // b = - D50* (bpout - bpin) / (bpin - D50) + + + tx = RelativeBlackPointIn.X - IlluminantIn ->X; + ty = RelativeBlackPointIn.Y - IlluminantIn ->Y; + tz = RelativeBlackPointIn.Z - IlluminantIn ->Z; + + ax = (RelativeBlackPointOut.X - IlluminantOut ->X) / tx; + ay = (RelativeBlackPointOut.Y - IlluminantOut ->Y) / ty; + az = (RelativeBlackPointOut.Z - IlluminantOut ->Z) / tz; + + bx = - IlluminantOut -> X * (RelativeBlackPointOut.X - RelativeBlackPointIn.X) / tx; + by = - IlluminantOut -> Y * (RelativeBlackPointOut.Y - RelativeBlackPointIn.Y) / ty; + bz = - IlluminantOut -> Z * (RelativeBlackPointOut.Z - RelativeBlackPointIn.Z) / tz; + + + MAT3identity(m); + + m->v[VX].n[0] = ax; + m->v[VY].n[1] = ay; + m->v[VZ].n[2] = az; + + VEC3init(of, bx, by, bz); + +} + +// Return TRUE if both m and of are empy -- "m" being identity and "of" being 0 + +static +LCMSBOOL IdentityParameters(LPWMAT3 m, LPWVEC3 of) +{ + WVEC3 wv0; + + VEC3initF(&wv0, 0, 0, 0); + + if (!MAT3isIdentity(m, 0.00001)) return FALSE; + if (!VEC3equal(of, &wv0, 0.00001)) return FALSE; + + return TRUE; +} + + + + +// ----------------------------------------- Inter PCS conversions + +// XYZ to XYZ linear scaling. Aso used on Black point compensation + +static +void XYZ2XYZ(WORD In[], WORD Out[], LPWMAT3 m, LPWVEC3 of) +{ + + WVEC3 a, r; + + a.n[0] = In[0] << 1; + a.n[1] = In[1] << 1; + a.n[2] = In[2] << 1; + + MAT3evalW(&r, m, &a); + + Out[0] = _cmsClampWord((r.n[VX] + of->n[VX]) >> 1); + Out[1] = _cmsClampWord((r.n[VY] + of->n[VY]) >> 1); + Out[2] = _cmsClampWord((r.n[VZ] + of->n[VZ]) >> 1); +} + + +// XYZ to Lab, scaling first + +static +void XYZ2Lab(WORD In[], WORD Out[], LPWMAT3 m, LPWVEC3 of) +{ + WORD XYZ[3]; + + XYZ2XYZ(In, XYZ, m, of); + cmsXYZ2LabEncoded(XYZ, Out); +} + +// Lab to XYZ, then scalling + +static +void Lab2XYZ(WORD In[], WORD Out[], LPWMAT3 m, LPWVEC3 of) +{ + WORD XYZ[3]; + + cmsLab2XYZEncoded(In, XYZ); + XYZ2XYZ(XYZ, Out, m, of); +} + +// Lab to XYZ, scalling and then, back to Lab + +static +void Lab2XYZ2Lab(WORD In[], WORD Out[], LPWMAT3 m, LPWVEC3 of) +{ + WORD XYZ[3], XYZ2[3]; + + cmsLab2XYZEncoded(In, XYZ); + XYZ2XYZ(XYZ, XYZ2, m, of); + cmsXYZ2LabEncoded(XYZ2, Out); +} + +// ------------------------------------------------------------------ + +// Dispatcher for XYZ Relative LUT + +static +int FromXYZRelLUT(int Absolute, + LPcmsCIEXYZ BlackPointIn, + LPcmsCIEXYZ WhitePointIn, + LPcmsCIEXYZ IlluminantIn, + LPMAT3 ChromaticAdaptationMatrixIn, + + int Phase2, LPcmsCIEXYZ BlackPointOut, + LPcmsCIEXYZ WhitePointOut, + LPcmsCIEXYZ IlluminantOut, + LPMAT3 ChromaticAdaptationMatrixOut, + + int DoBlackPointCompensation, + double AdaptationState, + _cmsADJFN *fn1, + LPMAT3 m, LPVEC3 of) + +{ + switch (Phase2) { + + // From relative XYZ to Relative XYZ. + + case XYZRel: + + if (Absolute) + { + // From input relative to absolute, and then + // back to output relative + + Rel2RelStepAbsCoefs(AdaptationState, + BlackPointIn, + WhitePointIn, + IlluminantIn, + ChromaticAdaptationMatrixIn, + BlackPointOut, + WhitePointOut, + IlluminantOut, + ChromaticAdaptationMatrixOut, + m, of); + *fn1 = XYZ2XYZ; + + } + else + { + // XYZ Relative to XYZ relative, no op required + *fn1 = NULL; + if (DoBlackPointCompensation) { + + *fn1 = XYZ2XYZ; + ComputeBlackPointCompensationFactors(BlackPointIn, + WhitePointIn, + IlluminantIn, + BlackPointOut, + WhitePointOut, + IlluminantOut, + m, of); + + } + } + break; + + + // From relative XYZ to Relative Lab + + case LabRel: + + // First pass XYZ to absolute, then to relative and + // finally to Lab. I use here D50 for output in order + // to prepare the "to Lab" conversion. + + if (Absolute) + { + + Rel2RelStepAbsCoefs(AdaptationState, + BlackPointIn, + WhitePointIn, + IlluminantIn, + ChromaticAdaptationMatrixIn, + BlackPointOut, + WhitePointOut, + IlluminantOut, + ChromaticAdaptationMatrixOut, + m, of); + + *fn1 = XYZ2Lab; + + } + else + { + // Just Convert to Lab + + MAT3identity(m); + VEC3init(of, 0, 0, 0); + *fn1 = XYZ2Lab; + + if (DoBlackPointCompensation) { + + ComputeBlackPointCompensationFactors(BlackPointIn, + WhitePointIn, + IlluminantIn, + BlackPointOut, + WhitePointOut, + IlluminantOut, + m, of); + } + } + break; + + + default: return FALSE; + } + + return TRUE; +} + + + + +// From Lab Relative type LUT + +static +int FromLabRelLUT(int Absolute, + LPcmsCIEXYZ BlackPointIn, + LPcmsCIEXYZ WhitePointIn, + LPcmsCIEXYZ IlluminantIn, + LPMAT3 ChromaticAdaptationMatrixIn, + + int Phase2, LPcmsCIEXYZ BlackPointOut, + LPcmsCIEXYZ WhitePointOut, + LPcmsCIEXYZ IlluminantOut, + LPMAT3 ChromaticAdaptationMatrixOut, + + int DoBlackPointCompensation, + double AdaptationState, + + _cmsADJFN *fn1, + LPMAT3 m, LPVEC3 of) +{ + + switch (Phase2) { + + // From Lab Relative to XYZ Relative, very usual case + + case XYZRel: + + if (Absolute) { // Absolute intent + + // From lab relative, to XYZ absolute, and then, + // back to XYZ relative + + Rel2RelStepAbsCoefs(AdaptationState, + BlackPointIn, + WhitePointIn, + cmsD50_XYZ(), + ChromaticAdaptationMatrixIn, + BlackPointOut, + WhitePointOut, + IlluminantOut, + ChromaticAdaptationMatrixOut, + m, of); + + *fn1 = Lab2XYZ; + + } + else + { + // From Lab relative, to XYZ relative. + + *fn1 = Lab2XYZ; + if (DoBlackPointCompensation) { + + ComputeBlackPointCompensationFactors(BlackPointIn, + WhitePointIn, + IlluminantIn, + BlackPointOut, + WhitePointOut, + IlluminantOut, + m, of); + + } + } + break; + + + + case LabRel: + + if (Absolute) { + + // First pass to XYZ using the input illuminant + // * InIlluminant / D50, then to absolute. Then + // to relative, but for input + + Rel2RelStepAbsCoefs(AdaptationState, + BlackPointIn, + WhitePointIn, IlluminantIn, + ChromaticAdaptationMatrixIn, + BlackPointOut, + WhitePointOut, cmsD50_XYZ(), + ChromaticAdaptationMatrixOut, + m, of); + *fn1 = Lab2XYZ2Lab; + } + else + { // Lab -> Lab relative don't need any adjust unless + // black point compensation + + *fn1 = NULL; + if (DoBlackPointCompensation) { + + *fn1 = Lab2XYZ2Lab; + ComputeBlackPointCompensationFactors(BlackPointIn, + WhitePointIn, + IlluminantIn, + BlackPointOut, + WhitePointOut, + IlluminantOut, + m, of); + + + } + } + break; + + + default: return FALSE; + } + + return TRUE; +} + + +// This function does calculate the necessary conversion operations +// needed from transpassing data from a LUT to a LUT. The conversion +// is modeled as a pointer of function and two coefficients, a and b +// The function is actually called only if not null pointer is provided, +// and the two paramaters are passed in. There are several types of +// conversions, but basically they do a linear scalling and a interchange + + + +// Main dispatcher + +int cmsChooseCnvrt(int Absolute, + int Phase1, LPcmsCIEXYZ BlackPointIn, + LPcmsCIEXYZ WhitePointIn, + LPcmsCIEXYZ IlluminantIn, + LPMAT3 ChromaticAdaptationMatrixIn, + + int Phase2, LPcmsCIEXYZ BlackPointOut, + LPcmsCIEXYZ WhitePointOut, + LPcmsCIEXYZ IlluminantOut, + LPMAT3 ChromaticAdaptationMatrixOut, + + int DoBlackPointCompensation, + double AdaptationState, + _cmsADJFN *fn1, + LPWMAT3 wm, LPWVEC3 wof) +{ + + int rc; + MAT3 m; + VEC3 of; + + + MAT3identity(&m); + VEC3init(&of, 0, 0, 0); + + switch (Phase1) { + + // Input LUT is giving XYZ relative values. + + case XYZRel: rc = FromXYZRelLUT(Absolute, + BlackPointIn, + WhitePointIn, + IlluminantIn, + ChromaticAdaptationMatrixIn, + Phase2, + BlackPointOut, + WhitePointOut, + IlluminantOut, + ChromaticAdaptationMatrixOut, + DoBlackPointCompensation, + AdaptationState, + fn1, &m, &of); + break; + + + + // Input LUT is giving Lab relative values + + case LabRel: rc = FromLabRelLUT(Absolute, + BlackPointIn, + WhitePointIn, + IlluminantIn, + ChromaticAdaptationMatrixIn, + Phase2, + BlackPointOut, + WhitePointOut, + IlluminantOut, + ChromaticAdaptationMatrixOut, + DoBlackPointCompensation, + AdaptationState, + fn1, &m, &of); + break; + + + + + // Unrecognized combination + + default: cmsSignalError(LCMS_ERRC_ABORTED, "(internal) Phase error"); + return FALSE; + + } + + MAT3toFix(wm, &m); + VEC3toFix(wof, &of); + + // Do some optimization -- discard conversion if identity parameters. + + if (*fn1 == XYZ2XYZ || *fn1 == Lab2XYZ2Lab) { + + if (IdentityParameters(wm, wof)) + *fn1 = NULL; + } + + + return rc; +} + + + diff --git a/icc2ps/cmserr.c b/icc2ps/cmserr.c new file mode 100644 index 0000000..3fb7941 --- /dev/null +++ b/icc2ps/cmserr.c @@ -0,0 +1,110 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + + +// As a rule, only the functions visible from API can signal +// errors. + +void cdecl cmsSignalError(int ErrorCode, const char *ErrorText, ...); + +int LCMSEXPORT cmsErrorAction(int lAbort); +void LCMSEXPORT cmsSetErrorHandler(cmsErrorHandlerFunction Fn); + + +// ****************************************************************** + +static int nDoAbort = LCMS_ERROR_ABORT; +static cmsErrorHandlerFunction UserErrorHandler = (cmsErrorHandlerFunction) NULL; + + +int LCMSEXPORT cmsErrorAction(int nAction) +{ + int nOld = nDoAbort; + nDoAbort = nAction; + + return nOld; +} + +void LCMSEXPORT cmsSetErrorHandler(cmsErrorHandlerFunction Fn) +{ + UserErrorHandler = Fn; +} + + +// Default error handler + + +void cmsSignalError(int ErrorCode, const char *ErrorText, ...) +{ + va_list args; + + if (nDoAbort == LCMS_ERROR_IGNORE) return; + + va_start(args, ErrorText); + + if (UserErrorHandler != NULL) { + + char Buffer[1024]; + + vsnprintf(Buffer, 1023, ErrorText, args); + va_end(args); + + if (UserErrorHandler(ErrorCode, Buffer)) { + + return; + } + } + +#if defined( __CONSOLE__ ) || defined( NON_WINDOWS ) + + fprintf(stderr, "lcms: Error #%d; ", ErrorCode); + vfprintf(stderr, ErrorText, args); + fprintf(stderr, "\n"); + va_end(args); + + if (nDoAbort == LCMS_ERROR_ABORT) exit(1); +#else + { + char Buffer1[1024]; + char Buffer2[256]; + + snprintf(Buffer1, 767, "Error #%x; ", ErrorCode); + vsnprintf(Buffer2, 255, ErrorText, args); + strcat(Buffer1, Buffer2); + MessageBox(NULL, Buffer1, "Little cms", + MB_OK|MB_ICONSTOP|MB_TASKMODAL); + va_end(args); + + if (nDoAbort == LCMS_ERROR_ABORT) { + +#ifdef __BORLANDC__ + _cexit(); +#endif + + FatalAppExit(0, "lcms is terminating application"); + } + } +#endif +} diff --git a/icc2ps/cmsgamma.c b/icc2ps/cmsgamma.c new file mode 100644 index 0000000..857d82f --- /dev/null +++ b/icc2ps/cmsgamma.c @@ -0,0 +1,954 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + +// Gamma handling. + +LPGAMMATABLE LCMSEXPORT cmsAllocGamma(int nEntries); +void LCMSEXPORT cmsFreeGamma(LPGAMMATABLE Gamma); +void LCMSEXPORT cmsFreeGammaTriple(LPGAMMATABLE Gamma[3]); +LPGAMMATABLE LCMSEXPORT cmsBuildGamma(int nEntries, double Gamma); +LPGAMMATABLE LCMSEXPORT cmsDupGamma(LPGAMMATABLE Src); +LPGAMMATABLE LCMSEXPORT cmsReverseGamma(int nResultSamples, LPGAMMATABLE InGamma); +LPGAMMATABLE LCMSEXPORT cmsBuildParametricGamma(int nEntries, int Type, double Params[]); +LPGAMMATABLE LCMSEXPORT cmsJoinGamma(LPGAMMATABLE InGamma, LPGAMMATABLE OutGamma); +LPGAMMATABLE LCMSEXPORT cmsJoinGammaEx(LPGAMMATABLE InGamma, LPGAMMATABLE OutGamma, int nPoints); +LCMSBOOL LCMSEXPORT cmsSmoothGamma(LPGAMMATABLE Tab, double lambda); + +LCMSBOOL cdecl _cmsSmoothEndpoints(LPWORD Table, int nPoints); + + +// Sampled curves + +LPSAMPLEDCURVE cdecl cmsAllocSampledCurve(int nItems); +void cdecl cmsFreeSampledCurve(LPSAMPLEDCURVE p); +void cdecl cmsEndpointsOfSampledCurve(LPSAMPLEDCURVE p, double* Min, double* Max); +void cdecl cmsClampSampledCurve(LPSAMPLEDCURVE p, double Min, double Max); +LCMSBOOL cdecl cmsSmoothSampledCurve(LPSAMPLEDCURVE Tab, double SmoothingLambda); +void cdecl cmsRescaleSampledCurve(LPSAMPLEDCURVE p, double Min, double Max, int nPoints); + +LPSAMPLEDCURVE cdecl cmsJoinSampledCurves(LPSAMPLEDCURVE X, LPSAMPLEDCURVE Y, int nResultingPoints); + +double LCMSEXPORT cmsEstimateGamma(LPGAMMATABLE t); +double LCMSEXPORT cmsEstimateGammaEx(LPWORD GammaTable, int nEntries, double Thereshold); + +// ---------------------------------------------------------------------------------------- + + +#define MAX_KNOTS 4096 +typedef float vec[MAX_KNOTS+1]; + + +// Ciclic-redundant-check for assuring table is a true representation of parametric curve + +// The usual polynomial, which is used for AAL5, FDDI, and probably Ethernet +#define QUOTIENT 0x04c11db7 + +static +unsigned int Crc32(unsigned int result, LPVOID ptr, int len) +{ + int i,j; + BYTE octet; + LPBYTE data = (LPBYTE) ptr; + + for (i=0; i < len; i++) { + + octet = *data++; + + for (j=0; j < 8; j++) { + + if (result & 0x80000000) { + + result = (result << 1) ^ QUOTIENT ^ (octet >> 7); + } + else + { + result = (result << 1) ^ (octet >> 7); + } + octet <<= 1; + } + } + + return result; +} + +// Get CRC of gamma table + +unsigned int _cmsCrc32OfGammaTable(LPGAMMATABLE Table) +{ + unsigned int crc = ~0U; + + crc = Crc32(crc, &Table -> Seed.Type, sizeof(int)); + crc = Crc32(crc, Table ->Seed.Params, sizeof(double)*10); + crc = Crc32(crc, &Table ->nEntries, sizeof(int)); + crc = Crc32(crc, Table ->GammaTable, sizeof(WORD) * Table -> nEntries); + + return ~crc; + +} + + +LPGAMMATABLE LCMSEXPORT cmsAllocGamma(int nEntries) +{ + LPGAMMATABLE p; + size_t size; + + if (nEntries > 65530 || nEntries <= 0) { + cmsSignalError(LCMS_ERRC_ABORTED, "Couldn't create gammatable of more than 65530 entries"); + return NULL; + } + + size = sizeof(GAMMATABLE) + (sizeof(WORD) * (nEntries-1)); + + p = (LPGAMMATABLE) _cmsMalloc(size); + if (!p) return NULL; + + ZeroMemory(p, size); + + p -> Seed.Type = 0; + p -> nEntries = nEntries; + + return p; +} + +void LCMSEXPORT cmsFreeGamma(LPGAMMATABLE Gamma) +{ + if (Gamma) _cmsFree(Gamma); +} + + + +void LCMSEXPORT cmsFreeGammaTriple(LPGAMMATABLE Gamma[3]) +{ + cmsFreeGamma(Gamma[0]); + cmsFreeGamma(Gamma[1]); + cmsFreeGamma(Gamma[2]); + Gamma[0] = Gamma[1] = Gamma[2] = NULL; +} + + + +// Duplicate a gamma table + +LPGAMMATABLE LCMSEXPORT cmsDupGamma(LPGAMMATABLE In) +{ + LPGAMMATABLE Ptr; + size_t size; + + Ptr = cmsAllocGamma(In -> nEntries); + if (Ptr == NULL) return NULL; + + size = sizeof(GAMMATABLE) + (sizeof(WORD) * (In -> nEntries-1)); + + CopyMemory(Ptr, In, size); + return Ptr; +} + + +// Handle gamma using interpolation tables. The resulting curves can become +// very stange, but are pleasent to eye. + +LPGAMMATABLE LCMSEXPORT cmsJoinGamma(LPGAMMATABLE InGamma, + LPGAMMATABLE OutGamma) +{ + register int i; + L16PARAMS L16In, L16Out; + LPWORD InPtr, OutPtr; + LPGAMMATABLE p; + + p = cmsAllocGamma(256); + if (!p) return NULL; + + cmsCalcL16Params(InGamma -> nEntries, &L16In); + InPtr = InGamma -> GammaTable; + + cmsCalcL16Params(OutGamma -> nEntries, &L16Out); + OutPtr = OutGamma-> GammaTable; + + for (i=0; i < 256; i++) + { + WORD wValIn, wValOut; + + wValIn = cmsLinearInterpLUT16(RGB_8_TO_16(i), InPtr, &L16In); + wValOut = cmsReverseLinearInterpLUT16(wValIn, OutPtr, &L16Out); + + p -> GammaTable[i] = wValOut; + } + + return p; +} + + + +// New method, using smoothed parametric curves. This works FAR better. +// We want to get +// +// y = f(g^-1(x)) ; f = ingamma, g = outgamma +// +// And this can be parametrized as +// +// y = f(t) +// x = g(t) + + +LPGAMMATABLE LCMSEXPORT cmsJoinGammaEx(LPGAMMATABLE InGamma, + LPGAMMATABLE OutGamma, int nPoints) +{ + + LPSAMPLEDCURVE x, y, r; + LPGAMMATABLE res; + + x = cmsConvertGammaToSampledCurve(InGamma, nPoints); + y = cmsConvertGammaToSampledCurve(OutGamma, nPoints); + r = cmsJoinSampledCurves(y, x, nPoints); + + // Does clean "hair" + cmsSmoothSampledCurve(r, 0.001); + + cmsClampSampledCurve(r, 0.0, 65535.0); + + cmsFreeSampledCurve(x); + cmsFreeSampledCurve(y); + + res = cmsConvertSampledCurveToGamma(r, 65535.0); + cmsFreeSampledCurve(r); + + return res; +} + + + +// Reverse a gamma table + +LPGAMMATABLE LCMSEXPORT cmsReverseGamma(int nResultSamples, LPGAMMATABLE InGamma) +{ + register int i; + L16PARAMS L16In; + LPWORD InPtr; + LPGAMMATABLE p; + + // Try to reverse it analytically whatever possible + if (InGamma -> Seed.Type > 0 && InGamma -> Seed.Type <= 5 && + _cmsCrc32OfGammaTable(InGamma) == InGamma -> Seed.Crc32) { + + return cmsBuildParametricGamma(nResultSamples, -(InGamma -> Seed.Type), InGamma ->Seed.Params); + } + + + // Nope, reverse the table + p = cmsAllocGamma(nResultSamples); + if (!p) return NULL; + + cmsCalcL16Params(InGamma -> nEntries, &L16In); + InPtr = InGamma -> GammaTable; + + for (i=0; i < nResultSamples; i++) + { + WORD wValIn, wValOut; + + wValIn = _cmsQuantizeVal(i, nResultSamples); + wValOut = cmsReverseLinearInterpLUT16(wValIn, InPtr, &L16In); + p -> GammaTable[i] = wValOut; + } + + + return p; +} + + + +// Parametric curves +// +// Parameters goes as: Gamma, a, b, c, d, e, f +// Type is the ICC type +1 +// if type is negative, then the curve is analyticaly inverted + +LPGAMMATABLE LCMSEXPORT cmsBuildParametricGamma(int nEntries, int Type, double Params[]) +{ + LPGAMMATABLE Table; + double R, Val, dval, e; + int i; + int ParamsByType[] = { 0, 1, 3, 4, 5, 7 }; + + Table = cmsAllocGamma(nEntries); + if (NULL == Table) return NULL; + + Table -> Seed.Type = Type; + + CopyMemory(Table ->Seed.Params, Params, ParamsByType[abs(Type)] * sizeof(double)); + + + for (i=0; i < nEntries; i++) { + + R = (double) i / (nEntries-1); + + switch (Type) { + + // X = Y ^ Gamma + case 1: + Val = pow(R, Params[0]); + break; + + // Type 1 Reversed: X = Y ^1/gamma + case -1: + Val = pow(R, 1/Params[0]); + break; + + // CIE 122-1966 + // Y = (aX + b)^Gamma | X >= -b/a + // Y = 0 | else + case 2: + if (R >= -Params[2] / Params[1]) { + + e = Params[1]*R + Params[2]; + + if (e > 0) + Val = pow(e, Params[0]); + else + Val = 0; + } + else + Val = 0; + break; + + // Type 2 Reversed + // X = (Y ^1/g - b) / a + case -2: + + Val = (pow(R, 1.0/Params[0]) - Params[2]) / Params[1]; + if (Val < 0) + Val = 0; + break; + + + // IEC 61966-3 + // Y = (aX + b)^Gamma | X <= -b/a + // Y = c | else + case 3: + if (R >= -Params[2] / Params[1]) { + + e = Params[1]*R + Params[2]; + Val = pow(e, Params[0]) + Params[3]; + } + else + Val = Params[3]; + break; + + + // Type 3 reversed + // X=((Y-c)^1/g - b)/a | (Y>=c) + // X=-b/a | (Y= Params[3]) { + e = R - Params[3]; + Val = (pow(e, 1/Params[0]) - Params[2]) / Params[1]; + if (Val < 0) Val = 0; + } + else { + Val = -Params[2] / Params[1]; + } + break; + + + // IEC 61966-2.1 (sRGB) + // Y = (aX + b)^Gamma | X >= d + // Y = cX | X < d + case 4: + if (R >= Params[4]) { + + e = Params[1]*R + Params[2]; + if (e > 0) + Val = pow(e, Params[0]); + else + Val = 0; + } + else + Val = R * Params[3]; + break; + + // Type 4 reversed + // X=((Y^1/g-b)/a) | Y >= (ad+b)^g + // X=Y/c | Y< (ad+b)^g + + case -4: + if (R >= pow(Params[1] * Params[4] + Params[2], Params[0])) { + + Val = (pow(R, 1.0/Params[0]) - Params[2]) / Params[1]; + } + else { + Val = R / Params[3]; + } + break; + + + + // Y = (aX + b)^Gamma + e | X <= d + // Y = cX + f | else + case 5: + if (R >= Params[4]) { + + e = Params[1]*R + Params[2]; + Val = pow(e, Params[0]) + Params[5]; + } + else + Val = R*Params[3] + Params[6]; + break; + + + // Reversed type 5 + // X=((Y-e)1/g-b)/a | Y >=(ad+b)^g+e) + // X=(Y-f)/c | else + case -5: + + if (R >= pow(Params[1] * Params[4], Params[0]) + Params[5]) { + + Val = pow(R - Params[5], 1/Params[0]) - Params[2] / Params[1]; + } + else { + Val = (R - Params[6]) / Params[3]; + } + break; + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "Unsupported parametric curve type=%d", abs(Type)-1); + cmsFreeGamma(Table); + return NULL; + } + + + // Saturate + + dval = Val * 65535.0 + .5; + if (dval > 65535.) dval = 65535.0; + if (dval < 0) dval = 0; + + Table->GammaTable[i] = (WORD) floor(dval); + } + + Table -> Seed.Crc32 = _cmsCrc32OfGammaTable(Table); + + return Table; +} + +// Build a gamma table based on gamma constant + +LPGAMMATABLE LCMSEXPORT cmsBuildGamma(int nEntries, double Gamma) +{ + return cmsBuildParametricGamma(nEntries, 1, &Gamma); +} + + + +// From: Eilers, P.H.C. (1994) Smoothing and interpolation with finite +// differences. in: Graphic Gems IV, Heckbert, P.S. (ed.), Academic press. +// +// Smoothing and interpolation with second differences. +// +// Input: weights (w), data (y): vector from 1 to m. +// Input: smoothing parameter (lambda), length (m). +// Output: smoothed vector (z): vector from 1 to m. + + +static +void smooth2(vec w, vec y, vec z, float lambda, int m) +{ + int i, i1, i2; + vec c, d, e; + d[1] = w[1] + lambda; + c[1] = -2 * lambda / d[1]; + e[1] = lambda /d[1]; + z[1] = w[1] * y[1]; + d[2] = w[2] + 5 * lambda - d[1] * c[1] * c[1]; + c[2] = (-4 * lambda - d[1] * c[1] * e[1]) / d[2]; + e[2] = lambda / d[2]; + z[2] = w[2] * y[2] - c[1] * z[1]; + for (i = 3; i < m - 1; i++) { + i1 = i - 1; i2 = i - 2; + d[i]= w[i] + 6 * lambda - c[i1] * c[i1] * d[i1] - e[i2] * e[i2] * d[i2]; + c[i] = (-4 * lambda -d[i1] * c[i1] * e[i1])/ d[i]; + e[i] = lambda / d[i]; + z[i] = w[i] * y[i] - c[i1] * z[i1] - e[i2] * z[i2]; + } + i1 = m - 2; i2 = m - 3; + d[m - 1] = w[m - 1] + 5 * lambda -c[i1] * c[i1] * d[i1] - e[i2] * e[i2] * d[i2]; + c[m - 1] = (-2 * lambda - d[i1] * c[i1] * e[i1]) / d[m - 1]; + z[m - 1] = w[m - 1] * y[m - 1] - c[i1] * z[i1] - e[i2] * z[i2]; + i1 = m - 1; i2 = m - 2; + d[m] = w[m] + lambda - c[i1] * c[i1] * d[i1] - e[i2] * e[i2] * d[i2]; + z[m] = (w[m] * y[m] - c[i1] * z[i1] - e[i2] * z[i2]) / d[m]; + z[m - 1] = z[m - 1] / d[m - 1] - c[m - 1] * z[m]; + for (i = m - 2; 1<= i; i--) + z[i] = z[i] / d[i] - c[i] * z[i + 1] - e[i] * z[i + 2]; +} + + + +// Smooths a curve sampled at regular intervals + +LCMSBOOL LCMSEXPORT cmsSmoothGamma(LPGAMMATABLE Tab, double lambda) + +{ + vec w, y, z; + int i, nItems, Zeros, Poles; + + + if (cmsIsLinear(Tab->GammaTable, Tab->nEntries)) return FALSE; // Nothing to do + + nItems = Tab -> nEntries; + + if (nItems > MAX_KNOTS) { + cmsSignalError(LCMS_ERRC_ABORTED, "cmsSmoothGamma: too many points."); + return FALSE; + } + + ZeroMemory(w, nItems * sizeof(float)); + ZeroMemory(y, nItems * sizeof(float)); + ZeroMemory(z, nItems * sizeof(float)); + + for (i=0; i < nItems; i++) + { + y[i+1] = (float) Tab -> GammaTable[i]; + w[i+1] = 1.0; + } + + smooth2(w, y, z, (float) lambda, nItems); + + // Do some reality - checking... + Zeros = Poles = 0; + for (i=nItems; i > 1; --i) { + + if (z[i] == 0.) Zeros++; + if (z[i] >= 65535.) Poles++; + if (z[i] < z[i-1]) return FALSE; // Non-Monotonic + } + + if (Zeros > (nItems / 3)) return FALSE; // Degenerated, mostly zeros + if (Poles > (nItems / 3)) return FALSE; // Degenerated, mostly poles + + // Seems ok + + for (i=0; i < nItems; i++) { + + // Clamp to WORD + + float v = z[i+1]; + + if (v < 0) v = 0; + if (v > 65535.) v = 65535.; + + Tab -> GammaTable[i] = (WORD) floor(v + .5); + } + + return TRUE; +} + + +// Check if curve is exponential, return gamma if so. + +double LCMSEXPORT cmsEstimateGammaEx(LPWORD GammaTable, int nEntries, double Thereshold) +{ + double gamma, sum, sum2; + double n, x, y, Std; + int i; + + sum = sum2 = n = 0; + + // Does exclude endpoints + for (i=1; i < nEntries - 1; i++) { + + x = (double) i / (nEntries - 1); + y = (double) GammaTable[i] / 65535.; + + // Avoid 7% on lower part to prevent + // artifacts due to linear ramps + + if (y > 0. && y < 1. && x > 0.07) { + + gamma = log(y) / log(x); + sum += gamma; + sum2 += gamma * gamma; + n++; + } + + } + + // Take a look on SD to see if gamma isn't exponential at all + Std = sqrt((n * sum2 - sum * sum) / (n*(n-1))); + + + if (Std > Thereshold) + return -1.0; + + return (sum / n); // The mean +} + + +double LCMSEXPORT cmsEstimateGamma(LPGAMMATABLE t) +{ + return cmsEstimateGammaEx(t->GammaTable, t->nEntries, 0.7); +} + + +// -----------------------------------------------------------------Sampled curves + +// Allocate a empty curve + +LPSAMPLEDCURVE cmsAllocSampledCurve(int nItems) +{ + LPSAMPLEDCURVE pOut; + + pOut = (LPSAMPLEDCURVE) _cmsMalloc(sizeof(SAMPLEDCURVE)); + if (pOut == NULL) + return NULL; + + if((pOut->Values = (double *) _cmsMalloc(nItems * sizeof(double))) == NULL) + { + _cmsFree(pOut); + return NULL; + } + + pOut->nItems = nItems; + ZeroMemory(pOut->Values, nItems * sizeof(double)); + + return pOut; +} + + +void cmsFreeSampledCurve(LPSAMPLEDCURVE p) +{ + _cmsFree((LPVOID) p -> Values); + _cmsFree((LPVOID) p); +} + + + +// Does duplicate a sampled curve + +LPSAMPLEDCURVE cmsDupSampledCurve(LPSAMPLEDCURVE p) +{ + LPSAMPLEDCURVE out; + + out = cmsAllocSampledCurve(p -> nItems); + if (!out) return NULL; + + CopyMemory(out ->Values, p ->Values, p->nItems * sizeof(double)); + + return out; +} + + +// Take min, max of curve + +void cmsEndpointsOfSampledCurve(LPSAMPLEDCURVE p, double* Min, double* Max) +{ + int i; + + *Min = 65536.; + *Max = 0.; + + for (i=0; i < p -> nItems; i++) { + + double v = p -> Values[i]; + + if (v < *Min) + *Min = v; + + if (v > *Max) + *Max = v; + } + + if (*Min < 0) *Min = 0; + if (*Max > 65535.0) *Max = 65535.0; +} + +// Clamps to Min, Max + +void cmsClampSampledCurve(LPSAMPLEDCURVE p, double Min, double Max) +{ + + int i; + + for (i=0; i < p -> nItems; i++) { + + double v = p -> Values[i]; + + if (v < Min) + v = Min; + + if (v > Max) + v = Max; + + p -> Values[i] = v; + + } + +} + + + +// Smooths a curve sampled at regular intervals + +LCMSBOOL cmsSmoothSampledCurve(LPSAMPLEDCURVE Tab, double lambda) +{ + vec w, y, z; + int i, nItems; + + nItems = Tab -> nItems; + + if (nItems > MAX_KNOTS) { + cmsSignalError(LCMS_ERRC_ABORTED, "cmsSmoothSampledCurve: too many points."); + return FALSE; + } + + ZeroMemory(w, nItems * sizeof(float)); + ZeroMemory(y, nItems * sizeof(float)); + ZeroMemory(z, nItems * sizeof(float)); + + for (i=0; i < nItems; i++) + { + float value = (float) Tab -> Values[i]; + + y[i+1] = value; + w[i+1] = (float) ((value < 0.0) ? 0 : 1); + } + + + smooth2(w, y, z, (float) lambda, nItems); + + for (i=0; i < nItems; i++) { + + Tab -> Values[i] = z[i+1];; + } + + return TRUE; + +} + + +// Scale a value v, within domain Min .. Max +// to a domain 0..(nPoints-1) + +static +double ScaleVal(double v, double Min, double Max, int nPoints) +{ + + double a, b; + + if (v <= Min) return 0; + if (v >= Max) return (nPoints-1); + + a = (double) (nPoints - 1) / (Max - Min); + b = a * Min; + + return (a * v) - b; + +} + + +// Does rescale a sampled curve to fit in a 0..(nPoints-1) domain + +void cmsRescaleSampledCurve(LPSAMPLEDCURVE p, double Min, double Max, int nPoints) +{ + + int i; + + for (i=0; i < p -> nItems; i++) { + + double v = p -> Values[i]; + + p -> Values[i] = ScaleVal(v, Min, Max, nPoints); + } + +} + + +// Joins two sampled curves for X and Y. Curves should be sorted. + +LPSAMPLEDCURVE cmsJoinSampledCurves(LPSAMPLEDCURVE X, LPSAMPLEDCURVE Y, int nResultingPoints) +{ + int i, j; + LPSAMPLEDCURVE out; + double MinX, MinY, MaxX, MaxY; + double x, y, x1, y1, x2, y2, a, b; + + out = cmsAllocSampledCurve(nResultingPoints); + if (out == NULL) + return NULL; + + if (X -> nItems != Y -> nItems) { + + cmsSignalError(LCMS_ERRC_ABORTED, "cmsJoinSampledCurves: invalid curve."); + cmsFreeSampledCurve(out); + return NULL; + } + + // Get endpoints of sampled curves + cmsEndpointsOfSampledCurve(X, &MinX, &MaxX); + cmsEndpointsOfSampledCurve(Y, &MinY, &MaxY); + + + // Set our points + out ->Values[0] = MinY; + for (i=1; i < nResultingPoints; i++) { + + // Scale t to x domain + x = (i * (MaxX - MinX) / (nResultingPoints-1)) + MinX; + + // Find interval in which j is within (always up, + // since fn should be monotonic at all) + + j = 1; + while ((j < X ->nItems - 1) && X ->Values[j] < x) + j++; + + // Now x is within X[j-1], X[j] + x1 = X ->Values[j-1]; x2 = X ->Values[j]; + y1 = Y ->Values[j-1]; y2 = Y ->Values[j]; + + // Interpolate the value + a = (y1 - y2) / (x1 - x2); + b = y1 - a * x1; + y = a* x + b; + + out ->Values[i] = y; + } + + + cmsClampSampledCurve(out, MinY, MaxY); + return out; +} + + + +// Convert between curve types + +LPGAMMATABLE cmsConvertSampledCurveToGamma(LPSAMPLEDCURVE Sampled, double Max) +{ + LPGAMMATABLE Gamma; + int i, nPoints; + + + nPoints = Sampled ->nItems; + + Gamma = cmsAllocGamma(nPoints); + for (i=0; i < nPoints; i++) { + + Gamma->GammaTable[i] = (WORD) floor(ScaleVal(Sampled ->Values[i], 0, Max, 65536) + .5); + } + + return Gamma; + +} + +// Inverse of anterior + +LPSAMPLEDCURVE cmsConvertGammaToSampledCurve(LPGAMMATABLE Gamma, int nPoints) +{ + LPSAMPLEDCURVE Sampled; + L16PARAMS L16; + int i; + WORD wQuant, wValIn; + + if (nPoints > 4096) { + + cmsSignalError(LCMS_ERRC_ABORTED, "cmsConvertGammaToSampledCurve: too many points (max=4096)"); + return NULL; + } + + cmsCalcL16Params(Gamma -> nEntries, &L16); + + Sampled = cmsAllocSampledCurve(nPoints); + for (i=0; i < nPoints; i++) { + wQuant = _cmsQuantizeVal(i, nPoints); + wValIn = cmsLinearInterpLUT16(wQuant, Gamma ->GammaTable, &L16); + Sampled ->Values[i] = (float) wValIn; + } + + return Sampled; +} + + + + +// Smooth endpoints (used in Black/White compensation) + +LCMSBOOL _cmsSmoothEndpoints(LPWORD Table, int nEntries) +{ + vec w, y, z; + int i, Zeros, Poles; + + + + if (cmsIsLinear(Table, nEntries)) return FALSE; // Nothing to do + + + if (nEntries > MAX_KNOTS) { + cmsSignalError(LCMS_ERRC_ABORTED, "_cmsSmoothEndpoints: too many points."); + return FALSE; + } + + ZeroMemory(w, nEntries * sizeof(float)); + ZeroMemory(y, nEntries * sizeof(float)); + ZeroMemory(z, nEntries * sizeof(float)); + + for (i=0; i < nEntries; i++) + { + y[i+1] = (float) Table[i]; + w[i+1] = 1.0; + } + + w[1] = 65535.0; + w[nEntries] = 65535.0; + + smooth2(w, y, z, (float) nEntries, nEntries); + + // Do some reality - checking... + Zeros = Poles = 0; + for (i=nEntries; i > 1; --i) { + + if (z[i] == 0.) Zeros++; + if (z[i] >= 65535.) Poles++; + if (z[i] < z[i-1]) return FALSE; // Non-Monotonic + } + + if (Zeros > (nEntries / 3)) return FALSE; // Degenerated, mostly zeros + if (Poles > (nEntries / 3)) return FALSE; // Degenerated, mostly poles + + // Seems ok + + for (i=0; i < nEntries; i++) { + + // Clamp to WORD + + float v = z[i+1]; + + if (v < 0) v = 0; + if (v > 65535.) v = 65535.; + + Table[i] = (WORD) floor(v + .5); + } + + return TRUE; +} diff --git a/icc2ps/cmsgmt.c b/icc2ps/cmsgmt.c new file mode 100644 index 0000000..74cde8b --- /dev/null +++ b/icc2ps/cmsgmt.c @@ -0,0 +1,1243 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + +/* +Gamut check by default is a catching of 0xFFFF/0xFFFF/0xFFFF PCS values, used +internally by lcms to hold invalid values. Matrix LUT's, operates in a way that +unencodeable values are marked as this combination, if PCS is XYZ, this is a very +high value since encoding is a 1.15 fixed point, something like 1.9997, 1.9997, 1.9997 +not a very common color after all. Lab PCS is not to be a problem, since L>100 are truely +undefined. There is a posibility than ICC comitee defines L>100 as a valid means +to use highlights, then it will be lost. + +(1.10 - Actually ICC did it, so this should be checked for full ICC 4.0 support) + +*/ + + +LCMSBOOL _cmsEndPointsBySpace(icColorSpaceSignature Space, WORD **White, WORD **Black, + int *nOutputs) +{ + // Only most common spaces + + static WORD RGBblack[4] = { 0, 0, 0 }; + static WORD RGBwhite[4] = { 0xffff, 0xffff, 0xffff }; + static WORD CMYKblack[4] = { 0xffff, 0xffff, 0xffff, 0xffff }; // 400% of ink + static WORD CMYKwhite[4] = { 0, 0, 0, 0 }; + static WORD LABblack[4] = { 0, 0x8000, 0x8000 }; + static WORD LABwhite[4] = { 0xFF00, 0x8000, 0x8000 }; + static WORD CMYblack[4] = { 0xffff, 0xffff, 0xffff }; + static WORD CMYwhite[4] = { 0, 0, 0 }; + static WORD Grayblack[4] = { 0 }; + static WORD GrayWhite[4] = { 0xffff }; + + switch (Space) { + + case icSigGrayData: if (White) *White = GrayWhite; + if (Black) *Black = Grayblack; + if (nOutputs) *nOutputs = 1; + return TRUE; + + case icSigRgbData: if (White) *White = RGBwhite; + if (Black) *Black = RGBblack; + if (nOutputs) *nOutputs = 3; + return TRUE; + + case icSigLabData: if (White) *White = LABwhite; + if (Black) *Black = LABblack; + if (nOutputs) *nOutputs = 3; + return TRUE; + + case icSigCmykData: if (White) *White = CMYKwhite; + if (Black) *Black = CMYKblack; + if (nOutputs) *nOutputs = 4; + return TRUE; + + case icSigCmyData: if (White) *White = CMYwhite; + if (Black) *Black = CMYblack; + if (nOutputs) *nOutputs = 3; + return TRUE; + + default:; + } + + return FALSE; +} + + +WORD *_cmsWhiteBySpace(icColorSpaceSignature Space) +{ + WORD *White= NULL, *Black = NULL; + int Dummy; + static WORD Default[MAXCHANNELS]; + + if (_cmsEndPointsBySpace(Space, &White, &Black, &Dummy)) + return White; + + return Default; + +} + + + + +WORD Clamp_L(Fixed32 in) +{ + if (in == 0xFFFF) return 0xFFFFU; // Marker + + if (in > 0xFF00) return 0xFF00U; // L* = 100.0 + return (WORD) in; +} + + +#define ENCODE_AB(x) (WORD) (((x) + 128.0) * 256.0 + 0.5) + +WORD Clamp_ab(Fixed32 in) +{ + if (in == 0xFFFF) return 0xFFFFU; // Marker + + if (in < 0) return ENCODE_AB(-128.0); // Max negative number + if (in > 0xFFFF) return ENCODE_AB(+127.9961); // Max positive number + return (WORD) in; +} + + + +// Returns dE on two Lab values + +double LCMSEXPORT cmsDeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) +{ + double dL, da, db; + + if (Lab1 -> L < 0 || + Lab2 -> L < 0) return 65536.; + + if (Lab1 -> a < -200 || Lab1 -> a > 200) return 65536.; + if (Lab1 -> b < -200 || Lab1 -> b > 200) return 65536.; + + if (Lab2 -> a < -200 || Lab2 -> a > 200) return 65536.; + if (Lab2 -> b < -200 || Lab2 -> b > 200) return 65536.; + + if (Lab1 ->L == 0 && Lab2 ->L == 0) return 0; + + dL = fabs(Lab1 -> L - Lab2 -> L); + da = fabs(Lab1 -> a - Lab2 -> a); + db = fabs(Lab1 -> b - Lab2 -> b); + + return pow(dL*dL + da * da + db * db, 0.5); + +} + + +// Square +static +double Sqr(double v) +{ + return v * v; +} + +// Return the CIE94 Delta E +double LCMSEXPORT cmsCIE94DeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) +{ + cmsCIELCh LCh1, LCh2; + double dE, dL, dC, dh, dhsq; + double c12, sc, sh; + + if (Lab1 ->L == 0 && Lab2 ->L == 0) return 0; + + dL = fabs(Lab1 ->L - Lab2 ->L); + + cmsLab2LCh(&LCh1, Lab1); + cmsLab2LCh(&LCh2, Lab2); + + dC = fabs(LCh1.C - LCh2.C); + dE = cmsDeltaE(Lab1, Lab2); + + dhsq = Sqr(dE) - Sqr(dL) - Sqr(dC); + if (dhsq < 0) + dh = 0; + else + dh = pow(dhsq, 0.5); + + c12 = sqrt(LCh1.C * LCh2.C); + + sc = 1.0 + (0.048 * c12); + sh = 1.0 + (0.014 * c12); + + return sqrt(Sqr(dL) + Sqr(dC) / Sqr(sc) + Sqr(dh) / Sqr(sh)); +} + + +// Auxiliary + +static +double ComputeLBFD(LPcmsCIELab Lab) +{ + double yt; + + if (Lab->L > 7.996969) + yt = (Sqr((Lab->L+16)/116)*((Lab->L+16)/116))*100; + else + yt = 100 * (Lab->L / 903.3); + + return (54.6 * (LOGE * (log(yt + 1.5))) - 9.6); +} + + + +// bfd - gets BFD(1:1) difference between Lab1, Lab2 +double LCMSEXPORT cmsBFDdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) +{ + double lbfd1,lbfd2,AveC,Aveh,dE,deltaL, + deltaC,deltah,dc,t,g,dh,rh,rc,rt,bfd; + cmsCIELCh LCh1, LCh2; + + + if (Lab1 ->L == 0 && Lab2 ->L == 0) return 0; + + lbfd1 = ComputeLBFD(Lab1); + lbfd2 = ComputeLBFD(Lab2); + deltaL = lbfd2 - lbfd1; + + cmsLab2LCh(&LCh1, Lab1); + cmsLab2LCh(&LCh2, Lab2); + + deltaC = LCh2.C - LCh1.C; + AveC = (LCh1.C+LCh2.C)/2; + Aveh = (LCh1.h+LCh2.h)/2; + + dE = cmsDeltaE(Lab1, Lab2); + + if (Sqr(dE)>(Sqr(Lab2->L-Lab1->L)+Sqr(deltaC))) + deltah = sqrt(Sqr(dE)-Sqr(Lab2->L-Lab1->L)-Sqr(deltaC)); + else + deltah =0; + + + dc = 0.035 * AveC / (1 + 0.00365 * AveC)+0.521; + g = sqrt(Sqr(Sqr(AveC))/(Sqr(Sqr(AveC))+14000)); + t = 0.627+(0.055*cos((Aveh-254)/(180/M_PI))- + 0.040*cos((2*Aveh-136)/(180/M_PI))+ + 0.070*cos((3*Aveh-31)/(180/M_PI))+ + 0.049*cos((4*Aveh+114)/(180/M_PI))- + 0.015*cos((5*Aveh-103)/(180/M_PI))); + + dh = dc*(g*t+1-g); + rh = -0.260*cos((Aveh-308)/(180/M_PI))- + 0.379*cos((2*Aveh-160)/(180/M_PI))- + 0.636*cos((3*Aveh+254)/(180/M_PI))+ + 0.226*cos((4*Aveh+140)/(180/M_PI))- + 0.194*cos((5*Aveh+280)/(180/M_PI)); + + rc = sqrt((AveC*AveC*AveC*AveC*AveC*AveC)/((AveC*AveC*AveC*AveC*AveC*AveC)+70000000)); + rt = rh*rc; + + bfd = sqrt(Sqr(deltaL)+Sqr(deltaC/dc)+Sqr(deltah/dh)+(rt*(deltaC/dc)*(deltah/dh))); + + return bfd; +} + + +// cmc - CMC(1:1) difference between Lab1, Lab2 +double LCMSEXPORT cmsCMCdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) +{ + double dE,dL,dC,dh,sl,sc,sh,t,f,cmc; + cmsCIELCh LCh1, LCh2; + + if (Lab1 ->L == 0 && Lab2 ->L == 0) return 0; + + cmsLab2LCh(&LCh1, Lab1); + cmsLab2LCh(&LCh2, Lab2); + + + dL = Lab2->L-Lab1->L; + dC = LCh2.C-LCh1.C; + + dE = cmsDeltaE(Lab1, Lab2); + if (Sqr(dE)>(Sqr(dL)+Sqr(dC))) + dh = sqrt(Sqr(dE)-Sqr(dL)-Sqr(dC)); + else + dh =0; + + if ((LCh1.h > 164) && (LCh1.h<345)) + t = 0.56 + fabs(0.2 * cos(((LCh1.h + 168)/(180/M_PI)))); + else + t = 0.36 + fabs(0.4 * cos(((LCh1.h + 35 )/(180/M_PI)))); + + sc = 0.0638 * LCh1.C / (1 + 0.0131 * LCh1.C) + 0.638; + sl = 0.040975 * Lab1->L /(1 + 0.01765 * Lab1->L); + + if (Lab1->L<16) + sl = 0.511; + + f = sqrt((LCh1.C * LCh1.C * LCh1.C * LCh1.C)/((LCh1.C * LCh1.C * LCh1.C * LCh1.C)+1900)); + sh = sc*(t*f+1-f); + cmc = sqrt(Sqr(dL/sl)+Sqr(dC/sc)+Sqr(dh/sh)); + + return cmc; +} + + + +static +double atan2deg(double b, double a) +{ + double h; + + if (a == 0 && b == 0) + h = 0; + else + h = atan2(a, b); + + h *= (180. / M_PI); + + while (h > 360.) + h -= 360.; + + while ( h < 0) + h += 360.; + + return h; + +} + + +static +double RADIANES(double deg) +{ + return (deg * M_PI) / 180.; +} + + +// dE2000 The weightings KL, KC and KH can be modified to reflect the relative +// importance of lightness, chroma and hue in different industrial applications + +double LCMSEXPORT cmsCIE2000DeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2, + double Kl, double Kc, double Kh) +{ + double L1 = Lab1->L; + double a1 = Lab1->a; + double b1 = Lab1->b; + double C = sqrt( Sqr(a1) + Sqr(b1) ); + + double Ls = Lab2 ->L; + double as = Lab2 ->a; + double bs = Lab2 ->b; + double Cs = sqrt( Sqr(as) + Sqr(bs) ); + + double G = 0.5 * ( 1 - sqrt(pow((C + Cs) / 2 , 7.0) / (pow((C + Cs) / 2, 7.0) + pow(25.0, 7.0) ) )); + + double a_p = (1 + G ) * a1; + double b_p = b1; + double C_p = sqrt( Sqr(a_p) + Sqr(b_p)); + double h_p = atan2deg(a_p, b_p); + + + double a_ps = (1 + G) * as; + double b_ps = bs; + double C_ps = sqrt(Sqr(a_ps) + Sqr(b_ps)); + double h_ps = atan2deg(a_ps, b_ps); + + double meanC_p =(C_p + C_ps) / 2; + + double hps_plus_hp = h_ps + h_p; + double hps_minus_hp = h_ps - h_p; + + double meanh_p = fabs(hps_minus_hp) <= 180.000001 ? (hps_plus_hp)/2 : + (hps_plus_hp) < 360 ? (hps_plus_hp + 360)/2 : + (hps_plus_hp - 360)/2; + + double delta_h = (hps_minus_hp) <= -180.000001 ? (hps_minus_hp + 360) : + (hps_minus_hp) > 180 ? (hps_minus_hp - 360) : + (hps_minus_hp); + double delta_L = (Ls - L1); + double delta_C = (C_ps - C_p ); + + + double delta_H =2 * sqrt(C_ps*C_p) * sin(RADIANES(delta_h) / 2); + + double T = 1 - 0.17 * cos(RADIANES(meanh_p-30)) + + 0.24 * cos(RADIANES(2*meanh_p)) + + 0.32 * cos(RADIANES(3*meanh_p + 6)) + - 0.2 * cos(RADIANES(4*meanh_p - 63)); + + double Sl = 1 + (0.015 * Sqr((Ls + L1) /2- 50) )/ sqrt(20 + Sqr( (Ls+L1)/2 - 50) ); + + double Sc = 1 + 0.045 * (C_p + C_ps)/2; + double Sh = 1 + 0.015 * ((C_ps + C_p)/2) * T; + + double delta_ro = 30 * exp( -Sqr(((meanh_p - 275 ) / 25))); + + double Rc = 2 * sqrt(( pow(meanC_p, 7.0) )/( pow(meanC_p, 7.0) + pow(25.0, 7.0))); + + double Rt = -sin(2 * RADIANES(delta_ro)) * Rc; + + double deltaE00 = sqrt( Sqr(delta_L /(Sl * Kl)) + + Sqr(delta_C/(Sc * Kc)) + + Sqr(delta_H/(Sh * Kh)) + + Rt*(delta_C/(Sc * Kc)) * (delta_H / (Sh * Kh))); + + return deltaE00; +} + + + +// Carefully, clamp on CIELab space. + +void LCMSEXPORT cmsClampLab(LPcmsCIELab Lab, double amax, double amin, + double bmax, double bmin) +{ + + // Whole Luma surface to zero + + if (Lab -> L < 0) { + + Lab-> L = Lab->a = Lab-> b = 0.0; + return; + } + + // Clamp white, DISCARD HIGHLIGHTS. This is done + // in such way because icc spec doesn't allow the + // use of L>100 as a highlight means. + + if (Lab->L > 100) + Lab -> L = 100; + + // Check out gamut prism, on a, b faces + + if (Lab -> a < amin || Lab->a > amax|| + Lab -> b < bmin || Lab->b > bmax) { + + cmsCIELCh LCh; + double h, slope; + + // Falls outside a, b limits. Transports to LCh space, + // and then do the clipping + + + if (Lab -> a == 0.0) { // Is hue exactly 90? + + // atan will not work, so clamp here + Lab -> b = Lab->b < 0 ? bmin : bmax; + return; + } + + cmsLab2LCh(&LCh, Lab); + + slope = Lab -> b / Lab -> a; + h = LCh.h; + + // There are 4 zones + + if ((h >= 0. && h < 45.) || + (h >= 315 && h <= 360.)) { + + // clip by amax + Lab -> a = amax; + Lab -> b = amax * slope; + } + else + if (h >= 45. && h < 135) + { + // clip by bmax + Lab -> b = bmax; + Lab -> a = bmax / slope; + } + else + if (h >= 135 && h < 225) { + // clip by amin + Lab -> a = amin; + Lab -> b = amin * slope; + + } + else + if (h >= 225 && h < 315) { + // clip by bmin + Lab -> b = bmin; + Lab -> a = bmin / slope; + } + else + cmsSignalError(LCMS_ERRC_ABORTED, "Invalid angle"); + + } +} + +// Several utilities ------------------------------------------------------- + +// Translate from our colorspace to ICC representation + +icColorSpaceSignature LCMSEXPORT _cmsICCcolorSpace(int OurNotation) +{ + switch (OurNotation) { + + case 1: + case PT_GRAY: return icSigGrayData; + + case 2: + case PT_RGB: return icSigRgbData; + + case PT_CMY: return icSigCmyData; + case PT_CMYK: return icSigCmykData; + case PT_YCbCr:return icSigYCbCrData; + case PT_YUV: return icSigLuvData; + case PT_XYZ: return icSigXYZData; + case PT_Lab: return icSigLabData; + case PT_YUVK: return icSigLuvKData; + case PT_HSV: return icSigHsvData; + case PT_HLS: return icSigHlsData; + case PT_Yxy: return icSigYxyData; + case PT_HiFi: return icSigHexachromeData; + case PT_HiFi7: return icSigHeptachromeData; + case PT_HiFi8: return icSigOctachromeData; + + case PT_HiFi9: return icSigMCH9Data; + case PT_HiFi10: return icSigMCHAData; + case PT_HiFi11: return icSigMCHBData; + case PT_HiFi12: return icSigMCHCData; + case PT_HiFi13: return icSigMCHDData; + case PT_HiFi14: return icSigMCHEData; + case PT_HiFi15: return icSigMCHFData; + + default: return icMaxEnumData; + } +} + + +int LCMSEXPORT _cmsLCMScolorSpace(icColorSpaceSignature ProfileSpace) +{ + switch (ProfileSpace) { + + case icSigGrayData: return PT_GRAY; + case icSigRgbData: return PT_RGB; + case icSigCmyData: return PT_CMY; + case icSigCmykData: return PT_CMYK; + case icSigYCbCrData:return PT_YCbCr; + case icSigLuvData: return PT_YUV; + case icSigXYZData: return PT_XYZ; + case icSigLabData: return PT_Lab; + case icSigLuvKData: return PT_YUVK; + case icSigHsvData: return PT_HSV; + case icSigHlsData: return PT_HLS; + case icSigYxyData: return PT_Yxy; + + case icSig6colorData: + case icSigHexachromeData: return PT_HiFi; + + case icSigHeptachromeData: + case icSig7colorData: return PT_HiFi7; + + case icSigOctachromeData: + case icSig8colorData: return PT_HiFi8; + + case icSigMCH9Data: + case icSig9colorData: return PT_HiFi9; + + case icSigMCHAData: + case icSig10colorData: return PT_HiFi10; + + case icSigMCHBData: + case icSig11colorData: return PT_HiFi11; + + case icSigMCHCData: + case icSig12colorData: return PT_HiFi12; + + case icSigMCHDData: + case icSig13colorData: return PT_HiFi13; + + case icSigMCHEData: + case icSig14colorData: return PT_HiFi14; + + case icSigMCHFData: + case icSig15colorData: return PT_HiFi15; + + default: return icMaxEnumData; + } +} + + +int LCMSEXPORT _cmsChannelsOf(icColorSpaceSignature ColorSpace) +{ + + switch (ColorSpace) { + + case icSigGrayData: return 1; + + case icSig2colorData: return 2; + + case icSigXYZData: + case icSigLabData: + case icSigLuvData: + case icSigYCbCrData: + case icSigYxyData: + case icSigRgbData: + case icSigHsvData: + case icSigHlsData: + case icSigCmyData: + case icSig3colorData: return 3; + + case icSigLuvKData: + case icSigCmykData: + case icSig4colorData: return 4; + + case icSigMCH5Data: + case icSig5colorData: return 5; + + case icSigHexachromeData: + case icSig6colorData: return 6; + + case icSigHeptachromeData: + case icSig7colorData: return 7; + + case icSigOctachromeData: + case icSig8colorData: return 8; + + case icSigMCH9Data: + case icSig9colorData: return 9; + + case icSigMCHAData: + case icSig10colorData: return 10; + + case icSigMCHBData: + case icSig11colorData: return 11; + + case icSigMCHCData: + case icSig12colorData: return 12; + + case icSigMCHDData: + case icSig13colorData: return 13; + + case icSigMCHEData: + case icSig14colorData: return 14; + + case icSigMCHFData: + case icSig15colorData: return 15; + + default: return 3; + } + +} + + +// v2 L=100 is supposed to be placed on 0xFF00. There is no reasonable +// number of gridpoints that would make exact match. However, a +// prelinearization of 258 entries, would map 0xFF00 on entry 257. +// This is almost what we need, unfortunately, the rest of entries +// should be scaled by (255*257/256) and this is not exact. +// +// An intermediate solution would be to use 257 entries. This does not +// map 0xFF00 exactly on a node, but so close that the dE induced is +// negligible. AND the rest of curve is exact. + +static +void CreateLabPrelinearization(LPGAMMATABLE LabTable[]) +{ + int i; + + LabTable[0] = cmsAllocGamma(257); + LabTable[1] = cmsBuildGamma(257, 1.0); + LabTable[2] = cmsBuildGamma(257, 1.0); + + // L* uses 257 entries. Entry 256 holds 0xFFFF, so, the effective range + // is 0..0xFF00. Last entry (257) is also collapsed to 0xFFFF + + // From 0 to 0xFF00 + for (i=0; i < 256; i++) + LabTable[0]->GammaTable[i] = RGB_8_TO_16(i); + + // Repeat last for 0xFFFF + LabTable[0] ->GammaTable[256] = 0xFFFF; +} + + +// Used by gamut & softproofing + +typedef struct { + + cmsHTRANSFORM hInput; // From whatever input color space. NULL for Lab + cmsHTRANSFORM hForward, hReverse; // Transforms going from Lab to colorant and back + double Thereshold; // The thereshold after which is considered out of gamut + + } GAMUTCHAIN,FAR* LPGAMUTCHAIN; + +// This sampler does compute gamut boundaries by comparing original +// values with a transform going back and forth. Values above ERR_THERESHOLD +// of maximum are considered out of gamut. + + +#define ERR_THERESHOLD 5 + + +static +int GamutSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + LPGAMUTCHAIN t = (LPGAMUTCHAIN) Cargo; + WORD Proof[MAXCHANNELS], Check[MAXCHANNELS]; + WORD Proof2[MAXCHANNELS], Check2[MAXCHANNELS]; + cmsCIELab LabIn1, LabOut1; + cmsCIELab LabIn2, LabOut2; + double dE1, dE2, ErrorRatio; + + // Assume in-gamut by default. + dE1 = 0.; + dE2 = 0; + ErrorRatio = 1.0; + + + // Any input space? I can use In[] no matter channels + // because is just one pixel + + if (t -> hInput != NULL) cmsDoTransform(t -> hInput, In, In, 1); + + // converts from PCS to colorant. This always + // does return in-gamut values, + cmsDoTransform(t -> hForward, In, Proof, 1); + + // Now, do the inverse, from colorant to PCS. + cmsDoTransform(t -> hReverse, Proof, Check, 1); + + + // Try again, but this time taking Check as input + cmsDoTransform(t -> hForward, Check, Proof2, 1); + cmsDoTransform(t -> hReverse, Proof2, Check2, 1); + + + + // Does the transform returns out-of-gamut? + if (Check[0] == 0xFFFF && + Check[1] == 0xFFFF && + Check[2] == 0xFFFF) + + Out[0] = 0xFF00; // Out of gamut! + else { + + // Transport encoded values + cmsLabEncoded2Float(&LabIn1, In); + cmsLabEncoded2Float(&LabOut1, Check); + + // Take difference of direct value + dE1 = cmsDeltaE(&LabIn1, &LabOut1); + + cmsLabEncoded2Float(&LabIn2, Check); + cmsLabEncoded2Float(&LabOut2, Check2); + + // Take difference of converted value + dE2 = cmsDeltaE(&LabIn2, &LabOut2); + + + // if dE1 is small and dE2 is small, value is likely to be in gamut + if (dE1 < t->Thereshold && dE2 < t->Thereshold) + Out[0] = 0; + else + // if dE1 is small and dE2 is big, undefined. Assume in gamut + if (dE1 < t->Thereshold && dE2 > t->Thereshold) + Out[0] = 0; + else + // dE1 is big and dE2 is small, clearly out of gamut + if (dE1 > t->Thereshold && dE2 < t->Thereshold) + Out[0] = (WORD) _cmsQuickFloor((dE1 - t->Thereshold) + .5); + else { + + // dE1 is big and dE2 is also big, could be due to perceptual mapping + // so take error ratio + if (dE2 == 0.0) + ErrorRatio = dE1; + else + ErrorRatio = dE1 / dE2; + + if (ErrorRatio > t->Thereshold) + Out[0] = (WORD) _cmsQuickFloor((ErrorRatio - t->Thereshold) + .5); + else + Out[0] = 0; + } + + } + + return TRUE; +} + + +// Does compute a gamut LUT going back and forth across +// pcs -> relativ. colorimetric intent -> pcs +// the dE obtained is then annotated on the LUT. +// values truely out of gamut, are clipped to dE = 0xFFFE +// and values changed are supposed to be handled by +// any gamut remapping, so, are out of gamut as well. +// +// **WARNING: This algorithm does assume that gamut +// remapping algorithms does NOT move in-gamut colors, +// of course, many perceptual and saturation intents does +// not work in such way, but relativ. ones should. + +static +LPLUT ComputeGamutWithInput(cmsHPROFILE hInput, cmsHPROFILE hProfile, int Intent) +{ + cmsHPROFILE hLab; + LPLUT Gamut; + DWORD dwFormat; + GAMUTCHAIN Chain; + int nErrState, nChannels, nGridpoints; + LPGAMMATABLE Trans[3]; + icColorSpaceSignature ColorSpace; + + + ZeroMemory(&Chain, sizeof(GAMUTCHAIN)); + + hLab = cmsCreateLabProfile(NULL); + + // Safeguard against early abortion + nErrState = cmsErrorAction(LCMS_ERROR_IGNORE); + + // The figure of merit. On matrix-shaper profiles, should be almost zero as + // the conversion is pretty exact. On LUT based profiles, different resolutions + // of input and output CLUT may result in differences. + + if (!cmsIsIntentSupported(hProfile, Intent, LCMS_USED_AS_INPUT) && + !cmsIsIntentSupported(hProfile, Intent, LCMS_USED_AS_OUTPUT)) + + Chain.Thereshold = 1.0; + else + Chain.Thereshold = ERR_THERESHOLD; + + ColorSpace = cmsGetColorSpace(hProfile); + + // If input profile specified, create a transform from such profile to Lab + if (hInput != NULL) { + + nChannels = _cmsChannelsOf(ColorSpace); + nGridpoints = _cmsReasonableGridpointsByColorspace(ColorSpace, cmsFLAGS_HIGHRESPRECALC); + dwFormat = (CHANNELS_SH(nChannels)|BYTES_SH(2)); + + Chain.hInput = cmsCreateTransform(hInput, dwFormat, + hLab, TYPE_Lab_16, + Intent, + cmsFLAGS_NOTPRECALC); + } + else { + // Input transform=NULL (Lab) Used to compute the gamut tag + // This table will take 53 points to give some accurancy, + // 53 * 53 * 53 * 2 = 291K + + nChannels = 3; // For Lab + nGridpoints = 53; + Chain.hInput = NULL; + dwFormat = (CHANNELS_SH(_cmsChannelsOf(ColorSpace))|BYTES_SH(2)); + } + + + // Does create the forward step + Chain.hForward = cmsCreateTransform(hLab, TYPE_Lab_16, + hProfile, dwFormat, + INTENT_RELATIVE_COLORIMETRIC, + cmsFLAGS_NOTPRECALC); + + // Does create the backwards step + Chain.hReverse = cmsCreateTransform(hProfile, dwFormat, + hLab, TYPE_Lab_16, + INTENT_RELATIVE_COLORIMETRIC, + cmsFLAGS_NOTPRECALC); + + // Restores error handler previous state + cmsErrorAction(nErrState); + + + // All ok? + if (Chain.hForward && Chain.hReverse) { + + // Go on, try to compute gamut LUT from PCS. + // This consist on a single channel containing + // dE when doing a transform back and forth on + // the colorimetric intent. + + Gamut = cmsAllocLUT(); + Gamut = cmsAlloc3DGrid(Gamut, nGridpoints, nChannels, 1); + + // If no input, then this is a gamut tag operated by Lab, + // so include pertinent prelinearization + if (hInput == NULL) { + + CreateLabPrelinearization(Trans); + cmsAllocLinearTable(Gamut, Trans, 1); + cmsFreeGammaTriple(Trans); + } + + + cmsSample3DGrid(Gamut, GamutSampler, (LPVOID) &Chain, Gamut ->wFlags); + } + else + Gamut = NULL; // Didn't work... + + // Free all needed stuff. + if (Chain.hInput) cmsDeleteTransform(Chain.hInput); + if (Chain.hForward) cmsDeleteTransform(Chain.hForward); + if (Chain.hReverse) cmsDeleteTransform(Chain.hReverse); + + cmsCloseProfile(hLab); + + // And return computed hull + return Gamut; +} + + +// Wrapper + +LPLUT _cmsComputeGamutLUT(cmsHPROFILE hProfile, int Intent) +{ + return ComputeGamutWithInput(NULL, hProfile, Intent); +} + + +// This routine does compute the gamut check CLUT. This CLUT goes from whatever +// input space to the 0 or != 0 gamut check. + +LPLUT _cmsPrecalculateGamutCheck(cmsHTRANSFORM h) +{ + _LPcmsTRANSFORM p = (_LPcmsTRANSFORM) h; + + return ComputeGamutWithInput(p->InputProfile, p ->PreviewProfile, p->Intent); +} + + +// SoftProofing. Convert from Lab to device, then back to Lab, +// any gamut remapping is applied + +static +int SoftProofSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + LPGAMUTCHAIN t = (LPGAMUTCHAIN) Cargo; + WORD Colorant[MAXCHANNELS]; + + // From pcs to colorant + cmsDoTransform(t -> hForward, In, Colorant, 1); + + // Now, do the inverse, from colorant to pcs. + cmsDoTransform(t -> hReverse, Colorant, Out, 1); + + return TRUE; +} + +// Does return Softproofing LUT on desired intent + +LPLUT _cmsComputeSoftProofLUT(cmsHPROFILE hProfile, int nIntent) +{ + cmsHPROFILE hLab; + LPLUT SoftProof; + DWORD dwFormat; + GAMUTCHAIN Chain; + int nErrState; + LPGAMMATABLE Trans[3]; + + + // LUTs are never abs. colorimetric, is the transform who + // is responsible of generating white point displacement + if (nIntent == INTENT_ABSOLUTE_COLORIMETRIC) + nIntent = INTENT_RELATIVE_COLORIMETRIC; + + ZeroMemory(&Chain, sizeof(GAMUTCHAIN)); + + hLab = cmsCreateLabProfile(NULL); + + // ONLY 4 channels + dwFormat = (CHANNELS_SH(4)|BYTES_SH(2)); + + // Safeguard against early abortion + nErrState = cmsErrorAction(LCMS_ERROR_IGNORE); + + // Does create the first step + Chain.hForward = cmsCreateTransform(hLab, TYPE_Lab_16, + hProfile, dwFormat, + nIntent, + cmsFLAGS_NOTPRECALC); + + // Does create the last step + Chain.hReverse = cmsCreateTransform(hProfile, dwFormat, + hLab, TYPE_Lab_16, + INTENT_RELATIVE_COLORIMETRIC, + cmsFLAGS_NOTPRECALC); + + // Restores error handler previous state + cmsErrorAction(nErrState); + + // All ok? + if (Chain.hForward && Chain.hReverse) { + + // This is Lab -> Lab, so 33 point should hold anything + SoftProof = cmsAllocLUT(); + SoftProof = cmsAlloc3DGrid(SoftProof, 33, 3, 3); + + CreateLabPrelinearization(Trans); + cmsAllocLinearTable(SoftProof, Trans, 1); + cmsFreeGammaTriple(Trans); + + cmsSample3DGrid(SoftProof, SoftProofSampler, (LPVOID) &Chain, SoftProof->wFlags); + } + else + SoftProof = NULL; // Didn't work... + + // Free all needed stuff. + if (Chain.hForward) cmsDeleteTransform(Chain.hForward); + if (Chain.hReverse) cmsDeleteTransform(Chain.hReverse); + + cmsCloseProfile(hLab); + + return SoftProof; +} + + +static +int MostlyLinear(WORD Table[], int nEntries) +{ + register int i; + int diff; + + for (i=5; i < nEntries; i++) { + + diff = abs((int) Table[i] - (int) _cmsQuantizeVal(i, nEntries)); + if (diff > 0x0300) + return 0; + } + + return 1; +} + + +static +void SlopeLimiting(WORD Table[], int nEntries) +{ + int At = (int) floor((double) nEntries * 0.02 + 0.5); // Cutoff at 2% + double Val, Slope; + int i; + + Val = Table[At]; + Slope = Val / At; + + for (i=0; i < At; i++) + Table[i] = (WORD) floor(i * Slope + 0.5); + +} + + +// Check for monotonicity. + +static +LCMSBOOL IsMonotonic(LPGAMMATABLE t) +{ + int n = t -> nEntries; + int i, last; + + last = t ->GammaTable[n-1]; + + for (i = n-2; i >= 0; --i) { + + if (t ->GammaTable[i] > last) + + return FALSE; + else + last = t ->GammaTable[i]; + + } + + return TRUE; +} + +// Check for endpoints + +static +LCMSBOOL HasProperEndpoints(LPGAMMATABLE t) +{ + if (t ->GammaTable[0] != 0) return FALSE; + if (t ->GammaTable[t ->nEntries-1] != 0xFFFF) return FALSE; + + return TRUE; +} + + + +#define PRELINEARIZATION_POINTS 4096 + +// Fixes the gamma balancing of transform. Thanks to Mike Chaney +// for pointing this subtle bug. + +void _cmsComputePrelinearizationTablesFromXFORM(cmsHTRANSFORM h[], int nTransforms, LPLUT Grid) +{ + LPGAMMATABLE Trans[MAXCHANNELS]; + unsigned int t, i, v; + int j; + WORD In[MAXCHANNELS], Out[MAXCHANNELS]; + LCMSBOOL lIsSuitable; + _LPcmsTRANSFORM InputXForm = (_LPcmsTRANSFORM) h[0]; + _LPcmsTRANSFORM OutputXForm = (_LPcmsTRANSFORM) h[nTransforms-1]; + + + // First space is *Lab, use our specialized curves for v2 Lab + + if (InputXForm ->EntryColorSpace == icSigLabData && + OutputXForm->ExitColorSpace != icSigLabData) { + + CreateLabPrelinearization(Trans); + cmsAllocLinearTable(Grid, Trans, 1); + cmsFreeGammaTriple(Trans); + return; + } + + + // Do nothing on all but Gray/RGB to Gray/RGB transforms + + if (((InputXForm ->EntryColorSpace != icSigRgbData) && (InputXForm ->EntryColorSpace != icSigGrayData)) || + ((OutputXForm->ExitColorSpace != icSigRgbData) && (OutputXForm->ExitColorSpace != icSigGrayData))) return; + + + for (t = 0; t < Grid -> InputChan; t++) + Trans[t] = cmsAllocGamma(PRELINEARIZATION_POINTS); + + for (i=0; i < PRELINEARIZATION_POINTS; i++) { + + v = _cmsQuantizeVal(i, PRELINEARIZATION_POINTS); + + for (t=0; t < Grid -> InputChan; t++) + In[t] = (WORD) v; + + cmsDoTransform(h[0], In, Out, 1); + for (j=1; j < nTransforms; j++) + cmsDoTransform(h[j], Out, Out, 1); + + for (t=0; t < Grid -> InputChan; t++) + Trans[t] ->GammaTable[i] = Out[t]; + + } + + + // Check transfer curves + lIsSuitable = TRUE; + for (t=0; (lIsSuitable && (t < Grid->InputChan)); t++) { + + + // Exclude if already linear + if (MostlyLinear(Trans[t]->GammaTable, PRELINEARIZATION_POINTS)) + lIsSuitable = FALSE; + + // Exclude if non-monotonic + if (!IsMonotonic(Trans[t])) + lIsSuitable = FALSE; + + // Exclude if weird endpoints + if (!HasProperEndpoints(Trans[t])) + lIsSuitable = FALSE; + + /* + // Exclude if transfer function is not smooth enough + // to be modelled as a gamma function, or the gamma is reversed + + if (cmsEstimateGamma(Trans[t]) < 1.0) + lIsSuitable = FALSE; + */ + + } + + if (lIsSuitable) { + + for (t = 0; t < Grid ->InputChan; t++) + SlopeLimiting(Trans[t]->GammaTable, Trans[t]->nEntries); + } + + if (lIsSuitable) cmsAllocLinearTable(Grid, Trans, 1); + + + for (t = 0; t < Grid ->InputChan; t++) + cmsFreeGamma(Trans[t]); + + +} + + +// Compute K -> L* relationship. Flags may include black point compensation. In this case, +// the relationship is assumed from the profile with BPC to a black point zero. +static +LPGAMMATABLE ComputeKToLstar(cmsHPROFILE hProfile, int nPoints, int Intent, DWORD dwFlags) +{ + LPGAMMATABLE out; + int i; + WORD cmyk[4], wLab[3]; + cmsHPROFILE hLab = cmsCreateLabProfile(NULL); + cmsHTRANSFORM xform = cmsCreateTransform(hProfile, TYPE_CMYK_16, + hLab, TYPE_Lab_16, + Intent, (dwFlags|cmsFLAGS_NOTPRECALC)); + + + out = cmsAllocGamma(nPoints); + for (i=0; i < nPoints; i++) { + + cmyk[0] = 0; + cmyk[1] = 0; + cmyk[2] = 0; + cmyk[3] = _cmsQuantizeVal(i, nPoints); + + cmsDoTransform(xform, cmyk, wLab, 1); + out->GammaTable[i] = (WORD) (0xFFFF - wLab[0]); + } + + cmsDeleteTransform(xform); + cmsCloseProfile(hLab); + + return out; +} + + + +// Compute Black tone curve on a CMYK -> CMYK transform. This is done by +// using the proof direction on both profiles to find K->L* relationship +// then joining both curves. dwFlags may include black point compensation. + +LPGAMMATABLE _cmsBuildKToneCurve(cmsHTRANSFORM hCMYK2CMYK, int nPoints) +{ + LPGAMMATABLE in, out; + LPGAMMATABLE KTone; + _LPcmsTRANSFORM p = (_LPcmsTRANSFORM) hCMYK2CMYK; + + + // Make sure CMYK -> CMYK + if (p -> EntryColorSpace != icSigCmykData || + p -> ExitColorSpace != icSigCmykData) return NULL; + + // Create individual curves. BPC works also as each K to L* is + // computed as a BPC to zero black point in case of L* + in = ComputeKToLstar(p ->InputProfile, nPoints, p->Intent, p -> dwOriginalFlags); + out = ComputeKToLstar(p ->OutputProfile, nPoints, p->Intent, p -> dwOriginalFlags); + + // Build the relationship + KTone = cmsJoinGamma(in, out); + + cmsFreeGamma(in); cmsFreeGamma(out); + + // Make sure it is monotonic + + if (!IsMonotonic(KTone)) { + + cmsFreeGamma(KTone); + return NULL; + } + + + return KTone; +} diff --git a/icc2ps/cmsintrp.c b/icc2ps/cmsintrp.c new file mode 100644 index 0000000..ae7d21d --- /dev/null +++ b/icc2ps/cmsintrp.c @@ -0,0 +1,1105 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// Interpolation + +#include "lcms.h" + +void cmsCalcL16Params(int nSamples, LPL16PARAMS p) +{ + p -> nSamples = nSamples; + p -> Domain = (WORD) (nSamples - 1); + p -> nInputs = p -> nOutputs = 1; + +} + + + +// Eval gray LUT having only one input channel + +static +void Eval1Input(WORD StageABC[], WORD StageLMN[], WORD LutTable[], LPL16PARAMS p16) +{ + Fixed32 fk; + Fixed32 k0, k1, rk, K0, K1; + int OutChan; + + fk = ToFixedDomain((Fixed32) StageABC[0] * p16 -> Domain); + k0 = FIXED_TO_INT(fk); + rk = (WORD) FIXED_REST_TO_INT(fk); + + k1 = k0 + (StageABC[0] != 0xFFFFU ? 1 : 0); + + K0 = p16 -> opta1 * k0; + K1 = p16 -> opta1 * k1; + + for (OutChan=0; OutChan < p16->nOutputs; OutChan++) { + + StageLMN[OutChan] = (WORD) FixedLERP(rk, LutTable[K0+OutChan], + LutTable[K1+OutChan]); + } +} + + + +// For more that 3 inputs (i.e., CMYK) +// evaluate two 3-dimensional interpolations and then linearly interpolate between them. +static +void Eval4Inputs(WORD StageABC[], WORD StageLMN[], WORD LutTable[], LPL16PARAMS p16) +{ + Fixed32 fk; + Fixed32 k0, rk; + int K0, K1; + LPWORD T; + int i; + WORD Tmp1[MAXCHANNELS], Tmp2[MAXCHANNELS]; + + + fk = ToFixedDomain((Fixed32) StageABC[0] * p16 -> Domain); + k0 = FIXED_TO_INT(fk); + rk = FIXED_REST_TO_INT(fk); + + K0 = p16 -> opta4 * k0; + K1 = p16 -> opta4 * (k0 + (StageABC[0] != 0xFFFFU ? 1 : 0)); + + p16 -> nInputs = 3; + + T = LutTable + K0; + + cmsTetrahedralInterp16(StageABC + 1, Tmp1, T, p16); + + + T = LutTable + K1; + + cmsTetrahedralInterp16(StageABC + 1, Tmp2, T, p16); + + + p16 -> nInputs = 4; + for (i=0; i < p16 -> nOutputs; i++) + { + StageLMN[i] = (WORD) FixedLERP(rk, Tmp1[i], Tmp2[i]); + + } + +} + + +static +void Eval5Inputs(WORD StageABC[], WORD StageLMN[], WORD LutTable[], LPL16PARAMS p16) +{ + Fixed32 fk; + Fixed32 k0, rk; + int K0, K1; + LPWORD T; + int i; + WORD Tmp1[MAXCHANNELS], Tmp2[MAXCHANNELS]; + + + fk = ToFixedDomain((Fixed32) StageABC[0] * p16 -> Domain); + k0 = FIXED_TO_INT(fk); + rk = FIXED_REST_TO_INT(fk); + + K0 = p16 -> opta5 * k0; + K1 = p16 -> opta5 * (k0 + (StageABC[0] != 0xFFFFU ? 1 : 0)); + + p16 -> nInputs = 4; + + T = LutTable + K0; + + Eval4Inputs(StageABC + 1, Tmp1, T, p16); + + T = LutTable + K1; + + Eval4Inputs(StageABC + 1, Tmp2, T, p16); + + p16 -> nInputs = 5; + for (i=0; i < p16 -> nOutputs; i++) + { + StageLMN[i] = (WORD) FixedLERP(rk, Tmp1[i], Tmp2[i]); + + } + +} + + +static +void Eval6Inputs(WORD StageABC[], WORD StageLMN[], WORD LutTable[], LPL16PARAMS p16) +{ + Fixed32 fk; + Fixed32 k0, rk; + int K0, K1; + LPWORD T; + int i; + WORD Tmp1[MAXCHANNELS], Tmp2[MAXCHANNELS]; + + + fk = ToFixedDomain((Fixed32) StageABC[0] * p16 -> Domain); + k0 = FIXED_TO_INT(fk); + rk = FIXED_REST_TO_INT(fk); + + K0 = p16 -> opta6 * k0; + K1 = p16 -> opta6 * (k0 + (StageABC[0] != 0xFFFFU ? 1 : 0)); + + p16 -> nInputs = 5; + + T = LutTable + K0; + + Eval5Inputs(StageABC + 1, Tmp1, T, p16); + + T = LutTable + K1; + + Eval5Inputs(StageABC + 1, Tmp2, T, p16); + + p16 -> nInputs = 6; + for (i=0; i < p16 -> nOutputs; i++) + { + StageLMN[i] = (WORD) FixedLERP(rk, Tmp1[i], Tmp2[i]); + } + +} + +static +void Eval7Inputs(WORD StageABC[], WORD StageLMN[], WORD LutTable[], LPL16PARAMS p16) +{ + Fixed32 fk; + Fixed32 k0, rk; + int K0, K1; + LPWORD T; + int i; + WORD Tmp1[MAXCHANNELS], Tmp2[MAXCHANNELS]; + + + fk = ToFixedDomain((Fixed32) StageABC[0] * p16 -> Domain); + k0 = FIXED_TO_INT(fk); + rk = FIXED_REST_TO_INT(fk); + + K0 = p16 -> opta7 * k0; + K1 = p16 -> opta7 * (k0 + (StageABC[0] != 0xFFFFU ? 1 : 0)); + + p16 -> nInputs = 6; + + T = LutTable + K0; + + Eval6Inputs(StageABC + 1, Tmp1, T, p16); + + T = LutTable + K1; + + Eval6Inputs(StageABC + 1, Tmp2, T, p16); + + p16 -> nInputs = 7; + for (i=0; i < p16 -> nOutputs; i++) + { + StageLMN[i] = (WORD) FixedLERP(rk, Tmp1[i], Tmp2[i]); + } + +} + +static +void Eval8Inputs(WORD StageABC[], WORD StageLMN[], WORD LutTable[], LPL16PARAMS p16) +{ + Fixed32 fk; + Fixed32 k0, rk; + int K0, K1; + LPWORD T; + int i; + WORD Tmp1[MAXCHANNELS], Tmp2[MAXCHANNELS]; + + + fk = ToFixedDomain((Fixed32) StageABC[0] * p16 -> Domain); + k0 = FIXED_TO_INT(fk); + rk = FIXED_REST_TO_INT(fk); + + K0 = p16 -> opta8 * k0; + K1 = p16 -> opta8 * (k0 + (StageABC[0] != 0xFFFFU ? 1 : 0)); + + p16 -> nInputs = 7; + + T = LutTable + K0; + + Eval7Inputs(StageABC + 1, Tmp1, T, p16); + + T = LutTable + K1; + + Eval7Inputs(StageABC + 1, Tmp2, T, p16); + + p16 -> nInputs = 8; + for (i=0; i < p16 -> nOutputs; i++) + { + StageLMN[i] = (WORD) FixedLERP(rk, Tmp1[i], Tmp2[i]); + } + +} + + +// Fills optimization parameters + +void cmsCalcCLUT16ParamsEx(int nSamples, int InputChan, int OutputChan, + LCMSBOOL lUseTetrahedral, LPL16PARAMS p) +{ + int clutPoints; + + cmsCalcL16Params(nSamples, p); + + p -> nInputs = InputChan; + p -> nOutputs = OutputChan; + + clutPoints = p -> Domain + 1; + + p -> opta1 = p -> nOutputs; // Z + p -> opta2 = p -> opta1 * clutPoints; // Y + p -> opta3 = p -> opta2 * clutPoints; // X + p -> opta4 = p -> opta3 * clutPoints; // Used only in 4 inputs LUT + p -> opta5 = p -> opta4 * clutPoints; // Used only in 5 inputs LUT + p -> opta6 = p -> opta5 * clutPoints; // Used only on 6 inputs LUT + p -> opta7 = p -> opta6 * clutPoints; // Used only on 7 inputs LUT + p -> opta8 = p -> opta7 * clutPoints; // Used only on 8 inputs LUT + + + switch (InputChan) { + + + case 1: // Gray LUT + + p ->Interp3D = Eval1Input; + break; + + case 3: // RGB et al + if (lUseTetrahedral) { + p ->Interp3D = cmsTetrahedralInterp16; + } + else + p ->Interp3D = cmsTrilinearInterp16; + break; + + case 4: // CMYK LUT + p ->Interp3D = Eval4Inputs; + break; + + case 5: // 5 Inks + p ->Interp3D = Eval5Inputs; + break; + + case 6: // 6 Inks + p -> Interp3D = Eval6Inputs; + break; + + case 7: // 7 inks + p ->Interp3D = Eval7Inputs; + break; + + case 8: // 8 inks + p ->Interp3D = Eval8Inputs; + break; + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "Unsupported restoration (%d channels)", InputChan); + } + +} + + +void cmsCalcCLUT16Params(int nSamples, int InputChan, int OutputChan, LPL16PARAMS p) +{ + cmsCalcCLUT16ParamsEx(nSamples, InputChan, OutputChan, FALSE, p); +} + + + +#ifdef USE_FLOAT + + +// Floating-point version + +WORD cmsLinearInterpLUT16(WORD Value, WORD LutTable[], LPL16PARAMS p) +{ + double y1, y0; + double y; + double val2, rest; + int cell0, cell1; + + // if last value... + + if (Value == 0xffff) return LutTable[p -> Domain]; + + val2 = p -> Domain * ((double) Value / 65535.0); + + cell0 = (int) floor(val2); + cell1 = (int) ceil(val2); + + // Rest is 16 LSB bits + + rest = val2 - cell0; + + y0 = LutTable[cell0] ; + y1 = LutTable[cell1] ; + + y = y0 + (y1 - y0) * rest; + + + return (WORD) floor(y+.5); +} + +#endif + + +// +// Linear interpolation (Fixed-point optimized, but C source) +// + + +#ifdef USE_C + +WORD cmsLinearInterpLUT16(WORD Value1, WORD LutTable[], LPL16PARAMS p) +{ + WORD y1, y0; + WORD y; + int dif, a1; + int cell0, rest; + int val3, Value; + + // if last value... + + + Value = Value1; + if (Value == 0xffff) return LutTable[p -> Domain]; + + val3 = p -> Domain * Value; + val3 = ToFixedDomain(val3); // To fixed 15.16 + + cell0 = FIXED_TO_INT(val3); // Cell is 16 MSB bits + rest = FIXED_REST_TO_INT(val3); // Rest is 16 LSB bits + + y0 = LutTable[cell0] ; + y1 = LutTable[cell0+1] ; + + dif = (int) y1 - y0; // dif is in domain -ffff ... ffff + + if (dif >= 0) + { + a1 = ToFixedDomain(dif * rest); + a1 += 0x8000; + } + else + { + a1 = ToFixedDomain((- dif) * rest); + a1 -= 0x8000; + a1 = -a1; + } + + y = (WORD) (y0 + FIXED_TO_INT(a1)); + + return y; +} + +#endif + +// Linear interpolation (asm by hand optimized) + +#ifdef USE_ASSEMBLER + +#ifdef _MSC_VER +#pragma warning(disable : 4033) +#pragma warning(disable : 4035) +#endif + +WORD cmsLinearInterpLUT16(WORD Value, WORD LutTable[], LPL16PARAMS p) +{ + int xDomain = p -> Domain; + + + if (Value == 0xffff) return LutTable[p -> Domain]; + else + ASM { + xor eax, eax + mov ax, word ptr ss:Value + mov edx, ss:xDomain + mul edx // val3 = p -> Domain * Value; + shld edx, eax, 16 // Convert it to fixed 15.16 + shl eax, 16 // * 65536 / 65535 + mov ebx, 0x0000ffff + div ebx + mov ecx, eax + sar ecx, 16 // ecx = cell0 + mov edx, eax // rest = (val2 & 0xFFFFU) + and edx, 0x0000ffff // edx = rest + mov ebx, ss:LutTable + lea eax, dword ptr [ebx+2*ecx] // Ptr to LUT + xor ebx, ebx + mov bx, word ptr [eax] // EBX = y0 + movzx eax, word ptr [eax+2] // EAX = y1 + sub eax, ebx // EAX = y1-y0 + js IsNegative + mul edx // EAX = EAX * rest + shld edx, eax, 16 // Pass it to fixed + sal eax, 16 // * 65536 / 65535 + mov ecx, 0x0000ffff + div ecx + add eax, 0x8000 // Rounding + sar eax, 16 + add eax, ebx // Done! + } + + RET((WORD) _EAX); + + IsNegative: + + ASM { + neg eax + mul edx // EAX = EAX * rest + shld edx, eax, 16 // Pass it to fixed + sal eax, 16 // * 65536 / 65535 + mov ecx, 0x0000ffff + div ecx + sub eax, 0x8000 + neg eax + sar eax, 16 + add eax, ebx // Done! + } + + RET((WORD) _EAX); +} + +#ifdef _MSC_VER +#pragma warning(default : 4033) +#pragma warning(default : 4035) +#endif + +#endif + +Fixed32 cmsLinearInterpFixed(WORD Value1, WORD LutTable[], LPL16PARAMS p) +{ + Fixed32 y1, y0; + int cell0; + int val3, Value; + + // if last value... + + + Value = Value1; + if (Value == 0xffffU) return LutTable[p -> Domain]; + + val3 = p -> Domain * Value; + val3 = ToFixedDomain(val3); // To fixed 15.16 + + cell0 = FIXED_TO_INT(val3); // Cell is 16 MSB bits + + y0 = LutTable[cell0] ; + y1 = LutTable[cell0+1] ; + + + return y0 + FixedMul((y1 - y0), (val3 & 0xFFFFL)); +} + + +// Reverse Lineal interpolation (16 bits) +// Im using a sort of binary search here, this is not a time-critical function + +WORD cmsReverseLinearInterpLUT16(WORD Value, WORD LutTable[], LPL16PARAMS p) +{ + register int l = 1; + register int r = 0x10000; + register int x = 0, res; // 'int' Give spacing for negative values + int NumZeroes, NumPoles; + int cell0, cell1; + double val2; + double y0, y1, x0, x1; + double a, b, f; + + // July/27 2001 - Expanded to handle degenerated curves with an arbitrary + // number of elements containing 0 at the begining of the table (Zeroes) + // and another arbitrary number of poles (FFFFh) at the end. + // First the zero and pole extents are computed, then value is compared. + + NumZeroes = 0; + while (LutTable[NumZeroes] == 0 && NumZeroes < p -> Domain) + NumZeroes++; + + // There are no zeros at the beginning and we are trying to find a zero, so + // return anything. It seems zero would be the less destructive choice + + if (NumZeroes == 0 && Value == 0) + return 0; + + NumPoles = 0; + while (LutTable[p -> Domain - NumPoles] == 0xFFFF && NumPoles < p -> Domain) + NumPoles++; + + // Does the curve belong to this case? + if (NumZeroes > 1 || NumPoles > 1) + { + int a, b; + + // Identify if value fall downto 0 or FFFF zone + if (Value == 0) return 0; + // if (Value == 0xFFFF) return 0xFFFF; + + // else restrict to valid zone + + a = ((NumZeroes-1) * 0xFFFF) / p->Domain; + b = ((p -> Domain - NumPoles) * 0xFFFF) / p ->Domain; + + l = a - 1; + r = b + 1; + } + + + // Seems not a degenerated case... apply binary search + + while (r > l) { + + x = (l + r) / 2; + + res = (int) cmsLinearInterpLUT16((WORD) (x - 1), LutTable, p); + + if (res == Value) { + + // Found exact match. + + return (WORD) (x - 1); + } + + if (res > Value) r = x - 1; + else l = x + 1; + } + + // Not found, should we interpolate? + + + // Get surrounding nodes + + val2 = p -> Domain * ((double) (x - 1) / 65535.0); + + cell0 = (int) floor(val2); + cell1 = (int) ceil(val2); + + if (cell0 == cell1) return (WORD) x; + + y0 = LutTable[cell0] ; + x0 = (65535.0 * cell0) / p ->Domain; + + y1 = LutTable[cell1] ; + x1 = (65535.0 * cell1) / p ->Domain; + + a = (y1 - y0) / (x1 - x0); + b = y0 - a * x0; + + if (fabs(a) < 0.01) return (WORD) x; + + f = ((Value - b) / a); + + if (f < 0.0) return (WORD) 0; + if (f >= 65535.0) return (WORD) 0xFFFF; + + return (WORD) floor(f + 0.5); + +} + + + + +// Trilinear interpolation (16 bits) - float version + +#ifdef USE_FLOAT +void cmsTrilinearInterp16(WORD Input[], WORD Output[], + WORD LutTable[], LPL16PARAMS p) + +{ +# define LERP(a,l,h) (double) ((l)+(((h)-(l))*(a))) +# define DENS(X, Y, Z) (double) (LutTable[TotalOut*((Z)+clutPoints*((Y)+clutPoints*(X)))+OutChan]) + + + + double px, py, pz; + int x0, y0, z0, + x1, y1, z1; + int clutPoints, TotalOut, OutChan; + double fx, fy, fz, + d000, d001, d010, d011, + d100, d101, d110, d111, + dx00, dx01, dx10, dx11, + dxy0, dxy1, dxyz; + + + clutPoints = p -> Domain + 1; + TotalOut = p -> nOutputs; + + px = ((double) Input[0] * (p->Domain)) / 65535.0; + py = ((double) Input[1] * (p->Domain)) / 65535.0; + pz = ((double) Input[2] * (p->Domain)) / 65535.0; + + x0 = (int) _cmsQuickFloor(px); fx = px - (double) x0; + y0 = (int) _cmsQuickFloor(py); fy = py - (double) y0; + z0 = (int) _cmsQuickFloor(pz); fz = pz - (double) z0; + + x1 = x0 + (Input[0] != 0xFFFFU ? 1 : 0); + y1 = y0 + (Input[1] != 0xFFFFU ? 1 : 0); + z1 = z0 + (Input[2] != 0xFFFFU ? 1 : 0); + + + for (OutChan = 0; OutChan < TotalOut; OutChan++) + { + + d000 = DENS(x0, y0, z0); + d001 = DENS(x0, y0, z1); + d010 = DENS(x0, y1, z0); + d011 = DENS(x0, y1, z1); + + d100 = DENS(x1, y0, z0); + d101 = DENS(x1, y0, z1); + d110 = DENS(x1, y1, z0); + d111 = DENS(x1, y1, z1); + + + dx00 = LERP(fx, d000, d100); + dx01 = LERP(fx, d001, d101); + dx10 = LERP(fx, d010, d110); + dx11 = LERP(fx, d011, d111); + + dxy0 = LERP(fy, dx00, dx10); + dxy1 = LERP(fy, dx01, dx11); + + dxyz = LERP(fz, dxy0, dxy1); + + Output[OutChan] = (WORD) floor(dxyz + .5); + } + + +# undef LERP +# undef DENS +} + + +#endif + + +#ifndef USE_FLOAT + +// Trilinear interpolation (16 bits) - optimized version + +void cmsTrilinearInterp16(WORD Input[], WORD Output[], + WORD LutTable[], LPL16PARAMS p) + +{ +#define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) +#define LERP(a,l,h) (WORD) (l+ ROUND_FIXED_TO_INT(((h-l)*a))) + + + int OutChan, TotalOut; + Fixed32 fx, fy, fz; + register int rx, ry, rz; + int x0, y0, z0; + register int X0, X1, Y0, Y1, Z0, Z1; + int d000, d001, d010, d011, + d100, d101, d110, d111, + dx00, dx01, dx10, dx11, + dxy0, dxy1, dxyz; + + + TotalOut = p -> nOutputs; + + fx = ToFixedDomain((int) Input[0] * p -> Domain); + x0 = FIXED_TO_INT(fx); + rx = FIXED_REST_TO_INT(fx); // Rest in 0..1.0 domain + + + fy = ToFixedDomain((int) Input[1] * p -> Domain); + y0 = FIXED_TO_INT(fy); + ry = FIXED_REST_TO_INT(fy); + + fz = ToFixedDomain((int) Input[2] * p -> Domain); + z0 = FIXED_TO_INT(fz); + rz = FIXED_REST_TO_INT(fz); + + + + X0 = p -> opta3 * x0; + X1 = X0 + (Input[0] == 0xFFFFU ? 0 : p->opta3); + + Y0 = p -> opta2 * y0; + Y1 = Y0 + (Input[1] == 0xFFFFU ? 0 : p->opta2); + + Z0 = p -> opta1 * z0; + Z1 = Z0 + (Input[2] == 0xFFFFU ? 0 : p->opta1); + + + + for (OutChan = 0; OutChan < TotalOut; OutChan++) + { + + d000 = DENS(X0, Y0, Z0); + d001 = DENS(X0, Y0, Z1); + d010 = DENS(X0, Y1, Z0); + d011 = DENS(X0, Y1, Z1); + + d100 = DENS(X1, Y0, Z0); + d101 = DENS(X1, Y0, Z1); + d110 = DENS(X1, Y1, Z0); + d111 = DENS(X1, Y1, Z1); + + + dx00 = LERP(rx, d000, d100); + dx01 = LERP(rx, d001, d101); + dx10 = LERP(rx, d010, d110); + dx11 = LERP(rx, d011, d111); + + dxy0 = LERP(ry, dx00, dx10); + dxy1 = LERP(ry, dx01, dx11); + + dxyz = LERP(rz, dxy0, dxy1); + + Output[OutChan] = (WORD) dxyz; + } + + +# undef LERP +# undef DENS +} + +#endif + + +#ifdef USE_FLOAT + +#define DENS(X, Y, Z) (double) (LutTable[TotalOut*((Z)+clutPoints*((Y)+clutPoints*(X)))+OutChan]) + + +// Tetrahedral interpolation, using Sakamoto algorithm. + +void cmsTetrahedralInterp16(WORD Input[], + WORD Output[], + WORD LutTable[], + LPL16PARAMS p) +{ + double px, py, pz; + int x0, y0, z0, + x1, y1, z1; + double fx, fy, fz; + double c1=0, c2=0, c3=0; + int clutPoints, OutChan, TotalOut; + + + clutPoints = p -> Domain + 1; + TotalOut = p -> nOutputs; + + + px = ((double) Input[0] * p->Domain) / 65535.0; + py = ((double) Input[1] * p->Domain) / 65535.0; + pz = ((double) Input[2] * p->Domain) / 65535.0; + + x0 = (int) _cmsQuickFloor(px); fx = (px - (double) x0); + y0 = (int) _cmsQuickFloor(py); fy = (py - (double) y0); + z0 = (int) _cmsQuickFloor(pz); fz = (pz - (double) z0); + + + x1 = x0 + (Input[0] != 0xFFFFU ? 1 : 0); + y1 = y0 + (Input[1] != 0xFFFFU ? 1 : 0); + z1 = z0 + (Input[2] != 0xFFFFU ? 1 : 0); + + + for (OutChan=0; OutChan < TotalOut; OutChan++) + { + + // These are the 6 Tetrahedral + + if (fx >= fy && fy >= fz) + { + c1 = DENS(x1, y0, z0) - DENS(x0, y0, z0); + c2 = DENS(x1, y1, z0) - DENS(x1, y0, z0); + c3 = DENS(x1, y1, z1) - DENS(x1, y1, z0); + } + else + if (fx >= fz && fz >= fy) + { + c1 = DENS(x1, y0, z0) - DENS(x0, y0, z0); + c2 = DENS(x1, y1, z1) - DENS(x1, y0, z1); + c3 = DENS(x1, y0, z1) - DENS(x1, y0, z0); + } + else + if (fz >= fx && fx >= fy) + { + c1 = DENS(x1, y0, z1) - DENS(x0, y0, z1); + c2 = DENS(x1, y1, z1) - DENS(x1, y0, z1); + c3 = DENS(x0, y0, z1) - DENS(x0, y0, z0); + } + else + if (fy >= fx && fx >= fz) + { + c1 = DENS(x1, y1, z0) - DENS(x0, y1, z0); + c2 = DENS(x0, y1, z0) - DENS(x0, y0, z0); + c3 = DENS(x1, y1, z1) - DENS(x1, y1, z0); + + } + else + if (fy >= fz && fz >= fx) + { + c1 = DENS(x1, y1, z1) - DENS(x0, y1, z1); + c2 = DENS(x0, y1, z0) - DENS(x0, y0, z0); + c3 = DENS(x0, y1, z1) - DENS(x0, y1, z0); + } + else + if (fz >= fy && fy >= fx) + { + c1 = DENS(x1, y1, z1) - DENS(x0, y1, z1); + c2 = DENS(x0, y1, z1) - DENS(x0, y0, z1); + c3 = DENS(x0, y0, z1) - DENS(x0, y0, z0); + } + else + { + c1 = c2 = c3 = 0; + // assert(FALSE); + } + + + Output[OutChan] = (WORD) floor((double) DENS(x0,y0,z0) + c1 * fx + c2 * fy + c3 * fz + .5); + } + +} + +#undef DENS + +#else + +#define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) + + +void cmsTetrahedralInterp16(WORD Input[], + WORD Output[], + WORD LutTable1[], + LPL16PARAMS p) +{ + + Fixed32 fx, fy, fz; + Fixed32 rx, ry, rz; + int x0, y0, z0; + Fixed32 c0, c1, c2, c3, Rest; + int OutChan; + Fixed32 X0, X1, Y0, Y1, Z0, Z1; + int TotalOut = p -> nOutputs; + register LPWORD LutTable = LutTable1; + + + + fx = ToFixedDomain((int) Input[0] * p -> Domain); + fy = ToFixedDomain((int) Input[1] * p -> Domain); + fz = ToFixedDomain((int) Input[2] * p -> Domain); + + x0 = FIXED_TO_INT(fx); + y0 = FIXED_TO_INT(fy); + z0 = FIXED_TO_INT(fz); + + rx = FIXED_REST_TO_INT(fx); + ry = FIXED_REST_TO_INT(fy); + rz = FIXED_REST_TO_INT(fz); + + X0 = p -> opta3 * x0; + X1 = X0 + (Input[0] == 0xFFFFU ? 0 : p->opta3); + + Y0 = p -> opta2 * y0; + Y1 = Y0 + (Input[1] == 0xFFFFU ? 0 : p->opta2); + + Z0 = p -> opta1 * z0; + Z1 = Z0 + (Input[2] == 0xFFFFU ? 0 : p->opta1); + + + + // These are the 6 Tetrahedral + for (OutChan=0; OutChan < TotalOut; OutChan++) { + + c0 = DENS(X0, Y0, Z0); + + if (rx >= ry && ry >= rz) { + + c1 = DENS(X1, Y0, Z0) - c0; + c2 = DENS(X1, Y1, Z0) - DENS(X1, Y0, Z0); + c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); + + } + else + if (rx >= rz && rz >= ry) { + + c1 = DENS(X1, Y0, Z0) - c0; + c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); + c3 = DENS(X1, Y0, Z1) - DENS(X1, Y0, Z0); + + } + else + if (rz >= rx && rx >= ry) { + + c1 = DENS(X1, Y0, Z1) - DENS(X0, Y0, Z1); + c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); + c3 = DENS(X0, Y0, Z1) - c0; + + } + else + if (ry >= rx && rx >= rz) { + + c1 = DENS(X1, Y1, Z0) - DENS(X0, Y1, Z0); + c2 = DENS(X0, Y1, Z0) - c0; + c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); + + } + else + if (ry >= rz && rz >= rx) { + + c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); + c2 = DENS(X0, Y1, Z0) - c0; + c3 = DENS(X0, Y1, Z1) - DENS(X0, Y1, Z0); + + } + else + if (rz >= ry && ry >= rx) { + + c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); + c2 = DENS(X0, Y1, Z1) - DENS(X0, Y0, Z1); + c3 = DENS(X0, Y0, Z1) - c0; + + } + else { + c1 = c2 = c3 = 0; + // assert(FALSE); + } + + Rest = c1 * rx + c2 * ry + c3 * rz; + + // There is a lot of math hidden in this expression. The rest is in fixed domain + // and the result in 0..ffff domain. So the complete expression should be + // ROUND_FIXED_TO_INT(ToFixedDomain(Rest)) But that can be optimized as (Rest + 0x7FFF) / 0xFFFF + + Output[OutChan] = (WORD) (c0 + ((Rest + 0x7FFF) / 0xFFFF)); + + } + +} + + + +#undef DENS + +#endif + + +// A optimized interpolation for 8-bit input. + +#define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) + +void cmsTetrahedralInterp8(WORD Input[], + WORD Output[], + WORD LutTable[], + LPL16PARAMS p) +{ + + int r, g, b; + Fixed32 rx, ry, rz; + Fixed32 c1, c2, c3, Rest; + int OutChan; + register Fixed32 X0, X1, Y0, Y1, Z0, Z1; + int TotalOut = p -> nOutputs; + register LPL8PARAMS p8 = p ->p8; + + + + r = Input[0] >> 8; + g = Input[1] >> 8; + b = Input[2] >> 8; + + X0 = X1 = p8->X0[r]; + Y0 = Y1 = p8->Y0[g]; + Z0 = Z1 = p8->Z0[b]; + + X1 += (r == 255) ? 0 : p ->opta3; + Y1 += (g == 255) ? 0 : p ->opta2; + Z1 += (b == 255) ? 0 : p ->opta1; + + rx = p8 ->rx[r]; + ry = p8 ->ry[g]; + rz = p8 ->rz[b]; + + + // These are the 6 Tetrahedral + for (OutChan=0; OutChan < TotalOut; OutChan++) { + + if (rx >= ry && ry >= rz) + { + + c1 = DENS(X1, Y0, Z0) - DENS(X0, Y0, Z0); + c2 = DENS(X1, Y1, Z0) - DENS(X1, Y0, Z0); + c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); + + } + else + if (rx >= rz && rz >= ry) + { + c1 = DENS(X1, Y0, Z0) - DENS(X0, Y0, Z0); + c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); + c3 = DENS(X1, Y0, Z1) - DENS(X1, Y0, Z0); + + } + else + if (rz >= rx && rx >= ry) + { + + c1 = DENS(X1, Y0, Z1) - DENS(X0, Y0, Z1); + c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); + c3 = DENS(X0, Y0, Z1) - DENS(X0, Y0, Z0); + + } + else + if (ry >= rx && rx >= rz) + { + + c1 = DENS(X1, Y1, Z0) - DENS(X0, Y1, Z0); + c2 = DENS(X0, Y1, Z0) - DENS(X0, Y0, Z0); + c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); + + } + else + if (ry >= rz && rz >= rx) + { + + c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); + c2 = DENS(X0, Y1, Z0) - DENS(X0, Y0, Z0); + c3 = DENS(X0, Y1, Z1) - DENS(X0, Y1, Z0); + + } + else + if (rz >= ry && ry >= rx) + { + c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); + c2 = DENS(X0, Y1, Z1) - DENS(X0, Y0, Z1); + c3 = DENS(X0, Y0, Z1) - DENS(X0, Y0, Z0); + + } + else { + c1 = c2 = c3 = 0; + // assert(FALSE); + } + + + Rest = c1 * rx + c2 * ry + c3 * rz; + + Output[OutChan] = (WORD) (DENS(X0,Y0,Z0) + ((Rest + 0x7FFF) / 0xFFFF)); + } + +} + +#undef DENS + diff --git a/icc2ps/cmsio0.c b/icc2ps/cmsio0.c new file mode 100644 index 0000000..6ed9e1f --- /dev/null +++ b/icc2ps/cmsio0.c @@ -0,0 +1,735 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +// Generic I/O, tag dictionary management, profile struct + + + +#include "lcms.h" + + +// Memory-based stream --------------------------------------------------- + +typedef struct { + LPBYTE Block; // Points to allocated memory + size_t Size; // Size of allocated memory + size_t Pointer; // Points to current location + int FreeBlockOnClose; // As title + + } FILEMEM; + +static +LPVOID MemoryOpen(LPBYTE Block, size_t Size, char Mode) +{ + FILEMEM* fm = (FILEMEM*) _cmsMalloc(sizeof(FILEMEM)); + if (fm == NULL) return NULL; + + ZeroMemory(fm, sizeof(FILEMEM)); + + if (Mode == 'r') { + + fm ->Block = (LPBYTE) _cmsMalloc(Size); + if (fm ->Block == NULL) { + _cmsFree(fm); + return NULL; + } + + CopyMemory(fm->Block, Block, Size); + fm ->FreeBlockOnClose = TRUE; + } + else { + fm ->Block = Block; + fm ->FreeBlockOnClose = FALSE; + } + + fm ->Size = Size; + fm ->Pointer = 0; + + return (LPVOID) fm; +} + + +static +size_t MemoryRead(LPVOID buffer, size_t size, size_t count, struct _lcms_iccprofile_struct* Icc) +{ + FILEMEM* ResData = (FILEMEM*) Icc ->stream; + LPBYTE Ptr; + size_t len = size * count; + size_t extent = ResData -> Pointer + len; + + if (len == 0) { + return 0; + } + + if (len / size != count) { + cmsSignalError(LCMS_ERRC_ABORTED, "Read from memory error. Integer overflow with count / size."); + return 0; + } + + if (extent < len || extent < ResData -> Pointer) { + cmsSignalError(LCMS_ERRC_ABORTED, "Read from memory error. Integer overflow with len."); + return 0; + } + + if (ResData -> Pointer + len > ResData -> Size) { + + len = (ResData -> Size - ResData -> Pointer); + cmsSignalError(LCMS_ERRC_ABORTED, "Read from memory error. Got %d bytes, block should be of %d bytes", len * size, count * size); + return 0; + } + + Ptr = ResData -> Block; + Ptr += ResData -> Pointer; + CopyMemory(buffer, Ptr, len); + ResData -> Pointer += (int) len; + + return count; +} + +// SEEK_CUR is assumed + +static +LCMSBOOL MemorySeek(struct _lcms_iccprofile_struct* Icc, size_t offset) +{ + FILEMEM* ResData = (FILEMEM*) Icc ->stream; + + if (offset > ResData ->Size) { + cmsSignalError(LCMS_ERRC_ABORTED, "Pointer error; probably corrupted file"); + return TRUE; + } + + ResData ->Pointer = (DWORD) offset; + return FALSE; +} + +// FTell + +static +size_t MemoryTell(struct _lcms_iccprofile_struct* Icc) +{ + FILEMEM* ResData = (FILEMEM*) Icc ->stream; + + return ResData -> Pointer; +} + + +// Writes data to memory, also keeps used space for further reference. NO CHECK IS PERFORMED + +static +LCMSBOOL MemoryWrite(struct _lcms_iccprofile_struct* Icc, size_t size, void *Ptr) +{ + FILEMEM* ResData = (FILEMEM*) Icc ->stream; + + if (size == 0) return TRUE; + + if (ResData != NULL) + CopyMemory(ResData ->Block + Icc ->UsedSpace, Ptr, size); + + Icc->UsedSpace += size; + + return TRUE; +} + + +static +LCMSBOOL MemoryClose(struct _lcms_iccprofile_struct* Icc) +{ + FILEMEM* ResData = (FILEMEM*) Icc ->stream; + + if (ResData ->FreeBlockOnClose) { + + if (ResData ->Block) _cmsFree(ResData ->Block); + } + _cmsFree(ResData); + return 0; +} + + +// File-based stream ------------------------------------------------------- + +static +LPVOID FileOpen(const char* filename) +{ + return (void*) fopen(filename, "rb"); +} + +static +size_t FileRead(void *buffer, size_t size, size_t count, struct _lcms_iccprofile_struct* Icc) +{ + size_t nReaded = fread(buffer, size, count, (FILE*) Icc->stream); + if (nReaded != count) { + cmsSignalError(LCMS_ERRC_ABORTED, "Read error. Got %d bytes, block should be of %d bytes", nReaded * size, count * size); + return 0; + } + + return nReaded; +} + + +static +LCMSBOOL FileSeek(struct _lcms_iccprofile_struct* Icc, size_t offset) +{ + if (fseek((FILE*) Icc ->stream, (long) offset, SEEK_SET) != 0) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Seek error; probably corrupted file"); + return TRUE; + } + + return FALSE; +} + + +static +size_t FileTell(struct _lcms_iccprofile_struct* Icc) +{ + return ftell((FILE*) Icc ->stream); +} + +// Writes data to stream, also keeps used space for further reference + + +static +LCMSBOOL FileWrite(struct _lcms_iccprofile_struct* Icc, size_t size, LPVOID Ptr) +{ + if (size == 0) return TRUE; + + Icc->UsedSpace += size; + + if (Icc->stream == NULL) { + + return TRUE; + } + + return (fwrite(Ptr, size, 1, (FILE*) Icc->stream) == 1); +} + + +static +LCMSBOOL FileClose(struct _lcms_iccprofile_struct* Icc) +{ + return fclose((FILE*) Icc ->stream); +} + +// ---------------------------------------------------------------------------------------------------- + + +// Creates an empty structure holding all required parameters + +cmsHPROFILE _cmsCreateProfilePlaceholder(void) +{ + + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) _cmsMalloc(sizeof(LCMSICCPROFILE)); + if (Icc == NULL) return NULL; + + // Empty values + ZeroMemory(Icc, sizeof(LCMSICCPROFILE)); + + // Make sure illuminant is correct + Icc ->Illuminant = *cmsD50_XYZ(); + + // Set it to empty + Icc -> TagCount = 0; + + // Return the handle + return (cmsHPROFILE) Icc; +} + + +// Return the number of tags +icInt32Number LCMSEXPORT cmsGetTagCount(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return Icc->TagCount; +} + +// Return the tag signature of a given tag number +icTagSignature LCMSEXPORT cmsGetTagSignature(cmsHPROFILE hProfile, icInt32Number n) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + + if (n < 0 || n > Icc->TagCount) return (icTagSignature) 0; // Mark as not available + + return Icc ->TagNames[n]; +} + + +// Search for a specific tag in tag dictionary +// Returns position or -1 if tag not found + +icInt32Number _cmsSearchTag(LPLCMSICCPROFILE Profile, icTagSignature sig, LCMSBOOL lSignalError) +{ + icInt32Number i; + + if (sig == 0) return -1; // 0 identifies a special tag holding raw memory. + + for (i=0; i < Profile -> TagCount; i++) { + + if (sig == Profile -> TagNames[i]) + return i; + } + + if (lSignalError) + cmsSignalError(LCMS_ERRC_ABORTED, "Tag '%lx' not found", sig); + + return -1; +} + + +// Check existance + +LCMSBOOL LCMSEXPORT cmsIsTag(cmsHPROFILE hProfile, icTagSignature sig) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + return _cmsSearchTag(Icc, sig, FALSE) >= 0; +} + + + +// Search for a particular tag, replace if found or add new one else + +LPVOID _cmsInitTag(LPLCMSICCPROFILE Icc, icTagSignature sig, size_t size, const void* Init) +{ + LPVOID Ptr; + icInt32Number i; + + i = _cmsSearchTag(Icc, sig, FALSE); + + if (i >=0) { + + if (Icc -> TagPtrs[i]) _cmsFree(Icc -> TagPtrs[i]); + } + else { + + i = Icc -> TagCount; + Icc -> TagCount++; + + if (Icc ->TagCount >= MAX_TABLE_TAG) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Too many tags (%d)", MAX_TABLE_TAG); + Icc ->TagCount = MAX_TABLE_TAG-1; + return NULL; + } + } + + + Ptr = _cmsMalloc(size); + if (Ptr == NULL) return NULL; + + CopyMemory(Ptr, Init, size); + + Icc ->TagNames[i] = sig; + Icc ->TagSizes[i] = size; + Icc ->TagPtrs[i] = Ptr; + + return Ptr; +} + + + + + +// Creates a profile from file read placeholder + +LPLCMSICCPROFILE _cmsCreateProfileFromFilePlaceholder(const char* FileName) +{ + LPLCMSICCPROFILE NewIcc; + LPVOID ICCfile = FileOpen(FileName); + + if (ICCfile == NULL) { + + cmsSignalError(LCMS_ERRC_ABORTED, "File '%s' not found", FileName); + return NULL; + } + + NewIcc = (LPLCMSICCPROFILE) _cmsCreateProfilePlaceholder(); + if (NewIcc == NULL) return NULL; + + strncpy(NewIcc -> PhysicalFile, FileName, MAX_PATH-1); + NewIcc -> PhysicalFile[MAX_PATH-1] = 0; + + NewIcc ->stream = ICCfile; + + NewIcc ->Read = FileRead; + NewIcc ->Seek = FileSeek; + NewIcc ->Tell = FileTell; + NewIcc ->Close = FileClose; + NewIcc ->Write = NULL; + + NewIcc ->IsWrite = FALSE; + + + + + return NewIcc; +} + + +// Creates a profile from memory read placeholder + +LPLCMSICCPROFILE _cmsCreateProfileFromMemPlaceholder(LPVOID MemPtr, DWORD dwSize) +{ + + LPLCMSICCPROFILE NewIcc; + LPVOID ICCfile = MemoryOpen((LPBYTE) MemPtr, (size_t) dwSize, 'r'); + + + if (ICCfile == NULL) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Couldn't allocate %ld bytes for profile", dwSize); + return NULL; + } + + + NewIcc = (LPLCMSICCPROFILE) _cmsCreateProfilePlaceholder(); + if (NewIcc == NULL) return NULL; + + NewIcc -> PhysicalFile[0] = 0; + NewIcc ->stream = ICCfile; + + NewIcc ->Read = MemoryRead; + NewIcc ->Seek = MemorySeek; + NewIcc ->Tell = MemoryTell; + NewIcc ->Close = MemoryClose; + NewIcc ->Write = NULL; + + NewIcc ->IsWrite = FALSE; + + + return NewIcc; +} + + +// Turn a placeholder into file writter + +void _cmsSetSaveToDisk(LPLCMSICCPROFILE Icc, const char* FileName) +{ + + if (FileName == NULL) { + + Icc ->stream = NULL; + } + else { + + Icc ->stream = fopen(FileName, "wb"); + if (Icc ->stream == NULL) + cmsSignalError(LCMS_ERRC_ABORTED, "Couldn't write to file '%s'", FileName); + } + + Icc ->Write = FileWrite; // Save to disk + Icc ->Close = FileClose; +} + + + +// Turn a placeholder into memory writter + +void _cmsSetSaveToMemory(LPLCMSICCPROFILE Icc, LPVOID MemPtr, size_t dwSize) +{ + + if (MemPtr == NULL) { + + Icc ->stream = NULL; + } + else { + + Icc ->stream = (FILEMEM*) MemoryOpen((LPBYTE) MemPtr, dwSize, 'w'); + if (Icc ->stream == NULL) + cmsSignalError(LCMS_ERRC_ABORTED, "Couldn't write to memory"); + } + + Icc ->Write = MemoryWrite; + Icc ->Close = MemoryClose; +} + + +// ----------------------------------------------------------------------- Set/Get several struct members + + + + +LCMSBOOL LCMSEXPORT cmsTakeMediaWhitePoint(LPcmsCIEXYZ Dest, cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + *Dest = Icc -> MediaWhitePoint; + return TRUE; +} + + +LCMSBOOL LCMSEXPORT cmsTakeMediaBlackPoint(LPcmsCIEXYZ Dest, cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + *Dest = Icc -> MediaBlackPoint; + return TRUE; +} + +LCMSBOOL LCMSEXPORT cmsTakeIluminant(LPcmsCIEXYZ Dest, cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + *Dest = Icc -> Illuminant; + return TRUE; +} + +int LCMSEXPORT cmsTakeRenderingIntent(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return (int) Icc -> RenderingIntent; +} + +void LCMSEXPORT cmsSetRenderingIntent(cmsHPROFILE hProfile, int RenderingIntent) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + Icc -> RenderingIntent = (icRenderingIntent) RenderingIntent; +} + + +DWORD LCMSEXPORT cmsTakeHeaderFlags(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return (DWORD) Icc -> flags; +} + +void LCMSEXPORT cmsSetHeaderFlags(cmsHPROFILE hProfile, DWORD Flags) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + Icc -> flags = (icUInt32Number) Flags; +} + +DWORD LCMSEXPORT cmsTakeHeaderAttributes(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return (DWORD) Icc -> attributes; +} + +void LCMSEXPORT cmsSetHeaderAttributes(cmsHPROFILE hProfile, DWORD Flags) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + Icc -> attributes = (icUInt32Number) Flags; +} + + +const BYTE* LCMSEXPORT cmsTakeProfileID(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return Icc ->ProfileID; +} + +void LCMSEXPORT cmsSetProfileID(cmsHPROFILE hProfile, LPBYTE ProfileID) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + CopyMemory(Icc -> ProfileID, ProfileID, 16); +} + + +LCMSBOOL LCMSEXPORT cmsTakeCreationDateTime(struct tm *Dest, cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + CopyMemory(Dest, &Icc ->Created, sizeof(struct tm)); + return TRUE; +} + + +icColorSpaceSignature LCMSEXPORT cmsGetPCS(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return Icc -> PCS; +} + + +void LCMSEXPORT cmsSetPCS(cmsHPROFILE hProfile, icColorSpaceSignature pcs) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + Icc -> PCS = pcs; +} + +icColorSpaceSignature LCMSEXPORT cmsGetColorSpace(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return Icc -> ColorSpace; +} + +void LCMSEXPORT cmsSetColorSpace(cmsHPROFILE hProfile, icColorSpaceSignature sig) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + Icc -> ColorSpace = sig; +} + +icProfileClassSignature LCMSEXPORT cmsGetDeviceClass(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return Icc -> DeviceClass; +} + +DWORD LCMSEXPORT cmsGetProfileICCversion(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + return (DWORD) Icc -> Version; +} + +void LCMSEXPORT cmsSetProfileICCversion(cmsHPROFILE hProfile, DWORD Version) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + Icc -> Version = Version; +} + + +void LCMSEXPORT cmsSetDeviceClass(cmsHPROFILE hProfile, icProfileClassSignature sig) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) hProfile; + Icc -> DeviceClass = sig; +} + + +// -------------------------------------------------------------------------------------------------------------- + + +static +int SizeOfGammaTab(LPGAMMATABLE In) +{ + return sizeof(GAMMATABLE) + (In -> nEntries - 1)*sizeof(WORD); +} + + +// Creates a phantom tag holding a memory block + +static +LPVOID DupBlock(LPLCMSICCPROFILE Icc, LPVOID Block, size_t size) +{ + if (Block != NULL && size > 0) + return _cmsInitTag(Icc, (icTagSignature) 0, size, Block); + else + return NULL; + +} + +// This is tricky, since LUT structs does have pointers + +LCMSBOOL LCMSEXPORT _cmsAddLUTTag(cmsHPROFILE hProfile, icTagSignature sig, const void* lut) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + LPLUT Orig, Stored; + unsigned int i; + + // The struct itself + + Orig = (LPLUT) lut; + Stored = (LPLUT) _cmsInitTag(Icc, (icTagSignature) sig, sizeof(LUT), lut); + + // dup' the memory blocks + for (i=0; i < Orig ->InputChan; i++) + Stored -> L1[i] = (LPWORD) DupBlock(Icc, (LPWORD) Orig ->L1[i], + sizeof(WORD) * Orig ->In16params.nSamples); + + for (i=0; i < Orig ->OutputChan; i++) + Stored -> L2[i] = (LPWORD) DupBlock(Icc, (LPWORD) Orig ->L2[i], + sizeof(WORD) * Orig ->Out16params.nSamples); + + Stored -> T = (LPWORD) DupBlock(Icc, (LPWORD) Orig ->T, Orig -> Tsize); + + // Zero any additional pointer + Stored ->CLut16params.p8 = NULL; + return TRUE; +} + + +LCMSBOOL LCMSEXPORT _cmsAddXYZTag(cmsHPROFILE hProfile, icTagSignature sig, const cmsCIEXYZ* XYZ) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, sizeof(cmsCIEXYZ), XYZ); + return TRUE; +} + + +LCMSBOOL LCMSEXPORT _cmsAddTextTag(cmsHPROFILE hProfile, icTagSignature sig, const char* Text) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, strlen(Text)+1, (LPVOID) Text); + return TRUE; +} + +LCMSBOOL LCMSEXPORT _cmsAddGammaTag(cmsHPROFILE hProfile, icTagSignature sig, LPGAMMATABLE TransferFunction) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, SizeOfGammaTab(TransferFunction), TransferFunction); + return TRUE; +} + + +LCMSBOOL LCMSEXPORT _cmsAddChromaticityTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsCIExyYTRIPLE Chrm) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, sizeof(cmsCIExyYTRIPLE), Chrm); + return TRUE; +} + + +LCMSBOOL LCMSEXPORT _cmsAddSequenceDescriptionTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsSEQ pseq) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, sizeof(int) + pseq -> n * sizeof(cmsPSEQDESC), pseq); + return TRUE; + +} + + +LCMSBOOL LCMSEXPORT _cmsAddNamedColorTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsNAMEDCOLORLIST nc) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, sizeof(cmsNAMEDCOLORLIST) + (nc ->nColors - 1) * sizeof(cmsNAMEDCOLOR), nc); + return TRUE; +} + + +LCMSBOOL LCMSEXPORT _cmsAddDateTimeTag(cmsHPROFILE hProfile, icTagSignature sig, struct tm *DateTime) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, sizeof(struct tm), DateTime); + return TRUE; +} + + +LCMSBOOL LCMSEXPORT _cmsAddColorantTableTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsNAMEDCOLORLIST nc) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, sizeof(cmsNAMEDCOLORLIST) + (nc ->nColors - 1) * sizeof(cmsNAMEDCOLOR), nc); + return TRUE; +} + + +LCMSBOOL LCMSEXPORT _cmsAddChromaticAdaptationTag(cmsHPROFILE hProfile, icTagSignature sig, const cmsCIEXYZ* mat) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + _cmsInitTag(Icc, sig, 3*sizeof(cmsCIEXYZ), mat); + return TRUE; + +} + + diff --git a/icc2ps/cmsio1.c b/icc2ps/cmsio1.c new file mode 100644 index 0000000..1f02720 --- /dev/null +++ b/icc2ps/cmsio1.c @@ -0,0 +1,3726 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// ICC profile serialization + + +#include "lcms.h" + +// ----------------------------------------------------------------- Tag Serialization + +// Alignment of ICC file format uses 4 bytes DWORD + +#define ALIGNLONG(x) (((x)+3) & ~(3)) // Aligns to DWORD boundary + + +static int GlobalLanguageCode; // Language & country descriptors, for ICC 4.0 support +static int GlobalCountryCode; + + +#ifdef __BEOS__ +# define USE_CUSTOM_SWAB 1 +#endif + + +#ifdef USE_CUSTOM_SWAB + +// Replacement to swab function, thanks to YNOP +// for providing the BeOS port +// +// from: @(#)swab.c 5.10 (Berkeley) 3/6/91 + +static +void xswab(const void *from, void *to, size_t len) +{ + register unsigned long temp; + register int n; + register char *fp, *tp; + + n = (len >> 1) + 1; + fp = (char *)from; + tp = (char *)to; +#define STEP temp = *fp++,*tp++ = *fp++,*tp++ = temp + /* round to multiple of 8 */ + while ((--n) & 07) + STEP; + n >>= 3; + while (--n >= 0) { + + STEP; STEP; STEP; STEP; + STEP; STEP; STEP; STEP; + } +#undef STEP +} +#else +#define xswab swab +#endif + + +// +// Little-Endian to Big-Endian +// + +#ifdef USE_BIG_ENDIAN +#define AdjustEndianess16(a) +#define AdjustEndianess32(a) +#define AdjustEndianessArray16(a, b) +#else + +static +void AdjustEndianess16(LPBYTE pByte) +{ + BYTE tmp; + + tmp = pByte[0]; + pByte[0] = pByte[1]; + pByte[1] = tmp; +} + +static +void AdjustEndianess32(LPBYTE pByte) +{ + BYTE temp1; + BYTE temp2; + + temp1 = *pByte++; + temp2 = *pByte++; + *(pByte-1) = *pByte; + *pByte++ = temp2; + *(pByte-3) = *pByte; + *pByte = temp1; +} + + +// swap bytes in a array of words + +static +void AdjustEndianessArray16(LPWORD p, size_t num_words) +{ + xswab((char*) p, (char*)p, (int) num_words * sizeof(WORD)); +} + +#endif + + +// Transports to properly encoded values - note that icc profiles does use +// big endian notation. + +static +icInt32Number TransportValue32(icInt32Number Value) +{ + icInt32Number Temp = Value; + + AdjustEndianess32((LPBYTE) &Temp); + return Temp; +} + +static +WORD TransportValue16(WORD Value) +{ + WORD Temp = Value; + + AdjustEndianess16((LPBYTE) &Temp); + return Temp; +} + + +// from Fixed point 8.8 to double + +static +double Convert8Fixed8(WORD fixed8) +{ + BYTE msb, lsb; + + lsb = (BYTE) (fixed8 & 0xff); + msb = (BYTE) (((WORD) fixed8 >> 8) & 0xff); + + return (double) ((double) msb + ((double) lsb / 256.0)); +} + + +// from Fixed point 15.16 to double +static +double Convert15Fixed16(icS15Fixed16Number fix32) +{ + double floater, sign, mid, hack; + int Whole, FracPart; + + + AdjustEndianess32((LPBYTE) &fix32); + + sign = (fix32 < 0 ? -1 : 1); + fix32 = abs(fix32); + + Whole = LOWORD(fix32 >> 16); + FracPart = LOWORD(fix32 & 0x0000ffffL); + + hack = 65536.0; + mid = (double) FracPart / hack; + floater = (double) Whole + mid; + + return sign * floater; +} + + +// Auxiliar-- read base and return type + +static +icTagTypeSignature ReadBase(LPLCMSICCPROFILE Icc) +{ + icTagBase Base; + + if (Icc -> Read(&Base, sizeof(icTagBase), 1, Icc) != 1) + return (icTagTypeSignature) 0; + AdjustEndianess32((LPBYTE) &Base.sig); + + return Base.sig; +} + + +static +void DecodeDateTimeNumber(const icDateTimeNumber *Source, struct tm *Dest) +{ + Dest->tm_sec = TransportValue16(Source->seconds); + Dest->tm_min = TransportValue16(Source->minutes); + Dest->tm_hour = TransportValue16(Source->hours); + Dest->tm_mday = TransportValue16(Source->day); + Dest->tm_mon = TransportValue16(Source->month) - 1; + Dest->tm_year = TransportValue16(Source->year) - 1900; + Dest->tm_wday = -1; + Dest->tm_yday = -1; + Dest->tm_isdst = 0; +} + +static +void EncodeDateTimeNumber(icDateTimeNumber *Dest, const struct tm *Source) +{ + Dest->seconds = TransportValue16((WORD) Source->tm_sec); + Dest->minutes = TransportValue16((WORD) Source->tm_min); + Dest->hours = TransportValue16((WORD) Source->tm_hour); + Dest->day = TransportValue16((WORD) Source->tm_mday); + Dest->month = TransportValue16((WORD) (Source->tm_mon + 1)); + Dest->year = TransportValue16((WORD) (Source->tm_year + 1900)); +} + + +// Jun-21-2000: Some profiles (those that comes with W2K) comes +// with the media white (media black?) x 100. Add a sanity check + +static +void NormalizeXYZ(LPcmsCIEXYZ Dest) +{ + while (Dest -> X > 2. && + Dest -> Y > 2. && + Dest -> Z > 2.) { + + Dest -> X /= 10.; + Dest -> Y /= 10.; + Dest -> Z /= 10.; + } +} + +// Evaluates a XYZ tristimulous across chromatic adaptation matrix + +static +void EvalCHRM(LPcmsCIEXYZ Dest, LPMAT3 Chrm, LPcmsCIEXYZ Src) +{ + VEC3 d, s; + + s.n[VX] = Src -> X; + s.n[VY] = Src -> Y; + s.n[VZ] = Src -> Z; + + MAT3eval(&d, Chrm, &s); + + Dest ->X = d.n[VX]; + Dest ->Y = d.n[VY]; + Dest ->Z = d.n[VZ]; + +} + + +// Read profile header and validate it + +static +LPLCMSICCPROFILE ReadHeader(LPLCMSICCPROFILE Icc, LCMSBOOL lIsFromMemory) +{ + icTag Tag; + icHeader Header; + icInt32Number TagCount, i; + icUInt32Number extent; + + if (Icc -> Read(&Header, sizeof(icHeader), 1, Icc) != 1) + goto ErrorCleanup; + + // Convert endian + + AdjustEndianess32((LPBYTE) &Header.size); + AdjustEndianess32((LPBYTE) &Header.cmmId); + AdjustEndianess32((LPBYTE) &Header.version); + AdjustEndianess32((LPBYTE) &Header.deviceClass); + AdjustEndianess32((LPBYTE) &Header.colorSpace); + AdjustEndianess32((LPBYTE) &Header.pcs); + AdjustEndianess32((LPBYTE) &Header.magic); + AdjustEndianess32((LPBYTE) &Header.flags); + AdjustEndianess32((LPBYTE) &Header.attributes[0]); + AdjustEndianess32((LPBYTE) &Header.renderingIntent); + + // Validate it + + if (Header.magic != icMagicNumber) goto ErrorCleanup; + + if (Icc ->Read(&TagCount, sizeof(icInt32Number), 1, Icc) != 1) + goto ErrorCleanup; + + AdjustEndianess32((LPBYTE) &TagCount); + + Icc -> DeviceClass = Header.deviceClass; + Icc -> ColorSpace = Header.colorSpace; + Icc -> PCS = Header.pcs; + Icc -> RenderingIntent = (icRenderingIntent) Header.renderingIntent; + Icc -> flags = Header.flags; + Icc -> attributes = Header.attributes[0]; + Icc -> Illuminant.X = Convert15Fixed16(Header.illuminant.X); + Icc -> Illuminant.Y = Convert15Fixed16(Header.illuminant.Y); + Icc -> Illuminant.Z = Convert15Fixed16(Header.illuminant.Z); + Icc -> Version = Header.version; + + // Get creation date/time + + DecodeDateTimeNumber(&Header.date, &Icc ->Created); + + // Fix illuminant, some profiles are broken in this field! + + Icc ->Illuminant = *cmsD50_XYZ(); + + // The profile ID are 16 raw bytes + + CopyMemory(Icc ->ProfileID, Header.reserved, 16); + + // Get rid of possible wrong profiles + + NormalizeXYZ(&Icc -> Illuminant); + + // Read tag directory + + if (TagCount > MAX_TABLE_TAG || TagCount < 0) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Too many tags (%d)", TagCount); + goto ErrorCleanup; + } + + Icc -> TagCount = TagCount; + for (i=0; i < TagCount; i++) { + + if (Icc ->Read(&Tag, sizeof(icTag), 1, Icc) != 1) + goto ErrorCleanup; + + AdjustEndianess32((LPBYTE) &Tag.offset); + AdjustEndianess32((LPBYTE) &Tag.size); + AdjustEndianess32((LPBYTE) &Tag.sig); // Signature + + // Perform some sanity check. Offset + size should fall inside file. + extent = Tag.offset + Tag.size; + if (extent > Header.size || extent < Tag.offset) + goto ErrorCleanup; + + Icc -> TagNames[i] = Tag.sig; + Icc -> TagOffsets[i] = Tag.offset; + Icc -> TagSizes[i] = Tag.size; + } + + return Icc; + + +ErrorCleanup: + + Icc ->Close(Icc); + + if (lIsFromMemory) + cmsSignalError(LCMS_ERRC_ABORTED, "Corrupted memory profile"); + else + cmsSignalError(LCMS_ERRC_ABORTED, "Corrupted profile: '%s'", Icc->PhysicalFile); + + + _cmsFree(Icc); + return NULL; +} + +static +unsigned int uipow(unsigned int a, unsigned int b) { + unsigned int rv = 1; + for (; b > 0; b--) + rv *= a; + return rv; +} + + + +// Convert between notations. + +#define TO16_TAB(x) (WORD) (((x) << 8) | (x)) + + +// LUT8 can come only in Lab space. There is a fatal flaw in +// converting from Lut8 to Lut16. Due to particular encoding +// of Lab, different actions should be taken from input and +// output Lab8 LUTS. For input, is as easy as applying a << 8, +// since numbers comes in fixed point. However, for output LUT +// things goes a bit more complex.... LUT 16 is supposed to +// have a domain of 0..ff00, so we should remap the LUT in order +// to get things working. Affected signatures are B2Axx tags, +// preview and gamut. + +// I do solve it by multiplying input matrix by: +// +// | 0xffff/0xff00 0 0 | +// | 0 0xffff/0xff00 0 | +// | 0 0 0xffff/0xff00 | +// +// The input values got then remapped to adequate domain + +static +void FixLUT8(LPLUT Lut, icTagSignature sig, size_t nTabSize) +{ + MAT3 Fixup, Original, Result; + LPWORD PtrW; + size_t i; + + switch (sig) { + + + case icSigBToA0Tag: + case icSigBToA1Tag: + case icSigBToA2Tag: + case icSigGamutTag: + case icSigPreview0Tag: + case icSigPreview1Tag: + case icSigPreview2Tag: + + + VEC3init(&Fixup.v[0], (double) 0xFFFF/0xFF00, 0, 0); + VEC3init(&Fixup.v[1], 0, (double) 0xFFFF/0xFF00, 0); + VEC3init(&Fixup.v[2], 0, 0, (double) 0xFFFF/0xFF00); + + + MAT3fromFix(&Original, &Lut->Matrix); + MAT3per(&Result, &Original, &Fixup); + MAT3toFix(&Lut->Matrix, &Result); + + Lut -> wFlags |= LUT_HASMATRIX; + break; + + // For input, clear low part since this has to be + // Lab in fixed point + + default: + + PtrW = Lut -> T; + for (i = 0; i < nTabSize; i++) { + + *PtrW++ &= 0xFF00; + } + } + +} + +// On Lab -> Lab abstract or Lab identities, fix both sides of LUT + +static +void FixLUT8bothSides(LPLUT Lut, size_t nTabSize) +{ + MAT3 Fixup, Original, Result; + LPWORD PtrW; + size_t i; + + VEC3init(&Fixup.v[0], (double) 0xFFFF/0xFF00, 0, 0); + VEC3init(&Fixup.v[1], 0, (double) 0xFFFF/0xFF00, 0); + VEC3init(&Fixup.v[2], 0, 0, (double) 0xFFFF/0xFF00); + + MAT3fromFix(&Original, &Lut->Matrix); + MAT3per(&Result, &Original, &Fixup); + MAT3toFix(&Lut->Matrix, &Result); + + Lut -> wFlags |= LUT_HASMATRIX; + + PtrW = Lut -> T; + for (i = 0; i < nTabSize; i++) { + + *PtrW++ &= 0xFF00; + } + +} + + +// The infamous LUT 8 + +static +LCMSBOOL ReadLUT8(LPLCMSICCPROFILE Icc, LPLUT NewLUT, icTagSignature sig) +{ + icLut8 LUT8; + LPBYTE Temp; + size_t nTabSize; + unsigned int i, j; + unsigned int AllLinear; + LPWORD PtrW; + + if (Icc ->Read(&LUT8, sizeof(icLut8) - SIZEOF_UINT8_ALIGNED, 1, Icc) != 1) return FALSE; + + NewLUT -> wFlags = LUT_HASTL1|LUT_HASTL2|LUT_HAS3DGRID; + NewLUT -> cLutPoints = LUT8.clutPoints; + NewLUT -> InputChan = LUT8.inputChan; + NewLUT -> OutputChan = LUT8.outputChan; + NewLUT -> InputEntries = 256; + NewLUT -> OutputEntries = 256; + + // Do some checking + if (!_cmsValidateLUT(NewLUT)) { + return FALSE; + } + + AdjustEndianess32((LPBYTE) &LUT8.e00); + AdjustEndianess32((LPBYTE) &LUT8.e01); + AdjustEndianess32((LPBYTE) &LUT8.e02); + AdjustEndianess32((LPBYTE) &LUT8.e10); + AdjustEndianess32((LPBYTE) &LUT8.e11); + AdjustEndianess32((LPBYTE) &LUT8.e12); + AdjustEndianess32((LPBYTE) &LUT8.e20); + AdjustEndianess32((LPBYTE) &LUT8.e21); + AdjustEndianess32((LPBYTE) &LUT8.e22); + + + // Matrix handling + + NewLUT -> Matrix.v[0].n[0] = (Fixed32) LUT8.e00; + NewLUT -> Matrix.v[0].n[1] = (Fixed32) LUT8.e01; + NewLUT -> Matrix.v[0].n[2] = (Fixed32) LUT8.e02; + NewLUT -> Matrix.v[1].n[0] = (Fixed32) LUT8.e10; + NewLUT -> Matrix.v[1].n[1] = (Fixed32) LUT8.e11; + NewLUT -> Matrix.v[1].n[2] = (Fixed32) LUT8.e12; + NewLUT -> Matrix.v[2].n[0] = (Fixed32) LUT8.e20; + NewLUT -> Matrix.v[2].n[1] = (Fixed32) LUT8.e21; + NewLUT -> Matrix.v[2].n[2] = (Fixed32) LUT8.e22; + + + // Only operates if not identity... + + if ((NewLUT -> InputChan == 3) && !MAT3isIdentity(&NewLUT -> Matrix, 0.0001)) { + + NewLUT -> wFlags |= LUT_HASMATRIX; + } + + + // Copy input tables + + Temp = (LPBYTE) _cmsMalloc(256); + if (Temp == NULL) return FALSE; + + AllLinear = 0; + for (i=0; i < NewLUT -> InputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * 256); + if (PtrW == NULL) { + _cmsFree(Temp); + return FALSE; + } + + NewLUT -> L1[i] = PtrW; + if (Icc ->Read(Temp, 1, 256, Icc) != 256) { + _cmsFree(Temp); + return FALSE; + } + + for (j=0; j < 256; j++) + PtrW[j] = TO16_TAB(Temp[j]); + AllLinear += cmsIsLinear(NewLUT -> L1[i], NewLUT -> InputEntries); + } + + // Linear input, so ignore full step + + if (AllLinear == NewLUT -> InputChan) { + + NewLUT -> wFlags &= ~LUT_HASTL1; + } + + _cmsFree(Temp); + + // Copy 3D CLUT + + nTabSize = (NewLUT -> OutputChan * uipow(NewLUT->cLutPoints, + NewLUT->InputChan)); + + if (nTabSize > 0) { + + PtrW = (LPWORD) _cmsCalloc(sizeof(WORD), nTabSize); + if (PtrW == NULL) return FALSE; + + Temp = (LPBYTE) _cmsMalloc(nTabSize); + if (Temp == NULL) { + _cmsFree(PtrW); + return FALSE; + } + + if (Icc ->Read(Temp, 1, nTabSize, Icc) != nTabSize) { + _cmsFree(Temp); + _cmsFree(PtrW); + return FALSE; + } + + NewLUT -> T = PtrW; + NewLUT -> Tsize = (unsigned int) (nTabSize * sizeof(WORD)); + + for (i = 0; i < nTabSize; i++) { + + *PtrW++ = TO16_TAB(Temp[i]); + } + _cmsFree(Temp); + } + else { + NewLUT ->T = NULL; + NewLUT ->Tsize = 0; + NewLUT ->wFlags &= ~LUT_HAS3DGRID; + } + + + // Copy output tables + + Temp = (LPBYTE) _cmsMalloc(256); + if (Temp == NULL) { + return FALSE; + } + + AllLinear = 0; + for (i=0; i < NewLUT -> OutputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * 256); + if (PtrW == NULL) { + _cmsFree(Temp); + return FALSE; + } + + NewLUT -> L2[i] = PtrW; + if (Icc ->Read(Temp, 1, 256, Icc) != 256) { + _cmsFree(Temp); + return FALSE; + } + + for (j=0; j < 256; j++) + PtrW[j] = TO16_TAB(Temp[j]); + AllLinear += cmsIsLinear(NewLUT -> L2[i], 256); + } + + // Linear input, so ignore full step + + if (AllLinear == NewLUT -> OutputChan) { + + NewLUT -> wFlags &= ~LUT_HASTL2; + } + + + _cmsFree(Temp); + + cmsCalcL16Params(NewLUT -> InputEntries, &NewLUT -> In16params); + cmsCalcL16Params(NewLUT -> OutputEntries, &NewLUT -> Out16params); + cmsCalcCLUT16Params(NewLUT -> cLutPoints, NewLUT -> InputChan, + NewLUT -> OutputChan, + &NewLUT -> CLut16params); + // Fixup + + if (Icc ->PCS == icSigLabData) { + + // Abstract or Lab identity + + if (Icc -> ColorSpace == icSigLabData) + + FixLUT8bothSides(NewLUT, nTabSize); + else + FixLUT8(NewLUT, sig, nTabSize); + + + // Now some additional fixup. Lab encoding on 8 bit makes + // impossible to place gray axis on a exact node. However, + // some profiles does claim to do that. Poor lcms will try + // to detect such condition and fix up "on the fly". + + switch (sig) { + + case icSigBToA0Tag: + case icSigBToA1Tag: + case icSigBToA2Tag: + case icSigGamutTag: + case icSigPreview0Tag: + case icSigPreview1Tag: + case icSigPreview2Tag: + { + LPWORD WhiteLab, ExpectedWhite; + WORD WhiteFixed[MAXCHANNELS], WhiteUnfixed[MAXCHANNELS]; + int j, nChannels; + double Dist, DistFixed, DistUnfixed; + + _cmsEndPointsBySpace(icSigLabData, &WhiteLab, NULL, NULL); + + if (_cmsEndPointsBySpace(Icc -> ColorSpace, + &ExpectedWhite, NULL, &nChannels)) { + + // 1.- Find white obtained by both combinations + + NewLUT -> FixGrayAxes = FALSE; + cmsEvalLUT(NewLUT, WhiteLab, WhiteUnfixed); + + NewLUT -> FixGrayAxes = TRUE; + cmsEvalLUT(NewLUT, WhiteLab, WhiteFixed); + + // 2.- Which method gives closer white? + + DistFixed = DistUnfixed = 0; + for (j=0; j < nChannels; j++) { + + Dist = ExpectedWhite[j] - WhiteFixed[j]; + DistFixed += Dist*Dist; + Dist = ExpectedWhite[j] - WhiteUnfixed[j]; + DistUnfixed += Dist*Dist; + } + + // 3.- Decide method + + if (sqrt(DistFixed) < sqrt(DistUnfixed)) + NewLUT -> FixGrayAxes = TRUE; + else + NewLUT -> FixGrayAxes = FALSE; + } + + } + break; + + default:; + } + } + + return TRUE; +} + + + + +// Case LUT 16 + +static +LCMSBOOL ReadLUT16(LPLCMSICCPROFILE Icc, LPLUT NewLUT) +{ + icLut16 LUT16; + size_t nTabSize; + unsigned int i; + unsigned int AllLinear; + LPWORD PtrW; + + + if (Icc ->Read(&LUT16, sizeof(icLut16)- SIZEOF_UINT16_ALIGNED, 1, Icc) != 1) + return FALSE; + + NewLUT -> wFlags = LUT_HASTL1 | LUT_HASTL2 | LUT_HAS3DGRID; + NewLUT -> cLutPoints = LUT16.clutPoints; + NewLUT -> InputChan = LUT16.inputChan; + NewLUT -> OutputChan = LUT16.outputChan; + + AdjustEndianess16((LPBYTE) &LUT16.inputEnt); + AdjustEndianess16((LPBYTE) &LUT16.outputEnt); + + NewLUT -> InputEntries = LUT16.inputEnt; + NewLUT -> OutputEntries = LUT16.outputEnt; + + if (!_cmsValidateLUT(NewLUT)) { + return FALSE; + } + + // Matrix handling + + AdjustEndianess32((LPBYTE) &LUT16.e00); + AdjustEndianess32((LPBYTE) &LUT16.e01); + AdjustEndianess32((LPBYTE) &LUT16.e02); + AdjustEndianess32((LPBYTE) &LUT16.e10); + AdjustEndianess32((LPBYTE) &LUT16.e11); + AdjustEndianess32((LPBYTE) &LUT16.e12); + AdjustEndianess32((LPBYTE) &LUT16.e20); + AdjustEndianess32((LPBYTE) &LUT16.e21); + AdjustEndianess32((LPBYTE) &LUT16.e22); + + NewLUT -> Matrix.v[0].n[0] = (Fixed32) LUT16.e00; + NewLUT -> Matrix.v[0].n[1] = (Fixed32) LUT16.e01; + NewLUT -> Matrix.v[0].n[2] = (Fixed32) LUT16.e02; + NewLUT -> Matrix.v[1].n[0] = (Fixed32) LUT16.e10; + NewLUT -> Matrix.v[1].n[1] = (Fixed32) LUT16.e11; + NewLUT -> Matrix.v[1].n[2] = (Fixed32) LUT16.e12; + NewLUT -> Matrix.v[2].n[0] = (Fixed32) LUT16.e20; + NewLUT -> Matrix.v[2].n[1] = (Fixed32) LUT16.e21; + NewLUT -> Matrix.v[2].n[2] = (Fixed32) LUT16.e22; + + // Only operates if not identity... + + if ((NewLUT -> InputChan == 3) && !MAT3isIdentity(&NewLUT -> Matrix, 0.0001)) { + + NewLUT -> wFlags |= LUT_HASMATRIX; + } + + + // Copy input tables + + AllLinear = 0; + for (i=0; i < NewLUT -> InputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewLUT -> InputEntries); + if (PtrW == NULL) return FALSE; + + NewLUT -> L1[i] = PtrW; + if (Icc ->Read(PtrW, sizeof(WORD), NewLUT -> InputEntries, Icc) != NewLUT -> InputEntries) { + return FALSE; + } + + AdjustEndianessArray16(PtrW, NewLUT -> InputEntries); + AllLinear += cmsIsLinear(NewLUT -> L1[i], NewLUT -> InputEntries); + } + + // Linear input, so ignore full step + + if (AllLinear == NewLUT -> InputChan) { + + NewLUT -> wFlags &= ~LUT_HASTL1; + } + + + // Copy 3D CLUT + + nTabSize = (NewLUT -> OutputChan * uipow(NewLUT->cLutPoints, + NewLUT->InputChan)); + if (nTabSize > 0) { + + PtrW = (LPWORD) _cmsCalloc(sizeof(WORD), nTabSize); + if (PtrW == NULL) + return FALSE; + + NewLUT -> T = PtrW; + NewLUT -> Tsize = (unsigned int) (nTabSize * sizeof(WORD)); + + if (Icc -> Read(PtrW, sizeof(WORD), nTabSize, Icc) != nTabSize) { + return FALSE; + } + + AdjustEndianessArray16(NewLUT -> T, nTabSize); + } + else { + NewLUT ->T = NULL; + NewLUT ->Tsize = 0; + NewLUT -> wFlags &= ~LUT_HAS3DGRID; + } + + // Copy output tables + + AllLinear = 0; + for (i=0; i < NewLUT -> OutputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewLUT -> OutputEntries); + if (PtrW == NULL) { + return FALSE; + } + + NewLUT -> L2[i] = PtrW; + if (Icc ->Read(PtrW, sizeof(WORD), NewLUT -> OutputEntries, Icc) != NewLUT -> OutputEntries) { + return FALSE; + } + + AdjustEndianessArray16(PtrW, NewLUT -> OutputEntries); + AllLinear += cmsIsLinear(NewLUT -> L2[i], NewLUT -> OutputEntries); + } + + // Linear output, ignore step + + if (AllLinear == NewLUT -> OutputChan) + { + NewLUT -> wFlags &= ~LUT_HASTL2; + } + + + cmsCalcL16Params(NewLUT -> InputEntries, &NewLUT -> In16params); + cmsCalcL16Params(NewLUT -> OutputEntries, &NewLUT -> Out16params); + cmsCalcCLUT16Params(NewLUT -> cLutPoints, NewLUT -> InputChan, + NewLUT -> OutputChan, + &NewLUT -> CLut16params); + + return TRUE; +} + + +// This is a shared routine for reading curves. It can handle v2 curves +// as linear, single gamma and table-based as well as v4 parametric curves. + +static +LPGAMMATABLE ReadCurve(LPLCMSICCPROFILE Icc) +{ + icUInt32Number Count; + LPGAMMATABLE NewGamma; + icTagTypeSignature BaseType; + int n; + + + BaseType = ReadBase(Icc); + switch (BaseType) { + + + case ((icTagTypeSignature) 0x9478ee00): // Monaco 2 profiler is BROKEN! + case icSigCurveType: + + if (Icc ->Read(&Count, sizeof(icUInt32Number), 1, Icc) != 1) return NULL; + AdjustEndianess32((LPBYTE) &Count); + + switch (Count) { + + case 0: // Linear. + + NewGamma = cmsAllocGamma(2); + if (!NewGamma) return NULL; + NewGamma -> GammaTable[0] = 0; + NewGamma -> GammaTable[1] = 0xFFFF; + return NewGamma; + + case 1: // Specified as the exponent of gamma function + { + WORD SingleGammaFixed; + + if (Icc ->Read(&SingleGammaFixed, sizeof(WORD), 1, Icc) != 1) return NULL; + AdjustEndianess16((LPBYTE) &SingleGammaFixed); + return cmsBuildGamma(4096, Convert8Fixed8(SingleGammaFixed)); + } + + default: { // Curve + + NewGamma = cmsAllocGamma(Count); + if (!NewGamma) return NULL; + + if (Icc ->Read(NewGamma -> GammaTable, sizeof(WORD), Count, Icc) != Count) + return NULL; + AdjustEndianessArray16(NewGamma -> GammaTable, Count); + return NewGamma; + } + } + break; + + + // Parametric curves + case icSigParametricCurveType: { + + int ParamsByType[] = { 1, 3, 4, 5, 7 }; + double Params[10]; + icS15Fixed16Number Num; + icUInt32Number Reserved; + icUInt16Number Type; + int i; + + if (Icc -> Read(&Type, sizeof(icUInt16Number), 1, Icc) != 1) return NULL; + if (Icc -> Read(&Reserved, sizeof(icUInt16Number), 1, Icc) != 1) return NULL; + + AdjustEndianess16((LPBYTE) &Type); + if (Type > 4) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Unknown parametric curve type '%d' found.", Type); + return NULL; + } + + ZeroMemory(Params, 10* sizeof(double)); + n = ParamsByType[Type]; + + for (i=0; i < n; i++) { + Num = 0; + if (Icc -> Read(&Num, sizeof(icS15Fixed16Number), 1, Icc) != 1) return NULL; + Params[i] = Convert15Fixed16(Num); + } + + + NewGamma = cmsBuildParametricGamma(4096, Type+1, Params); + return NewGamma; + } + + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "Bad tag signature '%lx' found.", BaseType); + return NULL; + } + +} + + +// Similar to anterior, but curve is reversed + +static +LPGAMMATABLE ReadCurveReversed(LPLCMSICCPROFILE Icc) +{ + + icTagTypeSignature BaseType; + LPGAMMATABLE NewGamma, ReturnGamma; + icUInt32Number Count; + int n; + + + BaseType = ReadBase(Icc); + + switch (BaseType) { + + + case 0x9478ee00L: // Monaco 2 profiler is BROKEN! + case icSigCurveType: + + if (Icc -> Read(&Count, sizeof(icUInt32Number), 1, Icc) != 1) return NULL; + AdjustEndianess32((LPBYTE) &Count); + + + switch (Count) { + + case 0: // Linear, reverse is same. + + NewGamma = cmsAllocGamma(2); + if (!NewGamma) return NULL; + + NewGamma -> GammaTable[0] = 0; + NewGamma -> GammaTable[1] = 0xFFFF; + return NewGamma; + + case 1: { + WORD SingleGammaFixed; + + if (Icc -> Read(&SingleGammaFixed, sizeof(WORD), 1, Icc) != 1) return NULL; + AdjustEndianess16((LPBYTE) &SingleGammaFixed); + return cmsBuildGamma(4096, 1./Convert8Fixed8(SingleGammaFixed)); + } + + default: { // Curve. Do our best to trying to reverse the curve + + NewGamma = cmsAllocGamma(Count); + if (!NewGamma) return NULL; + + if (Icc -> Read(NewGamma -> GammaTable, sizeof(WORD), Count, Icc) != Count) + return NULL; + + AdjustEndianessArray16(NewGamma -> GammaTable, Count); + + if (Count < 256) + Count = 256; // Reverse of simple curve has not necesarely to be simple + + ReturnGamma = cmsReverseGamma(Count, NewGamma); + cmsFreeGamma(NewGamma); + + return ReturnGamma; + } + } + break; + + + // Parametric curves + case icSigParametricCurveType: { + + int ParamsByType[] = { 1, 3, 4, 5, 7 }; + double Params[10]; + icS15Fixed16Number Num; + icUInt32Number Reserved; + icUInt16Number Type; + int i; + + + if (Icc -> Read(&Type, sizeof(icUInt16Number), 1, Icc) != 1) return NULL; + if (Icc -> Read(&Reserved, sizeof(icUInt16Number), 1, Icc) != 1) return NULL; + + AdjustEndianess16((LPBYTE) &Type); + if (Type > 4) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Unknown parametric curve type '%d' found.", Type); + return NULL; + } + + ZeroMemory(Params, 10* sizeof(double)); + n = ParamsByType[Type]; + + for (i=0; i < n; i++) { + if (Icc -> Read(&Num, sizeof(icS15Fixed16Number), 1, Icc) != 1) return NULL; + Params[i] = Convert15Fixed16(Num); + } + + + // Negative type as a mark of reversed curve + NewGamma = cmsBuildParametricGamma(4096, -(Type+1), Params); + return NewGamma; + } + + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "Bad tag signature '%lx' found.", BaseType); + return NULL; + } + +} + + +// V4 stuff. Read matrix for LutAtoB and LutBtoA + +static +LCMSBOOL ReadMatrixOffset(LPLCMSICCPROFILE Icc, size_t Offset, LPLUT NewLUT, DWORD dwFlags) +{ + + icS15Fixed16Number All[12]; + int i; + MAT3 m; + VEC3 o; + + if (Icc -> Seek(Icc, Offset)) return FALSE; + + if (Icc ->Read(All, sizeof(icS15Fixed16Number), 12, Icc) != 12) + return FALSE; + + for (i=0; i < 12; i++) + AdjustEndianess32((LPBYTE) &All[i]); + + + m.v[0].n[0] = FIXED_TO_DOUBLE((Fixed32) All[0]); + m.v[0].n[1] = FIXED_TO_DOUBLE((Fixed32) All[1]); + m.v[0].n[2] = FIXED_TO_DOUBLE((Fixed32) All[2]); + m.v[1].n[0] = FIXED_TO_DOUBLE((Fixed32) All[3]); + m.v[1].n[1] = FIXED_TO_DOUBLE((Fixed32) All[4]); + m.v[1].n[2] = FIXED_TO_DOUBLE((Fixed32) All[5]); + m.v[2].n[0] = FIXED_TO_DOUBLE((Fixed32) All[6]); + m.v[2].n[1] = FIXED_TO_DOUBLE((Fixed32) All[7]); + m.v[2].n[2] = FIXED_TO_DOUBLE((Fixed32) All[8]); + + o.n[0] = FIXED_TO_DOUBLE((Fixed32) All[9]); + o.n[1] = FIXED_TO_DOUBLE((Fixed32) All[10]); + o.n[2] = FIXED_TO_DOUBLE((Fixed32) All[11]); + + cmsSetMatrixLUT4(NewLUT, &m, &o, dwFlags); + + return TRUE; +} + + +// V4 stuff. Read CLUT part for LutAtoB and LutBtoA + +static +LCMSBOOL ReadCLUT(LPLCMSICCPROFILE Icc, size_t Offset, LPLUT NewLUT) +{ + unsigned int j; + icCLutStruct CLUT; + + if (Icc -> Seek(Icc, Offset)) return FALSE; + if (Icc ->Read(&CLUT, sizeof(icCLutStruct), 1, Icc) != 1) return FALSE; + + + for (j=1; j < NewLUT ->InputChan; j++) { + if (CLUT.gridPoints[0] != CLUT.gridPoints[j]) { + cmsSignalError(LCMS_ERRC_ABORTED, "CLUT with different granulatity is currently unsupported."); + return FALSE; + } + + + } + + if (cmsAlloc3DGrid(NewLUT, CLUT.gridPoints[0], NewLUT ->InputChan, + NewLUT ->OutputChan) == NULL) return FALSE; + + // Precission can be 1 or 2 bytes + + if (CLUT.prec == 1) { + + BYTE v; + unsigned int i; + + for (i=0; i < NewLUT->Tsize / sizeof(WORD); i++) { + if (Icc ->Read(&v, sizeof(BYTE), 1, Icc) != 1) return FALSE; + NewLUT->T[i] = TO16_TAB(v); + } + + } + else + if (CLUT.prec == 2) { + + size_t n = NewLUT->Tsize / sizeof(WORD); + + if (Icc ->Read(NewLUT ->T, sizeof(WORD), n, Icc) != n) return FALSE; + AdjustEndianessArray16(NewLUT ->T, NewLUT->Tsize / sizeof(WORD)); + } + else { + cmsSignalError(LCMS_ERRC_ABORTED, "Unknow precission of '%d'", CLUT.prec); + return FALSE; + } + + return TRUE; +} + + +static +void ResampleCurves(LPGAMMATABLE Curves[], int nCurves) +{ + int i; + LPSAMPLEDCURVE sc; + + for (i=0; i < nCurves; i++) { + sc = cmsConvertGammaToSampledCurve(Curves[i], 4096); + cmsFreeGamma(Curves[i]); + Curves[i] = cmsConvertSampledCurveToGamma(sc, 0xFFFF); + cmsFreeSampledCurve(sc); + } + +} + + +static +void SkipAlignment(LPLCMSICCPROFILE Icc) +{ + BYTE Buffer[4]; + size_t At = Icc ->Tell(Icc); + int BytesToNextAlignedPos = (int) (At % 4); + + Icc ->Read(Buffer, 1, BytesToNextAlignedPos, Icc); +} + +// Read a set of curves from specific offset +static +LCMSBOOL ReadSetOfCurves(LPLCMSICCPROFILE Icc, size_t Offset, LPLUT NewLUT, int nLocation) +{ + LPGAMMATABLE Curves[MAXCHANNELS]; + unsigned int i, nCurves; + + if (Icc -> Seek(Icc, Offset)) return FALSE; + + if (nLocation == 1 || nLocation == 3) + + nCurves = NewLUT ->InputChan; + else + nCurves = NewLUT ->OutputChan; + + ZeroMemory(Curves, sizeof(Curves)); + for (i=0; i < nCurves; i++) { + + Curves[i] = ReadCurve(Icc); + if (Curves[i] == NULL) goto Error; + SkipAlignment(Icc); + } + + // March-26'08: some V4 profiles may have different sampling + // rates, in this case resample all curves to maximum + + for (i=1; i < nCurves; i++) { + if (Curves[i]->nEntries != Curves[0]->nEntries) { + ResampleCurves(Curves, nCurves); + break; + } + } + + NewLUT = cmsAllocLinearTable(NewLUT, Curves, nLocation); + if (NewLUT == NULL) goto Error; + + for (i=0; i < nCurves; i++) + cmsFreeGamma(Curves[i]); + + return TRUE; + +Error: + + for (i=0; i < nCurves; i++) + if (Curves[i]) + cmsFreeGamma(Curves[i]); + + return FALSE; + + +} + +// V4 stuff. LutAtoB type +// +// [L1] -> [CLUT] -> [L4] -> [Mat4] -> [Ofs4] -> [L2] +// +// Mat, Mat3, Ofs3, L3 are missing +// L1 = A curves +// L4 = M curves +// L2 = B curves + +static +LCMSBOOL ReadLUT_A2B(LPLCMSICCPROFILE Icc, LPLUT NewLUT, size_t BaseOffset, icTagSignature sig) +{ + icLutAtoB LUT16; + + if (Icc ->Read(&LUT16, sizeof(icLutAtoB), 1, Icc) != 1) return FALSE; + + NewLUT -> InputChan = LUT16.inputChan; + NewLUT -> OutputChan = LUT16.outputChan; + + // Validate the NewLUT here to avoid excessive number of channels + // (leading to stack-based buffer overflow in ReadSetOfCurves). + // Needs revalidation after table size is filled in. + if (!_cmsValidateLUT(NewLUT)) { + return FALSE; + } + + AdjustEndianess32((LPBYTE) &LUT16.offsetB); + AdjustEndianess32((LPBYTE) &LUT16.offsetMat); + AdjustEndianess32((LPBYTE) &LUT16.offsetM); + AdjustEndianess32((LPBYTE) &LUT16.offsetC); + AdjustEndianess32((LPBYTE) &LUT16.offsetA); + + if (LUT16.offsetB != 0) + ReadSetOfCurves(Icc, BaseOffset + LUT16.offsetB, NewLUT, 2); + + if (LUT16.offsetMat != 0) + ReadMatrixOffset(Icc, BaseOffset + LUT16.offsetMat, NewLUT, LUT_HASMATRIX4); + + + if (LUT16.offsetM != 0) + ReadSetOfCurves(Icc, BaseOffset + LUT16.offsetM, NewLUT, 4); + + if (LUT16.offsetC != 0) + ReadCLUT(Icc, BaseOffset + LUT16.offsetC, NewLUT); + + if (LUT16.offsetA!= 0) + ReadSetOfCurves(Icc, BaseOffset + LUT16.offsetA, NewLUT, 1); + + // Convert to v2 PCS + + if (Icc ->PCS == icSigLabData) { + + switch (sig) { + + case icSigAToB0Tag: + case icSigAToB1Tag: + case icSigAToB2Tag: + case icSigGamutTag: + case icSigPreview0Tag: + case icSigPreview1Tag: + case icSigPreview2Tag: + + NewLUT ->wFlags |= LUT_V4_INPUT_EMULATE_V2; + break; + + default:; + } + } + + + return TRUE; +} + +// V4 stuff. LutBtoA type + +static +LCMSBOOL ReadLUT_B2A(LPLCMSICCPROFILE Icc, LPLUT NewLUT, size_t BaseOffset, icTagSignature sig) +{ + icLutBtoA LUT16; + + if (Icc ->Read(&LUT16, sizeof(icLutBtoA), 1, Icc) != 1) return FALSE; + + NewLUT -> InputChan = LUT16.inputChan; + NewLUT -> OutputChan = LUT16.outputChan; + + // Validate the NewLUT here to avoid excessive number of channels + // (leading to stack-based buffer overflow in ReadSetOfCurves). + // Needs revalidation after table size is filled in. + if (!_cmsValidateLUT(NewLUT)) { + return FALSE; + } + + AdjustEndianess32((LPBYTE) &LUT16.offsetB); + AdjustEndianess32((LPBYTE) &LUT16.offsetMat); + AdjustEndianess32((LPBYTE) &LUT16.offsetM); + AdjustEndianess32((LPBYTE) &LUT16.offsetC); + AdjustEndianess32((LPBYTE) &LUT16.offsetA); + + + if (LUT16.offsetB != 0) + ReadSetOfCurves(Icc, BaseOffset + LUT16.offsetB, NewLUT, 1); + + if (LUT16.offsetMat != 0) + ReadMatrixOffset(Icc, BaseOffset + LUT16.offsetMat, NewLUT, LUT_HASMATRIX3); + + if (LUT16.offsetM != 0) + ReadSetOfCurves(Icc, BaseOffset + LUT16.offsetM, NewLUT, 3); + + if (LUT16.offsetC != 0) + ReadCLUT(Icc, BaseOffset + LUT16.offsetC, NewLUT); + + if (LUT16.offsetA!= 0) + ReadSetOfCurves(Icc, BaseOffset + LUT16.offsetA, NewLUT, 2); + + + // Convert to v2 PCS + + if (Icc ->PCS == icSigLabData) { + + switch (sig) { + + case icSigBToA0Tag: + case icSigBToA1Tag: + case icSigBToA2Tag: + case icSigGamutTag: + case icSigPreview0Tag: + case icSigPreview1Tag: + case icSigPreview2Tag: + + NewLUT ->wFlags |= LUT_V4_OUTPUT_EMULATE_V2; + break; + + default:; + } + } + + return TRUE; +} + +// CLUT main reader + +LPLUT LCMSEXPORT cmsReadICCLut(cmsHPROFILE hProfile, icTagSignature sig) +{ + + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + icTagTypeSignature BaseType; + int n; + size_t offset; + LPLUT NewLUT; + + n = _cmsSearchTag(Icc, sig, TRUE); + if (n < 0) + return NULL; + + + // If is in memory, the LUT is already there, so throw a copy + if (Icc -> TagPtrs[n]) { + + return cmsDupLUT((LPLUT) Icc ->TagPtrs[n]); + } + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return NULL; + + BaseType = ReadBase(Icc); + + + NewLUT = cmsAllocLUT(); + if (!NewLUT) { + + cmsSignalError(LCMS_ERRC_ABORTED, "cmsAllocLUT() failed"); + return NULL; + } + + + switch (BaseType) { + + case icSigLut8Type: if (!ReadLUT8(Icc, NewLUT, sig)) { + cmsFreeLUT(NewLUT); + return NULL; + } + break; + + case icSigLut16Type: if (!ReadLUT16(Icc, NewLUT)) { + cmsFreeLUT(NewLUT); + return NULL; + } + break; + + case icSiglutAtoBType: if (!ReadLUT_A2B(Icc, NewLUT, offset, sig)) { + cmsFreeLUT(NewLUT); + return NULL; + } + break; + + case icSiglutBtoAType: if (!ReadLUT_B2A(Icc, NewLUT, offset, sig)) { + cmsFreeLUT(NewLUT); + return NULL; + } + break; + + default: cmsSignalError(LCMS_ERRC_ABORTED, "Bad tag signature %lx found.", BaseType); + cmsFreeLUT(NewLUT); + return NULL; + } + + + return NewLUT; +} + + +// Sets the language & country preferences. Used only in ICC 4.0 profiles + +void LCMSEXPORT cmsSetLanguage(const char LanguageCode[4], const char CountryCode[4]) +{ + + int LanguageCodeInt = *(int *) LanguageCode; + int CountryCodeInt = *(int *) CountryCode; + + AdjustEndianess32((LPBYTE) &LanguageCodeInt); + AdjustEndianess32((LPBYTE) &CountryCodeInt); + + GlobalLanguageCode = LanguageCodeInt; + GlobalCountryCode = CountryCodeInt; +} + + + +// Some tags (e.g, 'pseq') can have text tags embedded. This function +// handles such special case. Returns -1 on error, or the number of bytes left on success. + +static +int ReadEmbeddedTextTag(LPLCMSICCPROFILE Icc, size_t size, char* Name, size_t size_max) +{ + icTagTypeSignature BaseType; + + + BaseType = ReadBase(Icc); + size -= sizeof(icTagBase); + + switch (BaseType) { + + case icSigTextDescriptionType: { + + icUInt32Number AsciiCount; + icUInt32Number i, UnicodeCode, UnicodeCount; + icUInt16Number ScriptCodeCode, Dummy; + icUInt8Number ScriptCodeCount; + + if (Icc ->Read(&AsciiCount, sizeof(icUInt32Number), 1, Icc) != 1) return -1; + + if (size < sizeof(icUInt32Number)) return (int) size; + size -= sizeof(icUInt32Number); + + AdjustEndianess32((LPBYTE) &AsciiCount); + Icc ->Read(Name, 1, + (AsciiCount >= size_max) ? (size_max-1) : AsciiCount, Icc); + + if (size < AsciiCount) return (int) size; + size -= AsciiCount; + + // Skip Unicode code + + if (Icc ->Read(&UnicodeCode, sizeof(icUInt32Number), 1, Icc) != 1) return -1; + if (size < sizeof(icUInt32Number)) return (int) size; + size -= sizeof(icUInt32Number); + + if (Icc ->Read(&UnicodeCount, sizeof(icUInt32Number), 1, Icc) != 1) return -1; + if (size < sizeof(icUInt32Number)) return (int) size; + size -= sizeof(icUInt32Number); + + AdjustEndianess32((LPBYTE) &UnicodeCount); + + if (UnicodeCount > size) return (int) size; + + for (i=0; i < UnicodeCount; i++) { + size_t nread = Icc ->Read(&Dummy, sizeof(icUInt16Number), 1, Icc); + if (nread != 1) return (int) size; + size -= sizeof(icUInt16Number); + } + + // Skip ScriptCode code + + if (Icc ->Read(&ScriptCodeCode, sizeof(icUInt16Number), 1, Icc) != 1) return -1; + size -= sizeof(icUInt16Number); + if (Icc ->Read(&ScriptCodeCount, sizeof(icUInt8Number), 1, Icc) != 1) return -1; + size -= sizeof(icUInt8Number); + + // Should remain 67 bytes as filler + + if (size < 67) return (int) size; + + for (i=0; i < 67; i++) { + size_t nread = Icc ->Read(&Dummy, sizeof(icUInt8Number), 1, Icc); + if (nread != 1) return (int) size; + size --; + } + } + break; + + + case icSigCopyrightTag: // Broken profiles from agfa does store copyright info in such type + case icSigTextType: + { + char Dummy; + size_t i, Missing = 0; + + if (size >= size_max) { + + Missing = size - size_max + 1; + size = size_max - 1; + } + + if (Icc -> Read(Name, 1, size, Icc) != size) return -1; + + for (i=0; i < Missing; i++) + Icc -> Read(&Dummy, 1, 1, Icc); + } + break; + + // MultiLocalizedUnicodeType, V4 only + + case icSigMultiLocalizedUnicodeType: { + + icUInt32Number Count, RecLen; + icUInt16Number Language, Country; + icUInt32Number ThisLen, ThisOffset; + size_t Offset = 0; + size_t Len = 0; + size_t i; + wchar_t* wchar = L""; + + + if (Icc ->Read(&Count, sizeof(icUInt32Number), 1, Icc) != 1) return -1; + AdjustEndianess32((LPBYTE) &Count); + if (Icc ->Read(&RecLen, sizeof(icUInt32Number), 1, Icc) != 1) return -1; + AdjustEndianess32((LPBYTE) &RecLen); + + if (RecLen != 12) { + + cmsSignalError(LCMS_ERRC_ABORTED, "multiLocalizedUnicodeType of len != 12 is not supported."); + return -1; + } + + for (i=0; i < Count; i++) { + + if (Icc ->Read(&Language, sizeof(icUInt16Number), 1, Icc) != 1) return -1; + AdjustEndianess16((LPBYTE) &Language); + if (Icc ->Read(&Country, sizeof(icUInt16Number), 1, Icc) != 1) return -1; + AdjustEndianess16((LPBYTE) &Country); + + if (Icc ->Read(&ThisLen, sizeof(icUInt32Number), 1, Icc) != 1) return -1; + AdjustEndianess32((LPBYTE) &ThisLen); + + if (Icc ->Read(&ThisOffset, sizeof(icUInt32Number), 1, Icc) != 1) return -1; + AdjustEndianess32((LPBYTE) &ThisOffset); + + if (Language == GlobalLanguageCode || Offset == 0) { + + Len = ThisLen; Offset = ThisOffset; + if (Country == GlobalCountryCode) + break; // Found + } + + } + + + if (Offset == 0) { + + strcpy(Name, "(no info)"); + break; + } + + // Compute true offset + Offset -= 12 * Count + 8 + sizeof(icTagBase); + + // Skip unused bytes + for (i=0; i < Offset; i++) { + + char Discard; + if (Icc ->Read(&Discard, 1, 1, Icc) != 1) return -1; + } + + + // Bound len + if (Len < 0) Len = 0; + if (Len > 20*1024) Len = 20 * 1024; + + wchar = (wchar_t*) _cmsMalloc(Len*sizeof(wchar_t)+2); + if (!wchar) return -1; + + if (Icc ->Read(wchar, 1, Len, Icc) != Len) return -1; + AdjustEndianessArray16((LPWORD) wchar, Len / 2); + + wchar[Len / 2] = L'\0'; + i = wcstombs(Name, wchar, size_max ); + if (i == ((size_t) -1)) { + + Name[0] = 0; // Error + } + + _cmsFree((void*) wchar); + } + break; + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "Bad tag signature %lx found.", BaseType); + return -1; + } + + return (int) size; +} + + +// Take an ASCII item. Takes at most size_max bytes + +int LCMSEXPORT cmsReadICCTextEx(cmsHPROFILE hProfile, icTagSignature sig, char *Name, size_t size_max) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + size_t offset, size; + int n; + + n = _cmsSearchTag(Icc, sig, TRUE); + if (n < 0) + return -1; + + size = Icc -> TagSizes[n]; + + if (Icc -> TagPtrs[n]) { + + if (size > size_max) + size = size_max; + + CopyMemory(Name, Icc -> TagPtrs[n], size); + + return (int) Icc -> TagSizes[n]; + } + + offset = Icc -> TagOffsets[n]; + + + if (Icc -> Seek(Icc, offset)) + return -1; + + if (ReadEmbeddedTextTag(Icc, size, Name, size_max) < 0) return -1; + + return size; +} + +// Keep compatibility with older versions + +int LCMSEXPORT cmsReadICCText(cmsHPROFILE hProfile, icTagSignature sig, char *Text) +{ + return cmsReadICCTextEx(hProfile, sig, Text, LCMS_DESC_MAX); +} + + +// Take an XYZ item + +static +int ReadICCXYZ(cmsHPROFILE hProfile, icTagSignature sig, LPcmsCIEXYZ Value, LCMSBOOL lIsFatal) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + icTagTypeSignature BaseType; + size_t offset; + int n; + icXYZNumber XYZ; + + n = _cmsSearchTag(Icc, sig, FALSE); + if (n < 0) + return -1; + + if (Icc -> TagPtrs[n]) { + + CopyMemory(Value, Icc -> TagPtrs[n], Icc -> TagSizes[n]); + return (int) Icc -> TagSizes[n]; + } + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return -1; + + + BaseType = ReadBase(Icc); + + switch (BaseType) { + + + case 0x7c3b10cL: // Some apple broken embedded profiles does not have correct type + case icSigXYZType: + + Icc ->Read(&XYZ, sizeof(icXYZNumber), 1, Icc); + Value -> X = Convert15Fixed16(XYZ.X); + Value -> Y = Convert15Fixed16(XYZ.Y); + Value -> Z = Convert15Fixed16(XYZ.Z); + break; + + // Aug/21-2001 - Monaco 2 does have WRONG values. + + default: + if (lIsFatal) + cmsSignalError(LCMS_ERRC_ABORTED, "Bad tag signature %lx found.", BaseType); + return -1; + } + + return 1; +} + + +// Read a icSigS15Fixed16ArrayType (currently only a 3x3 matrix) + +static +int ReadICCXYZArray(cmsHPROFILE hProfile, icTagSignature sig, LPMAT3 v) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + icTagTypeSignature BaseType; + size_t offset, sz; + int i, n; + icXYZNumber XYZ[3]; + cmsCIEXYZ XYZdbl[3]; + + + n = _cmsSearchTag(Icc, sig, FALSE); + if (n < 0) + return -1; // Not found + + if (Icc -> TagPtrs[n]) { + + CopyMemory(v, Icc -> TagPtrs[n], Icc -> TagSizes[n]); + return (int) Icc -> TagSizes[n]; + } + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return -1; + + BaseType = ReadBase(Icc); + + switch (BaseType) { + + case icSigS15Fixed16ArrayType: + + sz = Icc ->TagSizes[n] / sizeof(icXYZNumber); + + if (sz != 3) { + cmsSignalError(LCMS_ERRC_ABORTED, "Bad array size of %d entries.", sz); + return -1; + } + + Icc ->Read(XYZ, sizeof(icXYZNumber), 3, Icc); + + for (i=0; i < 3; i++) { + + XYZdbl[i].X = Convert15Fixed16(XYZ[i].X); + XYZdbl[i].Y = Convert15Fixed16(XYZ[i].Y); + XYZdbl[i].Z = Convert15Fixed16(XYZ[i].Z); + } + + CopyMemory(v, XYZdbl, 3*sizeof(cmsCIEXYZ)); + break; + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "Bad tag signature %lx found.", BaseType); + return -1; + + } + + return sizeof(MAT3); +} + + + +// Primaries are to be in xyY notation + +LCMSBOOL LCMSEXPORT cmsTakeColorants(LPcmsCIEXYZTRIPLE Dest, cmsHPROFILE hProfile) +{ + if (ReadICCXYZ(hProfile, icSigRedColorantTag, &Dest -> Red, TRUE) < 0) return FALSE; + if (ReadICCXYZ(hProfile, icSigGreenColorantTag, &Dest -> Green, TRUE) < 0) return FALSE; + if (ReadICCXYZ(hProfile, icSigBlueColorantTag, &Dest -> Blue, TRUE) < 0) return FALSE; + + return TRUE; +} + + +LCMSBOOL cmsReadICCMatrixRGB2XYZ(LPMAT3 r, cmsHPROFILE hProfile) +{ + cmsCIEXYZTRIPLE Primaries; + + if (!cmsTakeColorants(&Primaries, hProfile)) return FALSE; + + VEC3init(&r -> v[0], Primaries.Red.X, Primaries.Green.X, Primaries.Blue.X); + VEC3init(&r -> v[1], Primaries.Red.Y, Primaries.Green.Y, Primaries.Blue.Y); + VEC3init(&r -> v[2], Primaries.Red.Z, Primaries.Green.Z, Primaries.Blue.Z); + + return TRUE; + +} + + +// Always return a suitable matrix + +LCMSBOOL cmsReadChromaticAdaptationMatrix(LPMAT3 r, cmsHPROFILE hProfile) +{ + + if (ReadICCXYZArray(hProfile, icSigChromaticAdaptationTag, r) < 0) { + + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + // For display profiles, revert to bradford. Else take identity. + + MAT3identity(r); + + // Emissive devices have non-identity chad + + if ((cmsGetDeviceClass(hProfile) == icSigDisplayClass) || + cmsTakeHeaderFlags(hProfile) & icTransparency) { + + // NULL for cone defaults to Bradford, from media to D50 + cmsAdaptationMatrix(r, NULL, &Icc ->MediaWhitePoint, &Icc ->Illuminant); + } + } + + return TRUE; +} + + + +LPGAMMATABLE LCMSEXPORT cmsReadICCGamma(cmsHPROFILE hProfile, icTagSignature sig) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + size_t offset; + int n; + + + n = _cmsSearchTag(Icc, sig, TRUE); + if (n < 0) + return NULL; + + if (Icc -> TagPtrs[n]) { + + return cmsDupGamma((LPGAMMATABLE) Icc -> TagPtrs[n]); + } + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return NULL; + + return ReadCurve(Icc); + +} + + +// Some ways have analytical revese. This function accounts for that + +LPGAMMATABLE LCMSEXPORT cmsReadICCGammaReversed(cmsHPROFILE hProfile, icTagSignature sig) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + size_t offset; + int n; + + + n = _cmsSearchTag(Icc, sig, TRUE); + if (n < 0) + return NULL; + + if (Icc -> TagPtrs[n]) { + + return cmsReverseGamma(256, (LPGAMMATABLE) Icc -> TagPtrs[n]); + } + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return NULL; + + return ReadCurveReversed(Icc); +} + +// Check Named color header + +static +LCMSBOOL CheckHeader(LPcmsNAMEDCOLORLIST v, icNamedColor2* nc2) +{ + if (v ->Prefix[0] == 0 && v ->Suffix[0] == 0 && v ->ColorantCount == 0) return TRUE; + + if (stricmp(v ->Prefix, (const char*) nc2 ->prefix) != 0) return FALSE; + if (stricmp(v ->Suffix, (const char*) nc2 ->suffix) != 0) return FALSE; + + return ((int) v ->ColorantCount == (int) nc2 ->nDeviceCoords); +} + +// Read named color list + +int cmsReadICCnamedColorList(cmsHTRANSFORM xform, cmsHPROFILE hProfile, icTagSignature sig) +{ + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) xform; + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + int n; + icTagTypeSignature BaseType; + size_t offset; + + n = _cmsSearchTag(Icc, sig, TRUE); + if (n < 0) + return 0; + + if (Icc -> TagPtrs[n]) { + + // This replaces actual named color list. + size_t size = Icc -> TagSizes[n]; + + if (v ->NamedColorList) cmsFreeNamedColorList(v ->NamedColorList); + v -> NamedColorList = (LPcmsNAMEDCOLORLIST) _cmsMalloc(size); + CopyMemory(v -> NamedColorList, Icc ->TagPtrs[n], size); + return v ->NamedColorList->nColors; + } + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return 0; + + BaseType = ReadBase(Icc); + + switch (BaseType) { + + // I never have seen one of these. Probably is not worth of implementing. + + case icSigNamedColorType: { + + cmsSignalError(LCMS_ERRC_WARNING, "Ancient named color profiles are not supported."); + return 0; + } + + // The named color struct + + case icSigNamedColor2Type: { + + icNamedColor2 nc2; + unsigned int i, j; + + if (Icc -> Read(&nc2, sizeof(icNamedColor2) - SIZEOF_UINT8_ALIGNED, 1, Icc) != 1) return 0; + AdjustEndianess32((LPBYTE) &nc2.vendorFlag); + AdjustEndianess32((LPBYTE) &nc2.count); + AdjustEndianess32((LPBYTE) &nc2.nDeviceCoords); + + if (!CheckHeader(v->NamedColorList, &nc2)) { + cmsSignalError(LCMS_ERRC_WARNING, "prefix/suffix/device for named color profiles mismatch."); + return 0; + } + + if (nc2.nDeviceCoords > MAXCHANNELS) { + cmsSignalError(LCMS_ERRC_WARNING, "Too many device coordinates."); + return 0; + } + + strncpy(v ->NamedColorList->Prefix, (const char*) nc2.prefix, 32); + strncpy(v ->NamedColorList->Suffix, (const char*) nc2.suffix, 32); + v ->NamedColorList->Prefix[32] = v->NamedColorList->Suffix[32] = 0; + + v ->NamedColorList ->ColorantCount = nc2.nDeviceCoords; + + for (i=0; i < nc2.count; i++) { + + WORD PCS[3]; + WORD Colorant[MAXCHANNELS]; + char Root[33]; + + ZeroMemory(Colorant, sizeof(WORD) * MAXCHANNELS); + Icc -> Read(Root, 1, 32, Icc); + Icc -> Read(PCS, 3, sizeof(WORD), Icc); + + for (j=0; j < 3; j++) + AdjustEndianess16((LPBYTE) &PCS[j]); + + Icc -> Read(Colorant, sizeof(WORD), nc2.nDeviceCoords, Icc); + + for (j=0; j < nc2.nDeviceCoords; j++) + AdjustEndianess16((LPBYTE) &Colorant[j]); + + cmsAppendNamedColor(v, Root, PCS, Colorant); + } + + return v ->NamedColorList->nColors; + } + break; + + default: + cmsSignalError(LCMS_ERRC_WARNING, "Bad tag signature '%lx' found.", BaseType); + return 0; + } + + // It would never reach here + // return 0; +} + + + +// Read colorant tables + +LPcmsNAMEDCOLORLIST LCMSEXPORT cmsReadColorantTable(cmsHPROFILE hProfile, icTagSignature sig) +{ + icInt32Number n; + icUInt32Number Count, i; + size_t offset; + icTagTypeSignature BaseType; + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + LPcmsNAMEDCOLORLIST List; + + n = _cmsSearchTag(Icc, sig, FALSE); + if (n < 0) + return NULL; // Not found + + if (Icc -> TagPtrs[n]) { + + size_t size = Icc -> TagSizes[n]; + void* v = _cmsMalloc(size); + + if (v == NULL) return NULL; + CopyMemory(v, Icc -> TagPtrs[n], size); + return (LPcmsNAMEDCOLORLIST) v; + } + + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return NULL; + + BaseType = ReadBase(Icc); + + if (BaseType != icSigColorantTableType) { + cmsSignalError(LCMS_ERRC_ABORTED, "Bad tag signature '%lx' found.", BaseType); + return NULL; + } + + + if (Icc ->Read(&Count, sizeof(icUInt32Number), 1, Icc) != 1) return NULL; + AdjustEndianess32((LPBYTE) &Count); + + if (Count > MAXCHANNELS) { + cmsSignalError(LCMS_ERRC_ABORTED, "Too many colorants '%lx'", Count); + return NULL; + } + + List = cmsAllocNamedColorList(Count); + for (i=0; i < Count; i++) { + + if (!Icc ->Read(List->List[i].Name, 1, 32 , Icc)) goto Error; + if (!Icc ->Read(List->List[i].PCS, sizeof(icUInt16Number), 3, Icc)) goto Error; + AdjustEndianessArray16(List->List[i].PCS, 3); + } + + return List; + +Error: + cmsFreeNamedColorList(List); + return NULL; + +} + + + +// Uncooked manufacturer + +const char* LCMSEXPORT cmsTakeManufacturer(cmsHPROFILE hProfile) +{ + + static char Manufacturer[LCMS_DESC_MAX] = ""; + + Manufacturer[0] = 0; + + if (cmsIsTag(hProfile, icSigDeviceMfgDescTag)) { + + cmsReadICCTextEx(hProfile, icSigDeviceMfgDescTag, Manufacturer, LCMS_DESC_MAX); + } + + return Manufacturer; +} + +// Uncooked model + +const char* LCMSEXPORT cmsTakeModel(cmsHPROFILE hProfile) +{ + + static char Model[LCMS_DESC_MAX] = ""; + + Model[0] = 0; + + if (cmsIsTag(hProfile, icSigDeviceModelDescTag)) { + + cmsReadICCTextEx(hProfile, icSigDeviceModelDescTag, Model, LCMS_DESC_MAX); + } + + return Model; +} + + +const char* LCMSEXPORT cmsTakeCopyright(cmsHPROFILE hProfile) +{ + + static char Copyright[LCMS_DESC_MAX] = ""; + + Copyright[0] = 0; + if (cmsIsTag(hProfile, icSigCopyrightTag)) { + + cmsReadICCTextEx(hProfile, icSigCopyrightTag, Copyright, LCMS_DESC_MAX); + } + + return Copyright; +} + + +// We compute name with model - manufacturer + +const char* LCMSEXPORT cmsTakeProductName(cmsHPROFILE hProfile) +{ + static char Name[LCMS_DESC_MAX*2+4]; + char Manufacturer[LCMS_DESC_MAX], Model[LCMS_DESC_MAX]; + + Name[0] = '\0'; + Manufacturer[0] = Model[0] = '\0'; + + if (cmsIsTag(hProfile, icSigDeviceMfgDescTag)) { + + cmsReadICCTextEx(hProfile, icSigDeviceMfgDescTag, Manufacturer, LCMS_DESC_MAX); + } + + if (cmsIsTag(hProfile, icSigDeviceModelDescTag)) { + + cmsReadICCTextEx(hProfile, icSigDeviceModelDescTag, Model, LCMS_DESC_MAX); + } + + if (!Manufacturer[0] && !Model[0]) { + + if (cmsIsTag(hProfile, icSigProfileDescriptionTag)) { + + cmsReadICCTextEx(hProfile, icSigProfileDescriptionTag, Name, LCMS_DESC_MAX); + return Name; + } + else return "{no name}"; + } + + + if (!Manufacturer[0] || + strncmp(Model, Manufacturer, 8) == 0 || strlen(Model) > 30) + strcpy(Name, Model); + else + sprintf(Name, "%s - %s", Model, Manufacturer); + + return Name; + +} + + +// We compute desc with manufacturer - model + +const char* LCMSEXPORT cmsTakeProductDesc(cmsHPROFILE hProfile) +{ + static char Name[2048]; + + if (cmsIsTag(hProfile, icSigProfileDescriptionTag)) { + + cmsReadICCText(hProfile, icSigProfileDescriptionTag, Name); + } + else return cmsTakeProductName(hProfile); + + if (strncmp(Name, "Copyrig", 7) == 0) + return cmsTakeProductName(hProfile); + + return Name; +} + + +const char* LCMSEXPORT cmsTakeProductInfo(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + static char Info[4096]; + + Info[0] = '\0'; + + if (cmsIsTag(hProfile, icSigProfileDescriptionTag)) + { + char Desc[1024]; + + cmsReadICCText(hProfile, icSigProfileDescriptionTag, Desc); + strcat(Info, Desc); + strcat(Info, "\r\n\r\n"); + } + + + if (cmsIsTag(hProfile, icSigCopyrightTag)) + { + char Copyright[LCMS_DESC_MAX]; + + cmsReadICCText(hProfile, icSigCopyrightTag, Copyright); + strcat(Info, Copyright); + strcat(Info, "\r\n\r\n"); + } + + + +// KODAK private tag... But very useful + +#define K007 (icTagSignature)0x4B303037 + + // MonCal + + if (cmsIsTag(hProfile, K007)) + { + char MonCal[LCMS_DESC_MAX]; + + cmsReadICCText(hProfile, K007, MonCal); + strcat(Info, MonCal); + strcat(Info, "\r\n\r\n"); + } + else + { + cmsCIEXYZ WhitePt; + char WhiteStr[1024]; + + cmsTakeMediaWhitePoint(&WhitePt, hProfile); + _cmsIdentifyWhitePoint(WhiteStr, &WhitePt); + strcat(WhiteStr, "\r\n\r\n"); + strcat(Info, WhiteStr); + } + + + if (Icc -> stream) { + strcat(Info, Icc -> PhysicalFile); + } + return Info; +} + +// Extract the target data as a big string. Does not signal if tag is not present. + +LCMSBOOL LCMSEXPORT cmsTakeCharTargetData(cmsHPROFILE hProfile, char** Data, size_t* len) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + int n; + + *Data = NULL; + *len = 0; + + n = _cmsSearchTag(Icc, icSigCharTargetTag, FALSE); + if (n < 0) return FALSE; + + + *len = Icc -> TagSizes[n]; + + // Make sure that is reasonable (600K) + if (*len > 600*1024) *len = 600*1024; + + *Data = (char*) _cmsMalloc(*len + 1); // Plus zero marker + + if (!*Data) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Out of memory allocating CharTarget space!"); + return FALSE; + } + + if (cmsReadICCTextEx(hProfile, icSigCharTargetTag, *Data, *len) < 0) + return FALSE; + + (*Data)[*len] = 0; // Force a zero marker. Shouldn't be needed, but is + // here to simplify things. + + return TRUE; +} + + + + +LCMSBOOL LCMSEXPORT cmsTakeCalibrationDateTime(struct tm *Dest, cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + int n; + + n = _cmsSearchTag(Icc, icSigCalibrationDateTimeTag, FALSE); + if (n < 0) return FALSE; + + if (Icc ->TagPtrs[n]) { + + CopyMemory(Dest, Icc ->TagPtrs[n], sizeof(struct tm)); + } + else + { + icDateTimeNumber timestamp; + + if (Icc -> Seek(Icc, Icc -> TagOffsets[n] + sizeof(icTagBase))) + return FALSE; + + if (Icc ->Read(×tamp, 1, sizeof(icDateTimeNumber), Icc) != sizeof(icDateTimeNumber)) + return FALSE; + + DecodeDateTimeNumber(×tamp, Dest); + } + + + return TRUE; +} + + + +// PSEQ Tag, used in devicelink profiles + +LPcmsSEQ LCMSEXPORT cmsReadProfileSequenceDescription(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + int n; + icUInt32Number i, Count; + icDescStruct DescStruct; + icTagTypeSignature BaseType; + size_t size, offset; + LPcmsSEQ OutSeq; + + + n = _cmsSearchTag(Icc, icSigProfileSequenceDescTag, FALSE); + if (n < 0) return NULL; + + size = Icc -> TagSizes[n]; + if (size < 12) return NULL; + + if (Icc -> TagPtrs[n]) { + + OutSeq = (LPcmsSEQ) _cmsMalloc(size); + if (OutSeq == NULL) return NULL; + CopyMemory(OutSeq, Icc ->TagPtrs[n], size); + return OutSeq; + } + + offset = Icc -> TagOffsets[n]; + + if (Icc -> Seek(Icc, offset)) + return NULL; + + BaseType = ReadBase(Icc); + + if (BaseType != icSigProfileSequenceDescType) return NULL; + + Icc ->Read(&Count, sizeof(icUInt32Number), 1, Icc); + AdjustEndianess32((LPBYTE) &Count); + + if (Count > 1000) { + return NULL; + } + + size = sizeof(int) + Count * sizeof(cmsPSEQDESC); + OutSeq = (LPcmsSEQ) _cmsMalloc(size); + if (OutSeq == NULL) return NULL; + + OutSeq ->n = Count; + + // Get structures as well + + for (i=0; i < Count; i++) { + + LPcmsPSEQDESC sec = &OutSeq -> seq[i]; + + Icc -> Read(&DescStruct, sizeof(icDescStruct) - SIZEOF_UINT8_ALIGNED, 1, Icc); + + AdjustEndianess32((LPBYTE) &DescStruct.deviceMfg); + AdjustEndianess32((LPBYTE) &DescStruct.deviceModel); + AdjustEndianess32((LPBYTE) &DescStruct.technology); + AdjustEndianess32((LPBYTE) &DescStruct.attributes[0]); + AdjustEndianess32((LPBYTE) &DescStruct.attributes[1]); + + sec ->attributes[0] = DescStruct.attributes[0]; + sec ->attributes[1] = DescStruct.attributes[1]; + sec ->deviceMfg = DescStruct.deviceMfg; + sec ->deviceModel = DescStruct.deviceModel; + sec ->technology = DescStruct.technology; + + if (ReadEmbeddedTextTag(Icc, size, sec ->Manufacturer, LCMS_DESC_MAX) < 0) return NULL; + if (ReadEmbeddedTextTag(Icc, size, sec ->Model, LCMS_DESC_MAX) < 0) return NULL; + + } + + return OutSeq; +} + + +void LCMSEXPORT cmsFreeProfileSequenceDescription(LPcmsSEQ pseq) +{ + if (pseq) + _cmsFree(pseq); +} + + + + + +// Read a few tags that are hardly required + + +static +void ReadCriticalTags(LPLCMSICCPROFILE Icc) +{ + cmsHPROFILE hProfile = (cmsHPROFILE) Icc; + + if (Icc ->Version >= 0x4000000) { + + // v4 profiles + + MAT3 ChrmCanonical; + + if (ReadICCXYZ(hProfile, + icSigMediaWhitePointTag, + &Icc ->MediaWhitePoint, FALSE) < 0) { + + Icc ->MediaWhitePoint = *cmsD50_XYZ(); + } + + // Read media black + + if (ReadICCXYZ(hProfile, + icSigMediaBlackPointTag, + &Icc ->MediaBlackPoint, FALSE) < 0) { + + Icc ->MediaBlackPoint.X = 0; + Icc ->MediaBlackPoint.Y = 0; + Icc ->MediaBlackPoint.X = 0; + + } + + NormalizeXYZ(&Icc ->MediaWhitePoint); + NormalizeXYZ(&Icc ->MediaBlackPoint); + + if (ReadICCXYZArray(hProfile, + icSigChromaticAdaptationTag, + &ChrmCanonical) > 0) { + + MAT3inverse(&ChrmCanonical, &Icc ->ChromaticAdaptation); + + } + else { + + MAT3identity(&Icc ->ChromaticAdaptation); + } + + + // Convert media white, black to absolute under original illuminant + + EvalCHRM(&Icc ->MediaWhitePoint, &Icc ->ChromaticAdaptation, &Icc ->MediaWhitePoint); + EvalCHRM(&Icc ->MediaBlackPoint, &Icc ->ChromaticAdaptation, &Icc ->MediaBlackPoint); + + + } + else { + + // v2 profiles + + // Read media white + + if (ReadICCXYZ(hProfile, + icSigMediaWhitePointTag, + &Icc ->MediaWhitePoint, FALSE) < 0) { + + Icc ->MediaWhitePoint = *cmsD50_XYZ(); + } + + // Read media black + + if (ReadICCXYZ(hProfile, + icSigMediaBlackPointTag, + &Icc ->MediaBlackPoint, FALSE) < 0) { + + Icc ->MediaBlackPoint.X = 0; + Icc ->MediaBlackPoint.Y = 0; + Icc ->MediaBlackPoint.X = 0; + + } + + NormalizeXYZ(&Icc ->MediaWhitePoint); + NormalizeXYZ(&Icc ->MediaBlackPoint); + + + // Take Bradford as default for Display profiles only. + + if (cmsGetDeviceClass(hProfile) == icSigDisplayClass) { + + + cmsAdaptationMatrix(&Icc -> ChromaticAdaptation, + NULL, + &Icc -> Illuminant, + &Icc -> MediaWhitePoint); + } + else + MAT3identity(&Icc ->ChromaticAdaptation); + + } + +} + + +// Create profile from disk file + +cmsHPROFILE LCMSEXPORT cmsOpenProfileFromFile(const char *lpFileName, const char *sAccess) +{ + LPLCMSICCPROFILE NewIcc; + cmsHPROFILE hEmpty; + + + // Open for write means an empty profile + + if (*sAccess == 'W' || *sAccess == 'w') { + + hEmpty = _cmsCreateProfilePlaceholder(); + NewIcc = (LPLCMSICCPROFILE) (LPSTR) hEmpty; + NewIcc -> IsWrite = TRUE; + strncpy(NewIcc ->PhysicalFile, lpFileName, MAX_PATH-1); + NewIcc ->PhysicalFile[MAX_PATH-1] = 0; + + // Save LUT as 8 bit + + sAccess++; + if (*sAccess == '8') NewIcc ->SaveAs8Bits = TRUE; + + return hEmpty; + } + + + // Open for read means a file placeholder + + NewIcc = _cmsCreateProfileFromFilePlaceholder(lpFileName); + if (!NewIcc) return NULL; + + if (!ReadHeader(NewIcc, FALSE)) return NULL; + + ReadCriticalTags(NewIcc); + + return (cmsHPROFILE) (LPSTR) NewIcc; +} + + + + +// Open from memory block + +cmsHPROFILE LCMSEXPORT cmsOpenProfileFromMem(LPVOID MemPtr, DWORD dwSize) +{ + LPLCMSICCPROFILE NewIcc; + + + NewIcc = _cmsCreateProfileFromMemPlaceholder(MemPtr, dwSize); + if (!NewIcc) return NULL; + + if (!ReadHeader(NewIcc, TRUE)) return NULL; + + ReadCriticalTags(NewIcc); + + return (cmsHPROFILE) (LPSTR) NewIcc; + +} + + + +LCMSBOOL LCMSEXPORT cmsCloseProfile(cmsHPROFILE hProfile) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + LCMSBOOL rc = TRUE; + icInt32Number i; + + if (!Icc) return FALSE; + + // Was open in write mode? + if (Icc ->IsWrite) { + + Icc ->IsWrite = FALSE; // Assure no further writting + rc = _cmsSaveProfile(hProfile, Icc ->PhysicalFile); + } + + for (i=0; i < Icc -> TagCount; i++) { + + if (Icc -> TagPtrs[i]) + free(Icc -> TagPtrs[i]); + } + + if (Icc -> stream != NULL) { // Was a memory (i.e. not serialized) profile? + Icc -> Close(Icc); // No, close the stream + } + + free(Icc); // Free placeholder memory + + return rc; +} + + + +// Write profile ------------------------------------------------------------ + + + +static +LCMSBOOL SaveWordsTable(int nEntries, LPWORD Tab, LPLCMSICCPROFILE Icc) +{ + size_t nTabSize = sizeof(WORD) * nEntries; + LPWORD PtrW = (LPWORD) _cmsMalloc(nTabSize); + LCMSBOOL rc; + + if (!PtrW) return FALSE; + CopyMemory(PtrW, Tab, nTabSize); + AdjustEndianessArray16(PtrW, nEntries); + rc = Icc ->Write(Icc, nTabSize, PtrW); + free(PtrW); + + return rc; +} + + + +// Saves profile header + +static +LCMSBOOL SaveHeader(LPLCMSICCPROFILE Icc) +{ + icHeader Header; + time_t now = time(NULL); + + Header.size = TransportValue32((icInt32Number) Icc ->UsedSpace); + Header.cmmId = TransportValue32(lcmsSignature); + Header.version = TransportValue32((icInt32Number) 0x02300000); + Header.deviceClass = (icProfileClassSignature) TransportValue32(Icc -> DeviceClass); + Header.colorSpace = (icColorSpaceSignature) TransportValue32(Icc -> ColorSpace); + Header.pcs = (icColorSpaceSignature) TransportValue32(Icc -> PCS); + + // NOTE: in v4 Timestamp must be in UTC rather than in local time + EncodeDateTimeNumber(&Header.date, gmtime(&now)); + + Header.magic = TransportValue32(icMagicNumber); + +#ifdef NON_WINDOWS + Header.platform = (icPlatformSignature)TransportValue32(icSigMacintosh); +#else + Header.platform = (icPlatformSignature)TransportValue32(icSigMicrosoft); +#endif + + Header.flags = TransportValue32(Icc -> flags); + Header.manufacturer = TransportValue32(lcmsSignature); + Header.model = TransportValue32(0); + Header.attributes[0]= TransportValue32(Icc -> attributes); + Header.attributes[1]= TransportValue32(0); + + Header.renderingIntent = TransportValue32(Icc -> RenderingIntent); + + // Illuminant is D50 + + Header.illuminant.X = TransportValue32(DOUBLE_TO_FIXED(Icc -> Illuminant.X)); + Header.illuminant.Y = TransportValue32(DOUBLE_TO_FIXED(Icc -> Illuminant.Y)); + Header.illuminant.Z = TransportValue32(DOUBLE_TO_FIXED(Icc -> Illuminant.Z)); + + Header.creator = TransportValue32(lcmsSignature); + + ZeroMemory(&Header.reserved, sizeof(Header.reserved)); + + // Set profile ID + CopyMemory(Header.reserved, Icc ->ProfileID, 16); + + + Icc ->UsedSpace = 0; // Mark as begin-of-file + + return Icc ->Write(Icc, sizeof(icHeader), &Header); +} + + + +// Setup base marker + +static +LCMSBOOL SetupBase(icTagTypeSignature sig, LPLCMSICCPROFILE Icc) +{ + icTagBase Base; + + Base.sig = (icTagTypeSignature) TransportValue32(sig); + ZeroMemory(&Base.reserved, sizeof(Base.reserved)); + return Icc -> Write(Icc, sizeof(icTagBase), &Base); +} + + +// Store a XYZ tag + +static +LCMSBOOL SaveXYZNumber(LPcmsCIEXYZ Value, LPLCMSICCPROFILE Icc) +{ + + icXYZNumber XYZ; + + if (!SetupBase(icSigXYZType, Icc)) return FALSE; + + XYZ.X = TransportValue32(DOUBLE_TO_FIXED(Value -> X)); + XYZ.Y = TransportValue32(DOUBLE_TO_FIXED(Value -> Y)); + XYZ.Z = TransportValue32(DOUBLE_TO_FIXED(Value -> Z)); + + + return Icc -> Write(Icc, sizeof(icXYZNumber), &XYZ); +} + + +// Store a XYZ array. + +static +LCMSBOOL SaveXYZArray(int n, LPcmsCIEXYZ Value, LPLCMSICCPROFILE Icc) +{ + int i; + icXYZNumber XYZ; + + if (!SetupBase(icSigS15Fixed16ArrayType, Icc)) return FALSE; + + for (i=0; i < n; i++) { + + XYZ.X = TransportValue32(DOUBLE_TO_FIXED(Value -> X)); + XYZ.Y = TransportValue32(DOUBLE_TO_FIXED(Value -> Y)); + XYZ.Z = TransportValue32(DOUBLE_TO_FIXED(Value -> Z)); + + if (!Icc -> Write(Icc, sizeof(icXYZNumber), &XYZ)) return FALSE; + + Value++; + } + + return TRUE; +} + + + +// Save a gamma structure as a table + +static +LCMSBOOL SaveGammaTable(LPGAMMATABLE Gamma, LPLCMSICCPROFILE Icc) +{ + icInt32Number Count; + + if (!SetupBase(icSigCurveType, Icc)) return FALSE; + + Count = TransportValue32(Gamma->nEntries); + + if (!Icc ->Write(Icc, sizeof(icInt32Number), &Count)) return FALSE; + + return SaveWordsTable(Gamma->nEntries, Gamma ->GammaTable, Icc); +} + + +// Save a gamma structure as a one-value + +static +LCMSBOOL SaveGammaOneValue(LPGAMMATABLE Gamma, LPLCMSICCPROFILE Icc) +{ + icInt32Number Count; + Fixed32 GammaFixed32; + WORD GammaFixed8; + + if (!SetupBase(icSigCurveType, Icc)) return FALSE; + + Count = TransportValue32(1); + if (!Icc ->Write(Icc, sizeof(icInt32Number), &Count)) return FALSE; + + GammaFixed32 = DOUBLE_TO_FIXED(Gamma ->Seed.Params[0]); + GammaFixed8 = (WORD) ((GammaFixed32 >> 8) & 0xFFFF); + GammaFixed8 = TransportValue16(GammaFixed8); + + return Icc ->Write(Icc, sizeof(icInt16Number), &GammaFixed8); +} + +// Save a gamma structure as a parametric gamma + +static +LCMSBOOL SaveGammaParametric(LPGAMMATABLE Gamma, LPLCMSICCPROFILE Icc) +{ + icUInt16Number Type, Reserved; + int i, nParams; + int ParamsByType[] = { 1, 3, 4, 5, 7 }; + + if (!SetupBase(icSigParametricCurveType, Icc)) return FALSE; + + nParams = ParamsByType[Gamma -> Seed.Type]; + + Type = (icUInt16Number) TransportValue16((WORD) Gamma -> Seed. Type); + Reserved = (icUInt16Number) TransportValue16((WORD) 0); + + Icc -> Write(Icc, sizeof(icInt16Number), &Type); + Icc -> Write(Icc, sizeof(icUInt16Number), &Reserved); + + for (i=0; i < nParams; i++) { + + icInt32Number val = TransportValue32(DOUBLE_TO_FIXED(Gamma -> Seed.Params[i])); + Icc ->Write(Icc, sizeof(icInt32Number), &val); + } + + + return TRUE; + +} + + +// Save a gamma table + +static +LCMSBOOL SaveGamma(LPGAMMATABLE Gamma, LPLCMSICCPROFILE Icc) +{ + // Is the gamma curve type supported by ICC format? + + if (Gamma -> Seed.Type < 0 || Gamma -> Seed.Type > 5 || + + // has been modified by user? + + _cmsCrc32OfGammaTable(Gamma) != Gamma -> Seed.Crc32) { + + return SaveGammaTable(Gamma, Icc); + } + + if (Gamma -> Seed.Type == 1) return SaveGammaOneValue(Gamma, Icc); + + // Only v4 profiles are allowed to hold parametric curves + + if (cmsGetProfileICCversion((cmsHPROFILE) Icc) >= 0x4000000) + return SaveGammaParametric(Gamma, Icc); + + // Defaults to save as table + + return SaveGammaTable(Gamma, Icc); + +} + + + + +// Save an DESC Tag + +static +LCMSBOOL SaveDescription(const char *Text, LPLCMSICCPROFILE Icc) +{ + + icUInt32Number len, Count, TotalSize, AlignedSize; + char Filler[256]; + + len = (icUInt32Number) (strlen(Text) + 1); + + // * icInt8Number desc[count] * NULL terminated ascii string + // * icUInt32Number ucLangCode; * UniCode language code + // * icUInt32Number ucCount; * UniCode description length + // * icInt16Number ucDesc[ucCount];* The UniCode description + // * icUInt16Number scCode; * ScriptCode code + // * icUInt8Number scCount; * ScriptCode count + // * icInt8Number scDesc[67]; * ScriptCode Description + + TotalSize = sizeof(icTagBase) + sizeof(icUInt32Number) + len + + sizeof(icUInt32Number) + sizeof(icUInt32Number) + + sizeof(icUInt16Number) + sizeof(icUInt8Number) + 67; + + AlignedSize = TotalSize; // Can be unaligned!! + + if (!SetupBase(icSigTextDescriptionType, Icc)) return FALSE; + AlignedSize -= sizeof(icTagBase); + + Count = TransportValue32(len); + if (!Icc ->Write(Icc, sizeof(icUInt32Number), &Count)) return FALSE; + AlignedSize -= sizeof(icUInt32Number); + + if (!Icc ->Write(Icc, len, (LPVOID)Text)) return FALSE; + AlignedSize -= len; + + if (AlignedSize < 0) + AlignedSize = 0; + if (AlignedSize > 255) + AlignedSize = 255; + + ZeroMemory(Filler, AlignedSize); + if (!Icc ->Write(Icc, AlignedSize, Filler)) return FALSE; + + return TRUE; +} + +// Save an ASCII Tag + +static +LCMSBOOL SaveText(const char *Text, LPLCMSICCPROFILE Icc) +{ + size_t len = strlen(Text) + 1; + + if (!SetupBase(icSigTextType, Icc)) return FALSE; + if (!Icc ->Write(Icc, len, (LPVOID) Text)) return FALSE; + return TRUE; +} + + +// Save one of these new chromaticity values + +static +LCMSBOOL SaveOneChromaticity(double x, double y, LPLCMSICCPROFILE Icc) +{ + Fixed32 xf, yf; + + xf = TransportValue32(DOUBLE_TO_FIXED(x)); + yf = TransportValue32(DOUBLE_TO_FIXED(y)); + + if (!Icc ->Write(Icc, sizeof(Fixed32), &xf)) return FALSE; + if (!Icc ->Write(Icc, sizeof(Fixed32), &yf)) return FALSE; + + return TRUE; +} + + +// New tag added in Addendum II of old spec. + +static +LCMSBOOL SaveChromaticities(LPcmsCIExyYTRIPLE chrm, LPLCMSICCPROFILE Icc) +{ + WORD nChans, Table; + + if (!SetupBase(icSigChromaticityType, Icc)) return FALSE; + + nChans = TransportValue16(3); + if (!Icc ->Write(Icc, sizeof(WORD) , &nChans)) return FALSE; + Table = TransportValue16(0); + if (!Icc ->Write(Icc, sizeof(WORD) , &Table)) return FALSE; + + if (!SaveOneChromaticity(chrm -> Red.x, chrm -> Red.y, Icc)) return FALSE; + if (!SaveOneChromaticity(chrm -> Green.x, chrm -> Green.y, Icc)) return FALSE; + if (!SaveOneChromaticity(chrm -> Blue.x, chrm -> Blue.y, Icc)) return FALSE; + + return TRUE; +} + + +static +LCMSBOOL SaveSequenceDescriptionTag(LPcmsSEQ seq, LPLCMSICCPROFILE Icc) +{ + icUInt32Number nSeqs; + icDescStruct DescStruct; + int i, n = seq ->n; + LPcmsPSEQDESC pseq = seq ->seq; + + if (!SetupBase(icSigProfileSequenceDescType, Icc)) return FALSE; + + nSeqs = TransportValue32(n); + + if (!Icc ->Write(Icc, sizeof(icUInt32Number) , &nSeqs)) return FALSE; + + for (i=0; i < n; i++) { + + LPcmsPSEQDESC sec = pseq + i; + + + DescStruct.deviceMfg = (icTagTypeSignature) TransportValue32(sec ->deviceMfg); + DescStruct.deviceModel = (icTagTypeSignature) TransportValue32(sec ->deviceModel); + DescStruct.technology = (icTechnologySignature) TransportValue32(sec ->technology); + DescStruct.attributes[0]= TransportValue32(sec ->attributes[0]); + DescStruct.attributes[1]= TransportValue32(sec ->attributes[1]); + + if (!Icc ->Write(Icc, sizeof(icDescStruct) - SIZEOF_UINT8_ALIGNED, &DescStruct)) return FALSE; + + if (!SaveDescription(sec ->Manufacturer, Icc)) return FALSE; + if (!SaveDescription(sec ->Model, Icc)) return FALSE; + } + + return TRUE; +} + + +// Saves a timestamp tag + +static +LCMSBOOL SaveDateTimeNumber(const struct tm *DateTime, LPLCMSICCPROFILE Icc) +{ + icDateTimeNumber Dest; + + if (!SetupBase(icSigDateTimeType, Icc)) return FALSE; + EncodeDateTimeNumber(&Dest, DateTime); + if (!Icc ->Write(Icc, sizeof(icDateTimeNumber), &Dest)) return FALSE; + + return TRUE; +} + + +// Saves a named color list into a named color profile +static +LCMSBOOL SaveNamedColorList(LPcmsNAMEDCOLORLIST NamedColorList, LPLCMSICCPROFILE Icc) +{ + + icUInt32Number vendorFlag; // Bottom 16 bits for IC use + icUInt32Number count; // Count of named colors + icUInt32Number nDeviceCoords; // Num of device coordinates + char prefix[32]; // Prefix for each color name + char suffix[32]; // Suffix for each color name + int i; + + if (!SetupBase(icSigNamedColor2Type, Icc)) return FALSE; + + vendorFlag = TransportValue32(0); + count = TransportValue32(NamedColorList ->nColors); + nDeviceCoords = TransportValue32(NamedColorList ->ColorantCount); + + strncpy(prefix, (const char*) NamedColorList->Prefix, 31); + strncpy(suffix, (const char*) NamedColorList->Suffix, 31); + + suffix[31] = prefix[31] = 0; + + if (!Icc ->Write(Icc, sizeof(icUInt32Number), &vendorFlag)) return FALSE; + if (!Icc ->Write(Icc, sizeof(icUInt32Number), &count)) return FALSE; + if (!Icc ->Write(Icc, sizeof(icUInt32Number), &nDeviceCoords)) return FALSE; + if (!Icc ->Write(Icc, 32 , prefix)) return FALSE; + if (!Icc ->Write(Icc, 32 , suffix)) return FALSE; + + for (i=0; i < NamedColorList ->nColors; i++) { + + icUInt16Number PCS[3]; + icUInt16Number Colorant[MAXCHANNELS]; + char root[32]; + LPcmsNAMEDCOLOR Color; + int j; + + Color = NamedColorList ->List + i; + + strncpy(root, Color ->Name, 32); + Color ->Name[32] = 0; + + if (!Icc ->Write(Icc, 32 , root)) return FALSE; + + for (j=0; j < 3; j++) + PCS[j] = TransportValue16(Color ->PCS[j]); + + if (!Icc ->Write(Icc, 3 * sizeof(icUInt16Number), PCS)) return FALSE; + + for (j=0; j < NamedColorList ->ColorantCount; j++) + Colorant[j] = TransportValue16(Color ->DeviceColorant[j]); + + if (!Icc ->Write(Icc, + NamedColorList ->ColorantCount * sizeof(icUInt16Number), Colorant)) return FALSE; + } + + + return TRUE; +} + + + +// Saves a colorant table. It is using the named color structure for simplicity sake + +static +LCMSBOOL SaveColorantTable(LPcmsNAMEDCOLORLIST NamedColorList, LPLCMSICCPROFILE Icc) +{ + icUInt32Number count; // Count of named colors + int i; + + if (!SetupBase(icSigColorantTableType, Icc)) return FALSE; + + count = TransportValue32(NamedColorList ->nColors); + + if (!Icc ->Write(Icc, sizeof(icUInt32Number), &count)) return FALSE; + + for (i=0; i < NamedColorList ->nColors; i++) { + + icUInt16Number PCS[3]; + icInt8Number root[33]; + LPcmsNAMEDCOLOR Color; + int j; + + Color = NamedColorList ->List + i; + + strncpy((char*) root, Color ->Name, 32); + root[32] = 0; + + if (!Icc ->Write(Icc, 32 , root)) return FALSE; + + for (j=0; j < 3; j++) + PCS[j] = TransportValue16(Color ->PCS[j]); + + if (!Icc ->Write(Icc, 3 * sizeof(icUInt16Number), PCS)) return FALSE; + + } + + + return TRUE; +} + +// Does serialization of LUT16 and writes it. + +static +LCMSBOOL SaveLUT(const LUT* NewLUT, LPLCMSICCPROFILE Icc) +{ + icLut16 LUT16; + unsigned int i; + size_t nTabSize; + WORD NullTbl[2] = { 0, 0xFFFFU}; + + + if (!SetupBase(icSigLut16Type, Icc)) return FALSE; + + LUT16.clutPoints = (icUInt8Number) NewLUT -> cLutPoints; + LUT16.inputChan = (icUInt8Number) NewLUT -> InputChan; + LUT16.outputChan = (icUInt8Number) NewLUT -> OutputChan; + + LUT16.inputEnt = TransportValue16((WORD) ((NewLUT -> wFlags & LUT_HASTL1) ? NewLUT -> InputEntries : 2)); + LUT16.outputEnt = TransportValue16((WORD) ((NewLUT -> wFlags & LUT_HASTL2) ? NewLUT -> OutputEntries : 2)); + + if (NewLUT -> wFlags & LUT_HASMATRIX) { + + LUT16.e00 = TransportValue32(NewLUT -> Matrix.v[0].n[0]); + LUT16.e01 = TransportValue32(NewLUT -> Matrix.v[0].n[1]); + LUT16.e02 = TransportValue32(NewLUT -> Matrix.v[0].n[2]); + LUT16.e10 = TransportValue32(NewLUT -> Matrix.v[1].n[0]); + LUT16.e11 = TransportValue32(NewLUT -> Matrix.v[1].n[1]); + LUT16.e12 = TransportValue32(NewLUT -> Matrix.v[1].n[2]); + LUT16.e20 = TransportValue32(NewLUT -> Matrix.v[2].n[0]); + LUT16.e21 = TransportValue32(NewLUT -> Matrix.v[2].n[1]); + LUT16.e22 = TransportValue32(NewLUT -> Matrix.v[2].n[2]); + } + else { + + LUT16.e00 = TransportValue32(DOUBLE_TO_FIXED(1)); + LUT16.e01 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT16.e02 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT16.e10 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT16.e11 = TransportValue32(DOUBLE_TO_FIXED(1)); + LUT16.e12 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT16.e20 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT16.e21 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT16.e22 = TransportValue32(DOUBLE_TO_FIXED(1)); + } + + + // Save header + + Icc -> Write(Icc, sizeof(icLut16)- SIZEOF_UINT16_ALIGNED, &LUT16); + + // The prelinearization table + + for (i=0; i < NewLUT -> InputChan; i++) { + + if (NewLUT -> wFlags & LUT_HASTL1) { + + if (!SaveWordsTable(NewLUT -> InputEntries, + NewLUT -> L1[i], Icc)) return FALSE; + + } + else Icc -> Write(Icc, sizeof(WORD)* 2, NullTbl); + } + + + nTabSize = (NewLUT -> OutputChan * uipow(NewLUT->cLutPoints, + NewLUT->InputChan)); + // The 3D CLUT. + + if (nTabSize > 0) { + + if (!SaveWordsTable((int) nTabSize, NewLUT -> T, Icc)) return FALSE; + } + // The postlinearization table + + for (i=0; i < NewLUT -> OutputChan; i++) { + + if (NewLUT -> wFlags & LUT_HASTL2) { + + if (!SaveWordsTable(NewLUT -> OutputEntries, + NewLUT -> L2[i], Icc)) return FALSE; + } + else Icc -> Write(Icc, sizeof(WORD)* 2, NullTbl); + + } + + return TRUE; +} + + + +// Does serialization of LUT8 and writes it + +static +LCMSBOOL SaveLUT8(const LUT* NewLUT, LPLCMSICCPROFILE Icc) +{ + icLut8 LUT8; + unsigned int i, j; + size_t nTabSize; + BYTE val; + + // Sanity check + + if (NewLUT -> wFlags & LUT_HASTL1) { + + if (NewLUT -> InputEntries != 256) { + cmsSignalError(LCMS_ERRC_ABORTED, "LUT8 needs 256 entries on prelinearization"); + return FALSE; + } + + } + + + if (NewLUT -> wFlags & LUT_HASTL2) { + + if (NewLUT -> OutputEntries != 256) { + cmsSignalError(LCMS_ERRC_ABORTED, "LUT8 needs 256 entries on postlinearization"); + return FALSE; + } + } + + + + if (!SetupBase(icSigLut8Type, Icc)) return FALSE; + + LUT8.clutPoints = (icUInt8Number) NewLUT -> cLutPoints; + LUT8.inputChan = (icUInt8Number) NewLUT -> InputChan; + LUT8.outputChan = (icUInt8Number) NewLUT -> OutputChan; + + + if (NewLUT -> wFlags & LUT_HASMATRIX) { + + LUT8.e00 = TransportValue32(NewLUT -> Matrix.v[0].n[0]); + LUT8.e01 = TransportValue32(NewLUT -> Matrix.v[0].n[1]); + LUT8.e02 = TransportValue32(NewLUT -> Matrix.v[0].n[2]); + LUT8.e10 = TransportValue32(NewLUT -> Matrix.v[1].n[0]); + LUT8.e11 = TransportValue32(NewLUT -> Matrix.v[1].n[1]); + LUT8.e12 = TransportValue32(NewLUT -> Matrix.v[1].n[2]); + LUT8.e20 = TransportValue32(NewLUT -> Matrix.v[2].n[0]); + LUT8.e21 = TransportValue32(NewLUT -> Matrix.v[2].n[1]); + LUT8.e22 = TransportValue32(NewLUT -> Matrix.v[2].n[2]); + } + else { + + LUT8.e00 = TransportValue32(DOUBLE_TO_FIXED(1)); + LUT8.e01 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT8.e02 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT8.e10 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT8.e11 = TransportValue32(DOUBLE_TO_FIXED(1)); + LUT8.e12 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT8.e20 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT8.e21 = TransportValue32(DOUBLE_TO_FIXED(0)); + LUT8.e22 = TransportValue32(DOUBLE_TO_FIXED(1)); + } + + + // Save header + + Icc -> Write(Icc, sizeof(icLut8)- SIZEOF_UINT8_ALIGNED, &LUT8); + + // The prelinearization table + + for (i=0; i < NewLUT -> InputChan; i++) { + + for (j=0; j < 256; j++) { + + if (NewLUT -> wFlags & LUT_HASTL1) + val = (BYTE) floor(NewLUT ->L1[i][j] / 257.0 + .5); + else + val = (BYTE) j; + + Icc ->Write(Icc, 1, &val); + } + + } + + + nTabSize = (NewLUT -> OutputChan * uipow(NewLUT->cLutPoints, + NewLUT->InputChan)); + // The 3D CLUT. + + for (j=0; j < nTabSize; j++) { + + val = (BYTE) floor(NewLUT ->T[j] / 257.0 + .5); + Icc ->Write(Icc, 1, &val); + } + + // The postlinearization table + + for (i=0; i < NewLUT -> OutputChan; i++) { + + for (j=0; j < 256; j++) { + + if (NewLUT -> wFlags & LUT_HASTL2) + val = (BYTE) floor(NewLUT ->L2[i][j] / 257.0 + .5); + else + val = (BYTE) j; + + Icc ->Write(Icc, 1, &val); + } + + } + + return TRUE; +} + + + +// Set the LUT bitdepth to be saved + +void LCMSEXPORT _cmsSetLUTdepth(cmsHPROFILE hProfile, int depth) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + + switch (depth) { + + case 8: Icc ->SaveAs8Bits = TRUE; break; + case 16: Icc ->SaveAs8Bits = FALSE; break; + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "%d is an unsupported as bitdepth, use 8 or 16 only.", depth); + } +} + + +// Saves Tag directory + +static +LCMSBOOL SaveTagDirectory(LPLCMSICCPROFILE Icc) +{ + icInt32Number i; + icTag Tag; + icInt32Number Count = 0; + + // Get true count + for (i=0; i < Icc -> TagCount; i++) { + if (Icc ->TagNames[i] != 0) + Count++; + } + + Count = TransportValue32(Count); + if (!Icc ->Write(Icc, sizeof(icInt32Number) , &Count)) return FALSE; + + for (i=0; i < Icc -> TagCount; i++) { + + if (Icc ->TagNames[i] == 0) continue; + + Tag.sig = (icTagSignature)TransportValue32(Icc -> TagNames[i]); + Tag.offset = TransportValue32((icInt32Number) Icc -> TagOffsets[i]); + Tag.size = TransportValue32((icInt32Number) Icc -> TagSizes[i]); + + if (!Icc ->Write(Icc, sizeof(icTag), &Tag)) return FALSE; + } + + return TRUE; +} + + +// Dump tag contents + +static +LCMSBOOL SaveTags(LPLCMSICCPROFILE Icc, LPLCMSICCPROFILE FileOrig) +{ + + LPBYTE Data; + icInt32Number i; + size_t Begin; + size_t AlignedSpace, FillerSize; + + + for (i=0; i < Icc -> TagCount; i++) { + + if (Icc ->TagNames[i] == 0) continue; + + // Align to DWORD boundary, following new spec. + + AlignedSpace = ALIGNLONG(Icc ->UsedSpace); + FillerSize = AlignedSpace - Icc ->UsedSpace; + if (FillerSize > 0) { + + BYTE Filler[20]; + + ZeroMemory(Filler, 16); + if (!Icc ->Write(Icc, FillerSize, Filler)) return FALSE; + } + + + Icc -> TagOffsets[i] = Begin = Icc ->UsedSpace; + Data = (LPBYTE) Icc -> TagPtrs[i]; + if (!Data) { + + // Reach here if we are copying a tag from a disk-based ICC profile which has not been modified by user. + // In this case a blind copy of the block data is performed + + if (Icc -> TagOffsets[i]) { + + size_t TagSize = FileOrig -> TagSizes[i]; + size_t TagOffset = FileOrig -> TagOffsets[i]; + void* Mem; + + if (FileOrig ->Seek(FileOrig, TagOffset)) return FALSE; + + Mem = _cmsMalloc(TagSize); + + if (FileOrig ->Read(Mem, TagSize, 1, FileOrig) != 1) return FALSE; + if (!Icc ->Write(Icc, TagSize, Mem)) return FALSE; + + Icc -> TagSizes[i] = (Icc ->UsedSpace - Begin); + free(Mem); + } + + continue; + } + + + switch (Icc -> TagNames[i]) { + + case icSigProfileDescriptionTag: + case icSigDeviceMfgDescTag: + case icSigDeviceModelDescTag: + if (!SaveDescription((const char *) Data, Icc)) return FALSE; + break; + + case icSigRedColorantTag: + case icSigGreenColorantTag: + case icSigBlueColorantTag: + case icSigMediaWhitePointTag: + case icSigMediaBlackPointTag: + if (!SaveXYZNumber((LPcmsCIEXYZ) Data, Icc)) return FALSE; + break; + + + case icSigRedTRCTag: + case icSigGreenTRCTag: + case icSigBlueTRCTag: + case icSigGrayTRCTag: + if (!SaveGamma((LPGAMMATABLE) Data, Icc)) return FALSE; + break; + + case icSigCharTargetTag: + case icSigCopyrightTag: + if (!SaveText((const char *) Data, Icc)) return FALSE; + break; + + case icSigChromaticityTag: + if (!SaveChromaticities((LPcmsCIExyYTRIPLE) Data, Icc)) return FALSE; + break; + + // Save LUT + + case icSigAToB0Tag: + case icSigAToB1Tag: + case icSigAToB2Tag: + case icSigBToA0Tag: + case icSigBToA1Tag: + case icSigBToA2Tag: + case icSigGamutTag: + case icSigPreview0Tag: + case icSigPreview1Tag: + case icSigPreview2Tag: + + if (Icc ->SaveAs8Bits) { + + if (!SaveLUT8((LPLUT) Data, Icc)) return FALSE; + } + else { + + if (!SaveLUT((LPLUT) Data, Icc)) return FALSE; + } + break; + + case icSigProfileSequenceDescTag: + if (!SaveSequenceDescriptionTag((LPcmsSEQ) Data, Icc)) return FALSE; + break; + + + case icSigNamedColor2Tag: + if (!SaveNamedColorList((LPcmsNAMEDCOLORLIST) Data, Icc)) return FALSE; + break; + + + case icSigCalibrationDateTimeTag: + if (!SaveDateTimeNumber((struct tm *) Data, Icc)) return FALSE; + break; + + + case icSigColorantTableTag: + case icSigColorantTableOutTag: + if (!SaveColorantTable((LPcmsNAMEDCOLORLIST) Data, Icc)) return FALSE; + break; + + + case icSigChromaticAdaptationTag: + if (!SaveXYZArray(3, (LPcmsCIEXYZ) Data, Icc)) return FALSE; + break; + + default: + return FALSE; + } + + Icc -> TagSizes[i] = (Icc ->UsedSpace - Begin); + } + + + + return TRUE; +} + + + +// Add tags to profile structure + +LCMSBOOL LCMSEXPORT cmsAddTag(cmsHPROFILE hProfile, icTagSignature sig, const void* Tag) +{ + LCMSBOOL rc; + + switch (sig) { + + case icSigCharTargetTag: + case icSigCopyrightTag: + case icSigProfileDescriptionTag: + case icSigDeviceMfgDescTag: + case icSigDeviceModelDescTag: + rc = _cmsAddTextTag(hProfile, sig, (const char*) Tag); + break; + + case icSigRedColorantTag: + case icSigGreenColorantTag: + case icSigBlueColorantTag: + case icSigMediaWhitePointTag: + case icSigMediaBlackPointTag: + rc = _cmsAddXYZTag(hProfile, sig, (const cmsCIEXYZ*) Tag); + break; + + case icSigRedTRCTag: + case icSigGreenTRCTag: + case icSigBlueTRCTag: + case icSigGrayTRCTag: + rc = _cmsAddGammaTag(hProfile, sig, (LPGAMMATABLE) Tag); + break; + + case icSigAToB0Tag: + case icSigAToB1Tag: + case icSigAToB2Tag: + case icSigBToA0Tag: + case icSigBToA1Tag: + case icSigBToA2Tag: + case icSigGamutTag: + case icSigPreview0Tag: + case icSigPreview1Tag: + case icSigPreview2Tag: + rc = _cmsAddLUTTag(hProfile, sig, Tag); + break; + + case icSigChromaticityTag: + rc = _cmsAddChromaticityTag(hProfile, sig, (LPcmsCIExyYTRIPLE) Tag); + break; + + case icSigProfileSequenceDescTag: + rc = _cmsAddSequenceDescriptionTag(hProfile, sig, (LPcmsSEQ) Tag); + break; + + case icSigNamedColor2Tag: + rc = _cmsAddNamedColorTag(hProfile, sig, (LPcmsNAMEDCOLORLIST) Tag); + break; + + case icSigCalibrationDateTimeTag: + rc = _cmsAddDateTimeTag(hProfile, sig, (struct tm*) Tag); + break; + + case icSigColorantTableTag: + case icSigColorantTableOutTag: + rc = _cmsAddColorantTableTag(hProfile, sig, (LPcmsNAMEDCOLORLIST) Tag); + break; + + + case icSigChromaticAdaptationTag: + rc = _cmsAddChromaticAdaptationTag(hProfile, sig, (const cmsCIEXYZ*) Tag); + break; + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "cmsAddTag: Tag '%x' is unsupported", sig); + return FALSE; + } + + // Check for critical tags + + switch (sig) { + + case icSigMediaWhitePointTag: + case icSigMediaBlackPointTag: + case icSigChromaticAdaptationTag: + + ReadCriticalTags((LPLCMSICCPROFILE) hProfile); + break; + + default:; + } + + return rc; + +} + +// Low-level save to disk. It closes the profile on exit + +LCMSBOOL LCMSEXPORT _cmsSaveProfile(cmsHPROFILE hProfile, const char* FileName) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + LCMSICCPROFILE Keep; + LCMSBOOL rc; + + CopyMemory(&Keep, Icc, sizeof(LCMSICCPROFILE)); + _cmsSetSaveToDisk(Icc, NULL); + + // Pass #1 does compute offsets + + if (!SaveHeader(Icc)) return FALSE; + if (!SaveTagDirectory(Icc)) return FALSE; + if (!SaveTags(Icc, &Keep)) return FALSE; + + + _cmsSetSaveToDisk(Icc, FileName); + + + // Pass #2 does save to file + + if (!SaveHeader(Icc)) goto CleanUp; + if (!SaveTagDirectory(Icc)) goto CleanUp; + if (!SaveTags(Icc, &Keep)) goto CleanUp; + + rc = (Icc ->Close(Icc) == 0); + CopyMemory(Icc, &Keep, sizeof(LCMSICCPROFILE)); + return rc; + + + CleanUp: + + Icc ->Close(Icc); + unlink(FileName); + CopyMemory(Icc, &Keep, sizeof(LCMSICCPROFILE)); + return FALSE; +} + + +// Low-level save from open stream +LCMSBOOL LCMSEXPORT _cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, + size_t* BytesNeeded) +{ + LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile; + LCMSICCPROFILE Keep; + + + CopyMemory(&Keep, Icc, sizeof(LCMSICCPROFILE)); + + _cmsSetSaveToMemory(Icc, NULL, 0); + + // Pass #1 does compute offsets + + if (!SaveHeader(Icc)) return FALSE; + if (!SaveTagDirectory(Icc)) return FALSE; + if (!SaveTags(Icc, &Keep)) return FALSE; + + if (!MemPtr) { + + // update BytesSaved so caller knows how many bytes are needed for MemPtr + *BytesNeeded = Icc ->UsedSpace; + CopyMemory(Icc, &Keep, sizeof(LCMSICCPROFILE)); + return TRUE; + } + + if (*BytesNeeded < Icc ->UsedSpace) { + + // need at least UsedSpace in MemPtr to continue + CopyMemory(Icc, &Keep, sizeof(LCMSICCPROFILE)); + return FALSE; + } + + _cmsSetSaveToMemory(Icc, MemPtr, *BytesNeeded); + + + // Pass #2 does save to file into supplied stream + if (!SaveHeader(Icc)) goto CleanUp; + if (!SaveTagDirectory(Icc)) goto CleanUp; + if (!SaveTags(Icc, &Keep)) goto CleanUp; + + // update BytesSaved so caller knows how many bytes put into stream + *BytesNeeded = Icc ->UsedSpace; + + Icc ->Close(Icc); + CopyMemory(Icc, &Keep, sizeof(LCMSICCPROFILE)); + return TRUE; + +CleanUp: + + Icc ->Close(Icc); + CopyMemory(Icc, &Keep, sizeof(LCMSICCPROFILE)); + return FALSE; +} + diff --git a/icc2ps/cmslut.c b/icc2ps/cmslut.c new file mode 100644 index 0000000..3359f30 --- /dev/null +++ b/icc2ps/cmslut.c @@ -0,0 +1,843 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include "lcms.h" + +// Pipeline of LUT. Enclosed by {} are new revision 4.0 of ICC spec. +// +// [Mat] -> [L1] -> { [Mat3] -> [Ofs3] -> [L3] ->} [CLUT] { -> [L4] -> [Mat4] -> [Ofs4] } -> [L2] +// +// Some of these stages would be missing. This implements the totality of +// combinations of old and new LUT types as follows: +// +// Lut8 & Lut16 +// ============ +// [Mat] -> [L1] -> [CLUT] -> [L2] +// +// Mat2, Ofs2, L3, L3, Mat3, Ofs3 are missing +// +// LutAToB +// ======== +// +// [L1] -> [CLUT] -> [L4] -> [Mat4] -> [Ofs4] -> [L2] +// +// Mat, Mat3, Ofs3, L3 are missing +// L1 = A curves +// L4 = M curves +// L2 = B curves +// +// LutBToA +// ======= +// +// [L1] -> [Mat3] -> [Ofs3] -> [L3] -> [CLUT] -> [L2] +// +// Mat, L4, Mat4, Ofs4 are missing +// L1 = B Curves +// L3 = M Curves +// L2 = A curves +// +// +// V2&3 emulation +// =============== +// +// For output, Mat is multiplied by +// +// +// | 0xff00 / 0xffff 0 0 | +// | 0 0xff00 / 0xffff 0 | +// | 0 0 0xff00 / 0xffff | +// +// +// For input, an additional matrix is needed at the very last end of the chain +// +// +// | 0xffff / 0xff00 0 0 | +// | 0 0xffff / 0xff00 0 | +// | 0 0 0xffff / 0xff00 | +// +// +// Which reduces to (val * 257) >> 8 + +// A couple of macros to convert between revisions + +#define FROM_V2_TO_V4(x) (((((x)<<8)+(x))+0x80)>>8) // BY 65535 DIV 65280 ROUND +#define FROM_V4_TO_V2(x) ((((x)<<8)+0x80)/257) // BY 65280 DIV 65535 ROUND + + +// Lut Creation & Destruction + +LPLUT LCMSEXPORT cmsAllocLUT(void) +{ + LPLUT NewLUT; + + NewLUT = (LPLUT) _cmsMalloc(sizeof(LUT)); + if (NewLUT) + ZeroMemory(NewLUT, sizeof(LUT)); + + return NewLUT; +} + +void LCMSEXPORT cmsFreeLUT(LPLUT Lut) +{ + unsigned int i; + + if (!Lut) return; + + if (Lut -> T) free(Lut -> T); + + for (i=0; i < Lut -> OutputChan; i++) + { + if (Lut -> L2[i]) free(Lut -> L2[i]); + } + + for (i=0; i < Lut -> InputChan; i++) + { + + if (Lut -> L1[i]) free(Lut -> L1[i]); + } + + + if (Lut ->wFlags & LUT_HASTL3) { + + for (i=0; i < Lut -> InputChan; i++) { + + if (Lut -> L3[i]) free(Lut -> L3[i]); + } + } + + if (Lut ->wFlags & LUT_HASTL4) { + + for (i=0; i < Lut -> OutputChan; i++) { + + if (Lut -> L4[i]) free(Lut -> L4[i]); + } + } + + if (Lut ->CLut16params.p8) + free(Lut ->CLut16params.p8); + + free(Lut); +} + + +static +LPVOID DupBlockTab(LPVOID Org, size_t size) +{ + LPVOID mem = _cmsMalloc(size); + if (mem != NULL) + CopyMemory(mem, Org, size); + + return mem; +} + + +LPLUT LCMSEXPORT cmsDupLUT(LPLUT Orig) +{ + LPLUT NewLUT = cmsAllocLUT(); + unsigned int i; + + CopyMemory(NewLUT, Orig, sizeof(LUT)); + + for (i=0; i < Orig ->InputChan; i++) + NewLUT -> L1[i] = (LPWORD) DupBlockTab((LPVOID) Orig ->L1[i], + sizeof(WORD) * Orig ->In16params.nSamples); + + for (i=0; i < Orig ->OutputChan; i++) + NewLUT -> L2[i] = (LPWORD) DupBlockTab((LPVOID) Orig ->L2[i], + sizeof(WORD) * Orig ->Out16params.nSamples); + + NewLUT -> T = (LPWORD) DupBlockTab((LPVOID) Orig ->T, Orig -> Tsize); + + return NewLUT; +} + + +static +unsigned int UIpow(unsigned int a, unsigned int b) +{ + unsigned int rv = 1; + + for (; b > 0; b--) + rv *= a; + + return rv; +} + + +LCMSBOOL _cmsValidateLUT(LPLUT NewLUT) +{ + unsigned int calc = 1; + unsigned int oldCalc; + unsigned int power = NewLUT -> InputChan; + + if (NewLUT -> cLutPoints > 100) return FALSE; + if (NewLUT -> InputChan > MAXCHANNELS) return FALSE; + if (NewLUT -> OutputChan > MAXCHANNELS) return FALSE; + + if (NewLUT -> cLutPoints == 0) return TRUE; + + for (; power > 0; power--) { + + oldCalc = calc; + calc *= NewLUT -> cLutPoints; + + if (calc / NewLUT -> cLutPoints != oldCalc) { + return FALSE; + } + } + + oldCalc = calc; + calc *= NewLUT -> OutputChan; + if (NewLUT -> OutputChan && calc / NewLUT -> OutputChan != oldCalc) { + return FALSE; + } + + return TRUE; +} + +LPLUT LCMSEXPORT cmsAlloc3DGrid(LPLUT NewLUT, int clutPoints, int inputChan, int outputChan) +{ + DWORD nTabSize; + + NewLUT -> wFlags |= LUT_HAS3DGRID; + NewLUT -> cLutPoints = clutPoints; + NewLUT -> InputChan = inputChan; + NewLUT -> OutputChan = outputChan; + + if (!_cmsValidateLUT(NewLUT)) { + return NULL; + } + + nTabSize = NewLUT -> OutputChan * UIpow(NewLUT->cLutPoints, + NewLUT->InputChan); + + NewLUT -> T = (LPWORD) _cmsCalloc(sizeof(WORD), nTabSize); + nTabSize *= sizeof(WORD); + if (NewLUT -> T == NULL) return NULL; + + ZeroMemory(NewLUT -> T, nTabSize); + NewLUT ->Tsize = nTabSize; + + + cmsCalcCLUT16Params(NewLUT -> cLutPoints, NewLUT -> InputChan, + NewLUT -> OutputChan, + &NewLUT -> CLut16params); + + return NewLUT; +} + + + + +LPLUT LCMSEXPORT cmsAllocLinearTable(LPLUT NewLUT, LPGAMMATABLE Tables[], int nTable) +{ + unsigned int i; + LPWORD PtrW; + + switch (nTable) { + + + case 1: NewLUT -> wFlags |= LUT_HASTL1; + cmsCalcL16Params(Tables[0] -> nEntries, &NewLUT -> In16params); + NewLUT -> InputEntries = Tables[0] -> nEntries; + + for (i=0; i < NewLUT -> InputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewLUT -> InputEntries); + if (PtrW == NULL) return NULL; + + NewLUT -> L1[i] = PtrW; + CopyMemory(PtrW, Tables[i]->GammaTable, sizeof(WORD) * NewLUT -> InputEntries); + CopyMemory(&NewLUT -> LCurvesSeed[0][i], &Tables[i] -> Seed, sizeof(LCMSGAMMAPARAMS)); + } + + + break; + + case 2: NewLUT -> wFlags |= LUT_HASTL2; + cmsCalcL16Params(Tables[0] -> nEntries, &NewLUT -> Out16params); + NewLUT -> OutputEntries = Tables[0] -> nEntries; + for (i=0; i < NewLUT -> OutputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewLUT -> OutputEntries); + if (PtrW == NULL) return NULL; + + NewLUT -> L2[i] = PtrW; + CopyMemory(PtrW, Tables[i]->GammaTable, sizeof(WORD) * NewLUT -> OutputEntries); + CopyMemory(&NewLUT -> LCurvesSeed[1][i], &Tables[i] -> Seed, sizeof(LCMSGAMMAPARAMS)); + } + break; + + + // 3 & 4 according ICC 4.0 spec + + case 3: + NewLUT -> wFlags |= LUT_HASTL3; + cmsCalcL16Params(Tables[0] -> nEntries, &NewLUT -> L3params); + NewLUT -> L3Entries = Tables[0] -> nEntries; + + for (i=0; i < NewLUT -> InputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewLUT -> L3Entries); + if (PtrW == NULL) return NULL; + + NewLUT -> L3[i] = PtrW; + CopyMemory(PtrW, Tables[i]->GammaTable, sizeof(WORD) * NewLUT -> L3Entries); + CopyMemory(&NewLUT -> LCurvesSeed[2][i], &Tables[i] -> Seed, sizeof(LCMSGAMMAPARAMS)); + } + break; + + case 4: + NewLUT -> wFlags |= LUT_HASTL4; + cmsCalcL16Params(Tables[0] -> nEntries, &NewLUT -> L4params); + NewLUT -> L4Entries = Tables[0] -> nEntries; + for (i=0; i < NewLUT -> OutputChan; i++) { + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewLUT -> L4Entries); + if (PtrW == NULL) return NULL; + + NewLUT -> L4[i] = PtrW; + CopyMemory(PtrW, Tables[i]->GammaTable, sizeof(WORD) * NewLUT -> L4Entries); + CopyMemory(&NewLUT -> LCurvesSeed[3][i], &Tables[i] -> Seed, sizeof(LCMSGAMMAPARAMS)); + } + break; + + + default:; + } + + return NewLUT; +} + + +// Set the LUT matrix + +LPLUT LCMSEXPORT cmsSetMatrixLUT(LPLUT Lut, LPMAT3 M) +{ + MAT3toFix(&Lut ->Matrix, M); + + if (!MAT3isIdentity(&Lut->Matrix, 0.0001)) + Lut ->wFlags |= LUT_HASMATRIX; + + return Lut; +} + + +// Set matrix & offset, v4 compatible + +LPLUT LCMSEXPORT cmsSetMatrixLUT4(LPLUT Lut, LPMAT3 M, LPVEC3 off, DWORD dwFlags) +{ + WMAT3 WMat; + WVEC3 Woff; + VEC3 Zero = {{0, 0, 0}}; + + MAT3toFix(&WMat, M); + + if (off == NULL) + off = &Zero; + + VEC3toFix(&Woff, off); + + // Nop if identity + if (MAT3isIdentity(&WMat, 0.0001) && + (Woff.n[VX] == 0 && Woff.n[VY] == 0 && Woff.n[VZ] == 0)) + return Lut; + + switch (dwFlags) { + + case LUT_HASMATRIX: + Lut ->Matrix = WMat; + Lut ->wFlags |= LUT_HASMATRIX; + break; + + case LUT_HASMATRIX3: + Lut ->Mat3 = WMat; + Lut ->Ofs3 = Woff; + Lut ->wFlags |= LUT_HASMATRIX3; + break; + + case LUT_HASMATRIX4: + Lut ->Mat4 = WMat; + Lut ->Ofs4 = Woff; + Lut ->wFlags |= LUT_HASMATRIX4; + break; + + + default:; + } + + return Lut; +} + + + +// The full evaluator + +void LCMSEXPORT cmsEvalLUT(LPLUT Lut, WORD In[], WORD Out[]) +{ + register unsigned int i; + WORD StageABC[MAXCHANNELS], StageLMN[MAXCHANNELS]; + + + // Try to speedup things on plain devicelinks + if (Lut ->wFlags == LUT_HAS3DGRID) { + + Lut ->CLut16params.Interp3D(In, Out, Lut -> T, &Lut -> CLut16params); + return; + } + + + // Nope, evaluate whole LUT + + for (i=0; i < Lut -> InputChan; i++) + StageABC[i] = In[i]; + + + if (Lut ->wFlags & LUT_V4_OUTPUT_EMULATE_V2) { + + // Clamp Lab to avoid overflow + if (StageABC[0] > 0xFF00) + StageABC[0] = 0xFF00; + + StageABC[0] = (WORD) FROM_V2_TO_V4(StageABC[0]); + StageABC[1] = (WORD) FROM_V2_TO_V4(StageABC[1]); + StageABC[2] = (WORD) FROM_V2_TO_V4(StageABC[2]); + + } + + if (Lut ->wFlags & LUT_V2_OUTPUT_EMULATE_V4) { + + StageABC[0] = (WORD) FROM_V4_TO_V2(StageABC[0]); + StageABC[1] = (WORD) FROM_V4_TO_V2(StageABC[1]); + StageABC[2] = (WORD) FROM_V4_TO_V2(StageABC[2]); + } + + + // Matrix handling. + + if (Lut -> wFlags & LUT_HASMATRIX) { + + WVEC3 InVect, OutVect; + + // In LUT8 here comes the special gray axis fixup + + if (Lut ->FixGrayAxes) { + + StageABC[1] = _cmsClampWord(StageABC[1] - 128); + StageABC[2] = _cmsClampWord(StageABC[2] - 128); + } + + // Matrix + + InVect.n[VX] = ToFixedDomain(StageABC[0]); + InVect.n[VY] = ToFixedDomain(StageABC[1]); + InVect.n[VZ] = ToFixedDomain(StageABC[2]); + + + MAT3evalW(&OutVect, &Lut -> Matrix, &InVect); + + // PCS in 1Fixed15 format, adjusting + + StageABC[0] = _cmsClampWord(FromFixedDomain(OutVect.n[VX])); + StageABC[1] = _cmsClampWord(FromFixedDomain(OutVect.n[VY])); + StageABC[2] = _cmsClampWord(FromFixedDomain(OutVect.n[VZ])); + } + + + // First linearization + + if (Lut -> wFlags & LUT_HASTL1) + { + for (i=0; i < Lut -> InputChan; i++) + StageABC[i] = cmsLinearInterpLUT16(StageABC[i], + Lut -> L1[i], + &Lut -> In16params); + } + + + // Mat3, Ofs3, L3 processing + + if (Lut ->wFlags & LUT_HASMATRIX3) { + + WVEC3 InVect, OutVect; + + InVect.n[VX] = ToFixedDomain(StageABC[0]); + InVect.n[VY] = ToFixedDomain(StageABC[1]); + InVect.n[VZ] = ToFixedDomain(StageABC[2]); + + MAT3evalW(&OutVect, &Lut -> Mat3, &InVect); + + OutVect.n[VX] += Lut ->Ofs3.n[VX]; + OutVect.n[VY] += Lut ->Ofs3.n[VY]; + OutVect.n[VZ] += Lut ->Ofs3.n[VZ]; + + StageABC[0] = _cmsClampWord(FromFixedDomain(OutVect.n[VX])); + StageABC[1] = _cmsClampWord(FromFixedDomain(OutVect.n[VY])); + StageABC[2] = _cmsClampWord(FromFixedDomain(OutVect.n[VZ])); + + } + + if (Lut ->wFlags & LUT_HASTL3) { + + for (i=0; i < Lut -> InputChan; i++) + StageABC[i] = cmsLinearInterpLUT16(StageABC[i], + Lut -> L3[i], + &Lut -> L3params); + + } + + + + if (Lut -> wFlags & LUT_HAS3DGRID) { + + Lut ->CLut16params.Interp3D(StageABC, StageLMN, Lut -> T, &Lut -> CLut16params); + + } + else + { + + for (i=0; i < Lut -> InputChan; i++) + StageLMN[i] = StageABC[i]; + + } + + + // Mat4, Ofs4, L4 processing + + if (Lut ->wFlags & LUT_HASTL4) { + + for (i=0; i < Lut -> OutputChan; i++) + StageLMN[i] = cmsLinearInterpLUT16(StageLMN[i], + Lut -> L4[i], + &Lut -> L4params); + } + + if (Lut ->wFlags & LUT_HASMATRIX4) { + + WVEC3 InVect, OutVect; + + InVect.n[VX] = ToFixedDomain(StageLMN[0]); + InVect.n[VY] = ToFixedDomain(StageLMN[1]); + InVect.n[VZ] = ToFixedDomain(StageLMN[2]); + + MAT3evalW(&OutVect, &Lut -> Mat4, &InVect); + + OutVect.n[VX] += Lut ->Ofs4.n[VX]; + OutVect.n[VY] += Lut ->Ofs4.n[VY]; + OutVect.n[VZ] += Lut ->Ofs4.n[VZ]; + + StageLMN[0] = _cmsClampWord(FromFixedDomain(OutVect.n[VX])); + StageLMN[1] = _cmsClampWord(FromFixedDomain(OutVect.n[VY])); + StageLMN[2] = _cmsClampWord(FromFixedDomain(OutVect.n[VZ])); + + } + + // Last linearitzation + + if (Lut -> wFlags & LUT_HASTL2) + { + for (i=0; i < Lut -> OutputChan; i++) + Out[i] = cmsLinearInterpLUT16(StageLMN[i], + Lut -> L2[i], + &Lut -> Out16params); + } + else + { + for (i=0; i < Lut -> OutputChan; i++) + Out[i] = StageLMN[i]; + } + + + + if (Lut ->wFlags & LUT_V4_INPUT_EMULATE_V2) { + + Out[0] = (WORD) FROM_V4_TO_V2(Out[0]); + Out[1] = (WORD) FROM_V4_TO_V2(Out[1]); + Out[2] = (WORD) FROM_V4_TO_V2(Out[2]); + + } + + if (Lut ->wFlags & LUT_V2_INPUT_EMULATE_V4) { + + Out[0] = (WORD) FROM_V2_TO_V4(Out[0]); + Out[1] = (WORD) FROM_V2_TO_V4(Out[1]); + Out[2] = (WORD) FROM_V2_TO_V4(Out[2]); + } +} + + +// Precomputes tables for 8-bit on input devicelink. +// +LPLUT _cmsBlessLUT8(LPLUT Lut) +{ + int i, j; + WORD StageABC[3]; + Fixed32 v1, v2, v3; + LPL8PARAMS p8; + LPL16PARAMS p = &Lut ->CLut16params; + + + p8 = (LPL8PARAMS) _cmsMalloc(sizeof(L8PARAMS)); + if (p8 == NULL) return NULL; + + // values comes * 257, so we can safely take first byte (x << 8 + x) + // if there are prelinearization, is already smelted in tables + + for (i=0; i < 256; i++) { + + StageABC[0] = StageABC[1] = StageABC[2] = RGB_8_TO_16(i); + + if (Lut ->wFlags & LUT_HASTL1) { + + for (j=0; j < 3; j++) + StageABC[j] = cmsLinearInterpLUT16(StageABC[j], + Lut -> L1[j], + &Lut -> In16params); + Lut ->wFlags &= ~LUT_HASTL1; + } + + + v1 = ToFixedDomain(StageABC[0] * p -> Domain); + v2 = ToFixedDomain(StageABC[1] * p -> Domain); + v3 = ToFixedDomain(StageABC[2] * p -> Domain); + + p8 ->X0[i] = p->opta3 * FIXED_TO_INT(v1); + p8 ->Y0[i] = p->opta2 * FIXED_TO_INT(v2); + p8 ->Z0[i] = p->opta1 * FIXED_TO_INT(v3); + + p8 ->rx[i] = (WORD) FIXED_REST_TO_INT(v1); + p8 ->ry[i] = (WORD) FIXED_REST_TO_INT(v2); + p8 ->rz[i] = (WORD) FIXED_REST_TO_INT(v3); + + } + + Lut -> CLut16params.p8 = p8; + Lut -> CLut16params.Interp3D = cmsTetrahedralInterp8; + + return Lut; + +} + + + + +// ----------------------------------------------------------- Reverse interpolation + + +// Here's how it goes. The derivative Df(x) of the function f is the linear +// transformation that best approximates f near the point x. It can be represented +// by a matrix A whose entries are the partial derivatives of the components of f +// with respect to all the coordinates. This is know as the Jacobian +// +// The best linear approximation to f is given by the matrix equation: +// +// y-y0 = A (x-x0) +// +// So, if x0 is a good "guess" for the zero of f, then solving for the zero of this +// linear approximation will give a "better guess" for the zero of f. Thus let y=0, +// and since y0=f(x0) one can solve the above equation for x. This leads to the +// Newton's method formula: +// +// xn+1 = xn - A-1 f(xn) +// +// where xn+1 denotes the (n+1)-st guess, obtained from the n-th guess xn in the +// fashion described above. Iterating this will give better and better approximations +// if you have a "good enough" initial guess. + + +#define JACOBIAN_EPSILON 0.001 +#define INVERSION_MAX_ITERATIONS 30 + + + +// Increment with reflexion on boundary + +static +void IncDelta(double *Val) +{ + if (*Val < (1.0 - JACOBIAN_EPSILON)) + + *Val += JACOBIAN_EPSILON; + + else + *Val -= JACOBIAN_EPSILON; + +} + + + +static +void ToEncoded(WORD Encoded[3], LPVEC3 Float) +{ + Encoded[0] = (WORD) floor(Float->n[0] * 65535.0 + 0.5); + Encoded[1] = (WORD) floor(Float->n[1] * 65535.0 + 0.5); + Encoded[2] = (WORD) floor(Float->n[2] * 65535.0 + 0.5); +} + +static +void FromEncoded(LPVEC3 Float, WORD Encoded[3]) +{ + Float->n[0] = Encoded[0] / 65535.0; + Float->n[1] = Encoded[1] / 65535.0; + Float->n[2] = Encoded[2] / 65535.0; +} + +// Evaluates the CLUT part of a LUT (4 -> 3 only) +static +void EvalLUTdoubleKLab(LPLUT Lut, const VEC3* In, WORD FixedK, LPcmsCIELab Out) +{ + WORD wIn[4], wOut[3]; + + wIn[0] = (WORD) floor(In ->n[0] * 65535.0 + 0.5); + wIn[1] = (WORD) floor(In ->n[1] * 65535.0 + 0.5); + wIn[2] = (WORD) floor(In ->n[2] * 65535.0 + 0.5); + wIn[3] = FixedK; + + cmsEvalLUT(Lut, wIn, wOut); + cmsLabEncoded2Float(Out, wOut); +} + +// Builds a Jacobian CMY->Lab + +static +void ComputeJacobianLab(LPLUT Lut, LPMAT3 Jacobian, const VEC3* Colorant, WORD K) +{ + VEC3 ColorantD; + cmsCIELab Lab, LabD; + int j; + + EvalLUTdoubleKLab(Lut, Colorant, K, &Lab); + + + for (j = 0; j < 3; j++) { + + ColorantD.n[0] = Colorant ->n[0]; + ColorantD.n[1] = Colorant ->n[1]; + ColorantD.n[2] = Colorant ->n[2]; + + IncDelta(&ColorantD.n[j]); + + EvalLUTdoubleKLab(Lut, &ColorantD, K, &LabD); + + Jacobian->v[0].n[j] = ((LabD.L - Lab.L) / JACOBIAN_EPSILON); + Jacobian->v[1].n[j] = ((LabD.a - Lab.a) / JACOBIAN_EPSILON); + Jacobian->v[2].n[j] = ((LabD.b - Lab.b) / JACOBIAN_EPSILON); + + } +} + + +// Evaluate a LUT in reverse direction. It only searches on 3->3 LUT, but It +// can be used on CMYK -> Lab LUT to obtain black preservation. +// Target holds LabK in this case + +// x1 <- x - [J(x)]^-1 * f(x) + + +LCMSAPI double LCMSEXPORT cmsEvalLUTreverse(LPLUT Lut, WORD Target[], WORD Result[], LPWORD Hint) +{ + int i; + double error, LastError = 1E20; + cmsCIELab fx, Goal; + VEC3 tmp, tmp2, x; + MAT3 Jacobian; + WORD FixedK; + WORD LastResult[4]; + + + // This is our Lab goal + cmsLabEncoded2Float(&Goal, Target); + + // Special case for CMYK->Lab + + if (Lut ->InputChan == 4) + FixedK = Target[3]; + else + FixedK = 0; + + + // Take the hint as starting point if specified + + if (Hint == NULL) { + + // Begin at any point, we choose 1/3 of neutral CMY gray + + x.n[0] = x.n[1] = x.n[2] = 0.3; + + } + else { + + FromEncoded(&x, Hint); + } + + + // Iterate + + for (i = 0; i < INVERSION_MAX_ITERATIONS; i++) { + + // Get beginning fx + EvalLUTdoubleKLab(Lut, &x, FixedK, &fx); + + // Compute error + error = cmsDeltaE(&fx, &Goal); + + // If not convergent, return last safe value + if (error >= LastError) + break; + + // Keep latest values + LastError = error; + + ToEncoded(LastResult, &x); + LastResult[3] = FixedK; + + // Obtain slope + ComputeJacobianLab(Lut, &Jacobian, &x, FixedK); + + // Solve system + tmp2.n[0] = fx.L - Goal.L; + tmp2.n[1] = fx.a - Goal.a; + tmp2.n[2] = fx.b - Goal.b; + + if (!MAT3solve(&tmp, &Jacobian, &tmp2)) + break; + + // Move our guess + x.n[0] -= tmp.n[0]; + x.n[1] -= tmp.n[1]; + x.n[2] -= tmp.n[2]; + + // Some clipping.... + VEC3saturate(&x); + } + + Result[0] = LastResult[0]; + Result[1] = LastResult[1]; + Result[2] = LastResult[2]; + Result[3] = LastResult[3]; + + return LastError; + +} + + + diff --git a/icc2ps/cmsmatsh.c b/icc2ps/cmsmatsh.c new file mode 100644 index 0000000..634c9f3 --- /dev/null +++ b/icc2ps/cmsmatsh.c @@ -0,0 +1,382 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + + +// Shaper/Matrix handling +// This routines handles the matrix-shaper method. A note about domain +// is here required. If the shaper-matrix is invoked on INPUT profiles, +// after the shaper process, we have a value between 0 and 0xFFFF. Thus, +// for proper matrix handling, we must convert it to 15fix16, so +// ToFixedDomain might be called. But cmsLinearInterpFixed() returns +// data yet in fixed point, so no additional process is required. +// Then, we obtain data on 15.16, so we need to shift >> by 1 to +// obtain 1.15 PCS format. + +// On OUTPUT profiles, things are inverse, we must first expand 1 bit +// by shifting left, and then convert result between 0 and 1.000 to +// RGB, so FromFixedDomain() must be called before pass values to +// shaper. Trickly, there is a situation where this shifts works +// little different. Sometimes, lcms smelts input/output +// matrices into a single, one shaper, process. In such cases, since +// input is encoded from 0 to 0xffff, we must first use the shaper and +// then the matrix, an additional FromFixedDomain() must be used to +// accomodate output values. + +// For a sake of simplicity, I will handle this three behaviours +// with different routines, so the flags MATSHAPER_INPUT and MATSHAPER_OUTPUT +// can be conbined to signal smelted matrix-shapers + + + +static +int ComputeTables(LPGAMMATABLE Table[3], LPWORD Out[3], LPL16PARAMS p16) +{ + int i, AllLinear; + + cmsCalcL16Params(Table[0] -> nEntries, p16); + + AllLinear = 0; + for (i=0; i < 3; i++) + { + LPWORD PtrW; + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * p16 -> nSamples); + + if (PtrW == NULL) return -1; // Signal error + + CopyMemory(PtrW, Table[i] -> GammaTable, sizeof(WORD) * Table[i] -> nEntries); + + Out[i] = PtrW; // Set table pointer + + // Linear after all? + + AllLinear += cmsIsLinear(PtrW, p16 -> nSamples); + } + + // If is all linear, then supress table interpolation (this + // will speed greately some trivial operations. + // Return 1 if present, 0 if all linear + + + if (AllLinear != 3) return 1; + + return 0; + +} + + +LPMATSHAPER cmsAllocMatShaper2(LPMAT3 Matrix, LPGAMMATABLE In[], LPGAMMATABLE Out[], DWORD Behaviour) +{ + LPMATSHAPER NewMatShaper; + int rc; + + NewMatShaper = (LPMATSHAPER) _cmsMalloc(sizeof(MATSHAPER)); + if (NewMatShaper) + ZeroMemory(NewMatShaper, sizeof(MATSHAPER)); + + NewMatShaper->dwFlags = Behaviour & (MATSHAPER_ALLSMELTED); + + // Fill matrix part + + MAT3toFix(&NewMatShaper -> Matrix, Matrix); + + // Reality check + + if (!MAT3isIdentity(&NewMatShaper -> Matrix, 0.00001)) + NewMatShaper -> dwFlags |= MATSHAPER_HASMATRIX; + + // Now, on the table characteristics + + if (Out) { + + rc = ComputeTables(Out, NewMatShaper ->L, &NewMatShaper ->p16); + if (rc < 0) { + cmsFreeMatShaper(NewMatShaper); + return NULL; + } + if (rc == 1) NewMatShaper -> dwFlags |= MATSHAPER_HASSHAPER; + } + + + if (In) { + + rc = ComputeTables(In, NewMatShaper ->L2, &NewMatShaper ->p2_16); + if (rc < 0) { + cmsFreeMatShaper(NewMatShaper); + return NULL; + } + if (rc == 1) NewMatShaper -> dwFlags |= MATSHAPER_HASINPSHAPER; + } + + + return NewMatShaper; + +} + + + +// Creation & Destruction + +LPMATSHAPER cmsAllocMatShaper(LPMAT3 Matrix, LPGAMMATABLE Tables[], DWORD Behaviour) +{ + LPMATSHAPER NewMatShaper; + int i, AllLinear; + + if (Matrix == NULL) return NULL; + for (i=0; i < 3; i++) { + + if (Tables[i] == NULL) return NULL; + } + + NewMatShaper = (LPMATSHAPER) _cmsMalloc(sizeof(MATSHAPER)); + if (NewMatShaper) + ZeroMemory(NewMatShaper, sizeof(MATSHAPER)); + + NewMatShaper->dwFlags = Behaviour & (MATSHAPER_ALLSMELTED); + + // Fill matrix part + + MAT3toFix(&NewMatShaper -> Matrix, Matrix); + + // Reality check + + if (!MAT3isIdentity(&NewMatShaper -> Matrix, 0.00001)) + NewMatShaper -> dwFlags |= MATSHAPER_HASMATRIX; + + // Now, on the table characteristics + cmsCalcL16Params(Tables[0] -> nEntries, &NewMatShaper -> p16); + + // Copy tables + + AllLinear = 0; + for (i=0; i < 3; i++) { + + LPWORD PtrW; + + PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewMatShaper -> p16.nSamples); + + if (PtrW == NULL) { + cmsFreeMatShaper(NewMatShaper); + return NULL; + } + + CopyMemory(PtrW, Tables[i] -> GammaTable, + sizeof(WORD) * Tables[i] -> nEntries); + + NewMatShaper -> L[i] = PtrW; // Set table pointer + + // Linear after all? + + AllLinear += cmsIsLinear(PtrW, NewMatShaper -> p16.nSamples); + } + + // If is all linear, then supress table interpolation (this + // will speed greately some trivial operations + + if (AllLinear != 3) + NewMatShaper -> dwFlags |= MATSHAPER_HASSHAPER; + + return NewMatShaper; +} + + + +// Free associated memory + +void cmsFreeMatShaper(LPMATSHAPER MatShaper) +{ + int i; + + if (!MatShaper) return; + + for (i=0; i < 3; i++) + { + if (MatShaper -> L[i]) _cmsFree(MatShaper ->L[i]); + if (MatShaper -> L2[i]) _cmsFree(MatShaper ->L2[i]); + } + + _cmsFree(MatShaper); +} + + +// All smelted must postpose gamma to last stage. + +static +void AllSmeltedBehaviour(LPMATSHAPER MatShaper, WORD In[], WORD Out[]) +{ + + WORD tmp[3]; + WVEC3 InVect, OutVect; + + if (MatShaper -> dwFlags & MATSHAPER_HASINPSHAPER) + { + InVect.n[VX] = cmsLinearInterpFixed(In[0], MatShaper -> L2[0], &MatShaper -> p2_16); + InVect.n[VY] = cmsLinearInterpFixed(In[1], MatShaper -> L2[1], &MatShaper -> p2_16); + InVect.n[VZ] = cmsLinearInterpFixed(In[2], MatShaper -> L2[2], &MatShaper -> p2_16); + } + else + { + InVect.n[VX] = ToFixedDomain(In[0]); + InVect.n[VY] = ToFixedDomain(In[1]); + InVect.n[VZ] = ToFixedDomain(In[2]); + } + + + if (MatShaper -> dwFlags & MATSHAPER_HASMATRIX) + { + + MAT3evalW(&OutVect, &MatShaper -> Matrix, &InVect); + } + else { + + OutVect.n[VX] = InVect.n[VX]; + OutVect.n[VY] = InVect.n[VY]; + OutVect.n[VZ] = InVect.n[VZ]; + } + + + tmp[0] = _cmsClampWord(FromFixedDomain(OutVect.n[VX])); + tmp[1] = _cmsClampWord(FromFixedDomain(OutVect.n[VY])); + tmp[2] = _cmsClampWord(FromFixedDomain(OutVect.n[VZ])); + + + + if (MatShaper -> dwFlags & MATSHAPER_HASSHAPER) + { + Out[0] = cmsLinearInterpLUT16(tmp[0], MatShaper -> L[0], &MatShaper -> p16); + Out[1] = cmsLinearInterpLUT16(tmp[1], MatShaper -> L[1], &MatShaper -> p16); + Out[2] = cmsLinearInterpLUT16(tmp[2], MatShaper -> L[2], &MatShaper -> p16); + } + else + { + Out[0] = tmp[0]; + Out[1] = tmp[1]; + Out[2] = tmp[2]; + } + +} + + +static +void InputBehaviour(LPMATSHAPER MatShaper, WORD In[], WORD Out[]) +{ + WVEC3 InVect, OutVect; + + + if (MatShaper -> dwFlags & MATSHAPER_HASSHAPER) + { + InVect.n[VX] = cmsLinearInterpFixed(In[0], MatShaper -> L[0], &MatShaper -> p16); + InVect.n[VY] = cmsLinearInterpFixed(In[1], MatShaper -> L[1], &MatShaper -> p16); + InVect.n[VZ] = cmsLinearInterpFixed(In[2], MatShaper -> L[2], &MatShaper -> p16); + } + else + { + InVect.n[VX] = ToFixedDomain(In[0]); + InVect.n[VY] = ToFixedDomain(In[1]); + InVect.n[VZ] = ToFixedDomain(In[2]); + } + + if (MatShaper -> dwFlags & MATSHAPER_HASMATRIX) + { + MAT3evalW(&OutVect, &MatShaper -> Matrix, &InVect); + } + else + { + OutVect = InVect; + } + + // PCS in 1Fixed15 format, adjusting + + Out[0] = _cmsClampWord((OutVect.n[VX]) >> 1); + Out[1] = _cmsClampWord((OutVect.n[VY]) >> 1); + Out[2] = _cmsClampWord((OutVect.n[VZ]) >> 1); + +} + + +static +void OutputBehaviour(LPMATSHAPER MatShaper, WORD In[], WORD Out[]) +{ + WVEC3 InVect, OutVect; + int i; + + // We need to convert from XYZ to RGB, here we must + // shift << 1 to pass between 1.15 to 15.16 formats + + InVect.n[VX] = (Fixed32) In[0] << 1; + InVect.n[VY] = (Fixed32) In[1] << 1; + InVect.n[VZ] = (Fixed32) In[2] << 1; + + if (MatShaper -> dwFlags & MATSHAPER_HASMATRIX) + { + MAT3evalW(&OutVect, &MatShaper -> Matrix, &InVect); + } + else + { + OutVect = InVect; + } + + + if (MatShaper -> dwFlags & MATSHAPER_HASSHAPER) + { + for (i=0; i < 3; i++) + { + + Out[i] = cmsLinearInterpLUT16( + _cmsClampWord(FromFixedDomain(OutVect.n[i])), + MatShaper -> L[i], + &MatShaper ->p16); + } + } + else + { + // Result from fixed domain to RGB + + Out[0] = _cmsClampWord(FromFixedDomain(OutVect.n[VX])); + Out[1] = _cmsClampWord(FromFixedDomain(OutVect.n[VY])); + Out[2] = _cmsClampWord(FromFixedDomain(OutVect.n[VZ])); + } + +} + + +// Master on evaluating shapers, 3 different behaviours + +void cmsEvalMatShaper(LPMATSHAPER MatShaper, WORD In[], WORD Out[]) +{ + + if ((MatShaper -> dwFlags & MATSHAPER_ALLSMELTED) == MATSHAPER_ALLSMELTED) + { + AllSmeltedBehaviour(MatShaper, In, Out); + return; + } + if (MatShaper -> dwFlags & MATSHAPER_INPUT) + { + InputBehaviour(MatShaper, In, Out); + return; + } + + OutputBehaviour(MatShaper, In, Out); +} diff --git a/icc2ps/cmsmtrx.c b/icc2ps/cmsmtrx.c new file mode 100644 index 0000000..4b2ffc9 --- /dev/null +++ b/icc2ps/cmsmtrx.c @@ -0,0 +1,816 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// Vector & Matrix stuff + +#include "lcms.h" + + +void cdecl VEC3init(LPVEC3 r, double x, double y, double z); +void cdecl VEC3initF(LPWVEC3 r, double x, double y, double z); +void cdecl VEC3toFix(LPWVEC3 r, LPVEC3 v); +void cdecl VEC3scaleFix(LPWORD r, LPWVEC3 Scale); +void cdecl VEC3swap(LPVEC3 a, LPVEC3 b); +void cdecl VEC3divK(LPVEC3 r, LPVEC3 v, double d); +void cdecl VEC3perK(LPVEC3 r, LPVEC3 v, double d); +void cdecl VEC3perComp(LPVEC3 r, LPVEC3 a, LPVEC3 b); +void cdecl VEC3minus(LPVEC3 r, LPVEC3 a, LPVEC3 b); +void cdecl VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d); +void cdecl VEC3cross(LPVEC3 r, LPVEC3 u, LPVEC3 v); +void cdecl VEC3saturate(LPVEC3 v); + +double cdecl VEC3length(LPVEC3 a); +double cdecl VEC3distance(LPVEC3 a, LPVEC3 b); + + +void cdecl MAT3identity(LPMAT3 a); +void cdecl MAT3per(LPMAT3 r, LPMAT3 a, LPMAT3 b); +int cdecl MAT3inverse(LPMAT3 a, LPMAT3 b); +LCMSBOOL cdecl MAT3solve(LPVEC3 x, LPMAT3 a, LPVEC3 b); +double cdecl MAT3det(LPMAT3 m); +void cdecl MAT3eval(LPVEC3 r, LPMAT3 a, LPVEC3 v); +void cdecl MAT3toFix(LPWMAT3 r, LPMAT3 v); +void cdecl MAT3evalW(LPWVEC3 r, LPWMAT3 a, LPWVEC3 v); +void cdecl MAT3perK(LPMAT3 r, LPMAT3 v, double d); +void cdecl MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d); + +// --------------------- Implementation ---------------------------- + +#define DSWAP(x, y) {double tmp = (x); (x)=(y); (y)=tmp;} + + + +#ifdef USE_ASSEMBLER + + +#ifdef _MSC_VER +#pragma warning(disable : 4033) +#pragma warning(disable : 4035) +#endif + + + +Fixed32 FixedMul(Fixed32 a, Fixed32 b) +{ + ASM { + + mov eax, ss:a + mov edx, ss:b + imul edx + add eax, 0x8000 + adc edx, 0 + shrd eax, edx, 16 + + } + + RET(_EAX); +} + + + + +Fixed32 FixedSquare(Fixed32 a) +{ + ASM { + pushf + push edx + mov eax, ss:a + imul eax + add eax, 0x8000 + adc edx, 0 + shrd eax, edx, 16 + sar eax, 16 + pop edx + popf + } + + RET(_EAX); +} + + + + +// Linear intERPolation +// a * (h - l) >> 16 + l + +Fixed32 FixedLERP(Fixed32 a, Fixed32 l, Fixed32 h) +{ + ASM { + mov eax, dword ptr ss:h + mov edx, dword ptr ss:l + push edx + mov ecx, dword ptr ss:a + sub eax, edx + imul ecx + add eax, 0x8000 + adc edx, 0 + shrd eax, edx, 16 + pop edx + add eax, edx + } + + RET(_EAX); +} + + +// a as word is scaled by s as float + +WORD FixedScale(WORD a, Fixed32 s) +{ + ASM { + + xor eax,eax + mov ax, ss:a // This is faster that movzx eax, ss:a + sal eax, 16 + mov edx, ss:s + mul edx + add eax, 0x8000 + adc edx, 0 + mov eax, edx + } + + RET(_EAX); +} + +#ifdef _MSC_VER +#pragma warning(default : 4033) +#pragma warning(default : 4035) +#endif + +#else + + +// These are floating point versions for compilers that doesn't +// support asm at all. Use with care, since this will slow down +// all operations + + +Fixed32 FixedMul(Fixed32 a, Fixed32 b) +{ +#ifdef USE_INT64 + LCMSULONGLONG l = (LCMSULONGLONG) (LCMSSLONGLONG) a * (LCMSULONGLONG) (LCMSSLONGLONG) b + (LCMSULONGLONG) 0x8000; + l >>= 16; + return (Fixed32) l; +#else + return DOUBLE_TO_FIXED(FIXED_TO_DOUBLE(a) * FIXED_TO_DOUBLE(b)); +#endif +} + +Fixed32 FixedSquare(Fixed32 a) +{ + return FixedMul(a, a); +} + + +Fixed32 FixedLERP(Fixed32 a, Fixed32 l, Fixed32 h) +{ +#ifdef USE_INT64 + + LCMSULONGLONG dif = (LCMSULONGLONG) (h - l) * a + 0x8000; + dif = (dif >> 16) + l; + return (Fixed32) (dif); +#else + double dif = h - l; + + dif *= a; + dif /= 65536.0; + dif += l; + + return (Fixed32) (dif + 0.5); +#endif + +} + + +WORD FixedScale(WORD a, Fixed32 s) +{ + return (WORD) (a * FIXED_TO_DOUBLE(s)); +} + +#endif + + +#ifndef USE_INLINE + +Fixed32 ToFixedDomain(int a) +{ + return a + ((a + 0x7fff) / 0xffff); +} + + +int FromFixedDomain(Fixed32 a) +{ + return a - ((a + 0x7fff) >> 16); +} + +#endif + + + +// Initiate a vector (double version) + + +void VEC3init(LPVEC3 r, double x, double y, double z) +{ + r -> n[VX] = x; + r -> n[VY] = y; + r -> n[VZ] = z; +} + +// Init a vector (fixed version) + +void VEC3initF(LPWVEC3 r, double x, double y, double z) +{ + r -> n[VX] = DOUBLE_TO_FIXED(x); + r -> n[VY] = DOUBLE_TO_FIXED(y); + r -> n[VZ] = DOUBLE_TO_FIXED(z); +} + + +// Convert to fixed point encoding is 1.0 = 0xFFFF + +void VEC3toFix(LPWVEC3 r, LPVEC3 v) +{ + r -> n[VX] = DOUBLE_TO_FIXED(v -> n[VX]); + r -> n[VY] = DOUBLE_TO_FIXED(v -> n[VY]); + r -> n[VZ] = DOUBLE_TO_FIXED(v -> n[VZ]); +} + +// Convert from fixed point + +void VEC3fromFix(LPVEC3 r, LPWVEC3 v) +{ + r -> n[VX] = FIXED_TO_DOUBLE(v -> n[VX]); + r -> n[VY] = FIXED_TO_DOUBLE(v -> n[VY]); + r -> n[VZ] = FIXED_TO_DOUBLE(v -> n[VZ]); +} + + +// Swap two double vectors + +void VEC3swap(LPVEC3 a, LPVEC3 b) +{ + DSWAP(a-> n[VX], b-> n[VX]); + DSWAP(a-> n[VY], b-> n[VY]); + DSWAP(a-> n[VZ], b-> n[VZ]); +} + +// Divide a vector by a constant + +void VEC3divK(LPVEC3 r, LPVEC3 v, double d) +{ + double d_inv = 1./d; + + r -> n[VX] = v -> n[VX] * d_inv; + r -> n[VY] = v -> n[VY] * d_inv; + r -> n[VZ] = v -> n[VZ] * d_inv; +} + +// Multiply by a constant + +void VEC3perK(LPVEC3 r, LPVEC3 v, double d ) +{ + r -> n[VX] = v -> n[VX] * d; + r -> n[VY] = v -> n[VY] * d; + r -> n[VZ] = v -> n[VZ] * d; +} + + +void VEC3perComp(LPVEC3 r, LPVEC3 a, LPVEC3 b) +{ + r -> n[VX] = a->n[VX]*b->n[VX]; + r -> n[VY] = a->n[VY]*b->n[VY]; + r -> n[VZ] = a->n[VZ]*b->n[VZ]; +} + +// Minus + + +void VEC3minus(LPVEC3 r, LPVEC3 a, LPVEC3 b) +{ + r -> n[VX] = a -> n[VX] - b -> n[VX]; + r -> n[VY] = a -> n[VY] - b -> n[VY]; + r -> n[VZ] = a -> n[VZ] - b -> n[VZ]; +} + + +// Check id two vectors are the same, allowing tolerance + +static +LCMSBOOL RangeCheck(double l, double h, double v) +{ + return (v >= l && v <= h); +} + + +LCMSBOOL VEC3equal(LPWVEC3 a, LPWVEC3 b, double Tolerance) +{ + int i; + double c; + + for (i=0; i < 3; i++) + { + c = FIXED_TO_DOUBLE(a -> n[i]); + if (!RangeCheck(c - Tolerance, + c + Tolerance, + FIXED_TO_DOUBLE(b->n[i]))) return FALSE; + } + + return TRUE; +} + +LCMSBOOL VEC3equalF(LPVEC3 a, LPVEC3 b, double Tolerance) +{ + int i; + double c; + + for (i=0; i < 3; i++) + { + c = a -> n[i]; + if (!RangeCheck(c - Tolerance, + c + Tolerance, + b->n[i])) return FALSE; + } + + return TRUE; +} + + +void VEC3scaleFix(LPWORD r, LPWVEC3 Scale) +{ + if (Scale -> n[VX] == 0x00010000L && + Scale -> n[VY] == 0x00010000L && + Scale -> n[VZ] == 0x00010000L) return; + + r[0] = (WORD) FixedScale(r[0], Scale -> n[VX]); + r[1] = (WORD) FixedScale(r[1], Scale -> n[VY]); + r[2] = (WORD) FixedScale(r[2], Scale -> n[VZ]); + +} + + + +// Vector cross product + +void VEC3cross(LPVEC3 r, LPVEC3 u, LPVEC3 v) +{ + + r ->n[VX] = u->n[VY] * v->n[VZ] - v->n[VY] * u->n[VZ]; + r ->n[VY] = u->n[VZ] * v->n[VX] - v->n[VZ] * u->n[VX]; + r ->n[VZ] = u->n[VX] * v->n[VY] - v->n[VX] * u->n[VY]; +} + + + +// The vector size + +double VEC3length(LPVEC3 a) +{ + return sqrt(a ->n[VX] * a ->n[VX] + + a ->n[VY] * a ->n[VY] + + a ->n[VZ] * a ->n[VZ]); +} + + +// Saturate a vector into 0..1.0 range + +void VEC3saturate(LPVEC3 v) +{ + int i; + for (i=0; i < 3; i++) { + if (v ->n[i] < 0) + v ->n[i] = 0; + else + if (v ->n[i] > 1.0) + v ->n[i] = 1.0; + } +} + + +// Euclidean distance + +double VEC3distance(LPVEC3 a, LPVEC3 b) +{ + double d1 = a ->n[VX] - b ->n[VX]; + double d2 = a ->n[VY] - b ->n[VY]; + double d3 = a ->n[VZ] - b ->n[VZ]; + + return sqrt(d1*d1 + d2*d2 + d3*d3); +} + + +// Identity + + +void MAT3identity(LPMAT3 a) +{ + VEC3init(&a-> v[0], 1.0, 0.0, 0.0); + VEC3init(&a-> v[1], 0.0, 1.0, 0.0); + VEC3init(&a-> v[2], 0.0, 0.0, 1.0); +} + + + + +// Check if matrix is Identity. Allow a tolerance as % + +LCMSBOOL MAT3isIdentity(LPWMAT3 a, double Tolerance) +{ + int i; + MAT3 Idd; + WMAT3 Idf; + + MAT3identity(&Idd); + MAT3toFix(&Idf, &Idd); + + for (i=0; i < 3; i++) + if (!VEC3equal(&a -> v[i], &Idf.v[i], Tolerance)) return FALSE; + + return TRUE; + +} + +// Multiply two matrices + + +void MAT3per(LPMAT3 r, LPMAT3 a, LPMAT3 b) +{ +#define ROWCOL(i, j) \ + a->v[i].n[0]*b->v[0].n[j] + a->v[i].n[1]*b->v[1].n[j] + a->v[i].n[2]*b->v[2].n[j] + + VEC3init(&r-> v[0], ROWCOL(0,0), ROWCOL(0,1), ROWCOL(0,2)); + VEC3init(&r-> v[1], ROWCOL(1,0), ROWCOL(1,1), ROWCOL(1,2)); + VEC3init(&r-> v[2], ROWCOL(2,0), ROWCOL(2,1), ROWCOL(2,2)); + +#undef ROWCOL //(i, j) +} + + + +// Inverse of a matrix b = a^(-1) +// Gauss-Jordan elimination with partial pivoting + +int MAT3inverse(LPMAT3 a, LPMAT3 b) +{ + register int i, j, max; + + MAT3identity(b); + + // Loop over cols of a from left to right, eliminating above and below diag + for (j=0; j<3; j++) { // Find largest pivot in column j among rows j..2 + + max = j; // Row with largest pivot candidate + for (i=j+1; i<3; i++) + if (fabs(a -> v[i].n[j]) > fabs(a -> v[max].n[j])) + max = i; + + // Swap rows max and j in a and b to put pivot on diagonal + + VEC3swap(&a -> v[max], &a -> v[j]); + VEC3swap(&b -> v[max], &b -> v[j]); + + // Scale row j to have a unit diagonal + + if (a -> v[j].n[j]==0.) + return -1; // singular matrix; can't invert + + VEC3divK(&b-> v[j], &b -> v[j], a->v[j].n[j]); + VEC3divK(&a-> v[j], &a -> v[j], a->v[j].n[j]); + + // Eliminate off-diagonal elems in col j of a, doing identical ops to b + for (i=0; i<3; i++) + + if (i !=j) { + VEC3 temp; + + VEC3perK(&temp, &b -> v[j], a -> v[i].n[j]); + VEC3minus(&b -> v[i], &b -> v[i], &temp); + + VEC3perK(&temp, &a -> v[j], a -> v[i].n[j]); + VEC3minus(&a -> v[i], &a -> v[i], &temp); + } + } + + return 1; +} + + +// Solve a system in the form Ax = b + +LCMSBOOL MAT3solve(LPVEC3 x, LPMAT3 a, LPVEC3 b) +{ + MAT3 m, a_1; + + CopyMemory(&m, a, sizeof(MAT3)); + + if (!MAT3inverse(&m, &a_1)) return FALSE; // Singular matrix + + MAT3eval(x, &a_1, b); + return TRUE; +} + + +// The determinant + +double MAT3det(LPMAT3 m) +{ + + double a1 = m ->v[VX].n[VX]; + double a2 = m ->v[VX].n[VY]; + double a3 = m ->v[VX].n[VZ]; + double b1 = m ->v[VY].n[VX]; + double b2 = m ->v[VY].n[VY]; + double b3 = m ->v[VY].n[VZ]; + double c1 = m ->v[VZ].n[VX]; + double c2 = m ->v[VZ].n[VY]; + double c3 = m ->v[VZ].n[VZ]; + + + return a1*b2*c3 - a1*b3*c2 + a2*b3*c1 - a2*b1*c3 - a3*b1*c2 - a3*b2*c1; +} + + +// linear transform + + +void MAT3eval(LPVEC3 r, LPMAT3 a, LPVEC3 v) +{ + r->n[VX] = a->v[0].n[VX]*v->n[VX] + a->v[0].n[VY]*v->n[VY] + a->v[0].n[VZ]*v->n[VZ]; + r->n[VY] = a->v[1].n[VX]*v->n[VX] + a->v[1].n[VY]*v->n[VY] + a->v[1].n[VZ]*v->n[VZ]; + r->n[VZ] = a->v[2].n[VX]*v->n[VX] + a->v[2].n[VY]*v->n[VY] + a->v[2].n[VZ]*v->n[VZ]; +} + + +// Ok, this is another bottleneck of performance. + + +#ifdef USE_ASSEMBLER + +// ecx:ebx is result in 64 bits format +// edi points to matrix, esi points to input vector +// since only 3 accesses are in output, this is a stack variable + + +void MAT3evalW(LPWVEC3 r_, LPWMAT3 a_, LPWVEC3 v_) +{ + + ASM { + + + mov esi, dword ptr ss:v_ + mov edi, dword ptr ss:a_ + + // r->n[VX] = FixedMul(a->v[0].n[0], v->n[0]) + + + mov eax,dword ptr [esi] + mov edx,dword ptr [edi] + imul edx + mov ecx, eax + mov ebx, edx + + // FixedMul(a->v[0].n[1], v->n[1]) + + + mov eax,dword ptr [esi+4] + mov edx,dword ptr [edi+4] + imul edx + add ecx, eax + adc ebx, edx + + // FixedMul(a->v[0].n[2], v->n[2]); + + mov eax,dword ptr [esi+8] + mov edx,dword ptr [edi+8] + imul edx + add ecx, eax + adc ebx, edx + + // Back to Fixed 15.16 + + add ecx, 0x8000 + adc ebx, 0 + shrd ecx, ebx, 16 + + push edi + mov edi, dword ptr ss:r_ + mov dword ptr [edi], ecx // r -> n[VX] + pop edi + + + + // 2nd row *************************** + + // FixedMul(a->v[1].n[0], v->n[0]) + + mov eax,dword ptr [esi] + mov edx,dword ptr [edi+12] + imul edx + mov ecx, eax + mov ebx, edx + + // FixedMul(a->v[1].n[1], v->n[1]) + + + mov eax,dword ptr [esi+4] + mov edx,dword ptr [edi+16] + imul edx + add ecx, eax + adc ebx, edx + + // FixedMul(a->v[1].n[2], v->n[2]); + + mov eax,dword ptr [esi+8] + mov edx,dword ptr [edi+20] + imul edx + add ecx, eax + adc ebx, edx + + add ecx, 0x8000 + adc ebx, 0 + shrd ecx, ebx, 16 + + push edi + mov edi, dword ptr ss:r_ + mov dword ptr [edi+4], ecx // r -> n[VY] + pop edi + +// 3d row ************************** + + // r->n[VZ] = FixedMul(a->v[2].n[0], v->n[0]) + + + mov eax,dword ptr [esi] + mov edx,dword ptr [edi+24] + imul edx + mov ecx, eax + mov ebx, edx + + // FixedMul(a->v[2].n[1], v->n[1]) + + + mov eax,dword ptr [esi+4] + mov edx,dword ptr [edi+28] + imul edx + add ecx, eax + adc ebx, edx + + // FixedMul(a->v[2].n[2], v->n[2]); + + mov eax,dword ptr [esi+8] + mov edx,dword ptr [edi+32] + imul edx + add ecx, eax + adc ebx, edx + + add ecx, 0x8000 + adc ebx, 0 + shrd ecx, ebx, 16 + + mov edi, dword ptr ss:r_ + mov dword ptr [edi+8], ecx // r -> n[VZ] + } +} + + +#else + + +#ifdef USE_FLOAT + +void MAT3evalW(LPWVEC3 r, LPWMAT3 a, LPWVEC3 v) +{ + r->n[VX] = DOUBLE_TO_FIXED( + FIXED_TO_DOUBLE(a->v[0].n[0]) * FIXED_TO_DOUBLE(v->n[0]) + + FIXED_TO_DOUBLE(a->v[0].n[1]) * FIXED_TO_DOUBLE(v->n[1]) + + FIXED_TO_DOUBLE(a->v[0].n[2]) * FIXED_TO_DOUBLE(v->n[2]) + ); + + r->n[VY] = DOUBLE_TO_FIXED( + FIXED_TO_DOUBLE(a->v[1].n[0]) * FIXED_TO_DOUBLE(v->n[0]) + + FIXED_TO_DOUBLE(a->v[1].n[1]) * FIXED_TO_DOUBLE(v->n[1]) + + FIXED_TO_DOUBLE(a->v[1].n[2]) * FIXED_TO_DOUBLE(v->n[2]) + ); + + r->n[VZ] = DOUBLE_TO_FIXED( + FIXED_TO_DOUBLE(a->v[2].n[0]) * FIXED_TO_DOUBLE(v->n[0]) + + FIXED_TO_DOUBLE(a->v[2].n[1]) * FIXED_TO_DOUBLE(v->n[1]) + + FIXED_TO_DOUBLE(a->v[2].n[2]) * FIXED_TO_DOUBLE(v->n[2]) + ); +} + + +#else + +void MAT3evalW(LPWVEC3 r, LPWMAT3 a, LPWVEC3 v) +{ + +#ifdef USE_INT64 + + LCMSULONGLONG l1 = (LCMSULONGLONG) (LCMSSLONGLONG) a->v[0].n[0] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[0] + + (LCMSULONGLONG) (LCMSSLONGLONG) a->v[0].n[1] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[1] + + (LCMSULONGLONG) (LCMSSLONGLONG) a->v[0].n[2] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[2] + (LCMSULONGLONG) 0x8000; + + LCMSULONGLONG l2 = (LCMSULONGLONG) (LCMSSLONGLONG) a->v[1].n[0] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[0] + + (LCMSULONGLONG) (LCMSSLONGLONG) a->v[1].n[1] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[1] + + (LCMSULONGLONG) (LCMSSLONGLONG) a->v[1].n[2] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[2] + (LCMSULONGLONG) 0x8000; + + LCMSULONGLONG l3 = (LCMSULONGLONG) (LCMSSLONGLONG) a->v[2].n[0] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[0] + + (LCMSULONGLONG) (LCMSSLONGLONG) a->v[2].n[1] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[1] + + (LCMSULONGLONG) (LCMSSLONGLONG) a->v[2].n[2] * + (LCMSULONGLONG) (LCMSSLONGLONG) v->n[2] + (LCMSULONGLONG) 0x8000; + l1 >>= 16; + l2 >>= 16; + l3 >>= 16; + + r->n[VX] = (Fixed32) l1; + r->n[VY] = (Fixed32) l2; + r->n[VZ] = (Fixed32) l3; + +#else + + // FIXME: Rounding should be done at very last stage. There is 1-Contone rounding error! + + r->n[VX] = FixedMul(a->v[0].n[0], v->n[0]) + + FixedMul(a->v[0].n[1], v->n[1]) + + FixedMul(a->v[0].n[2], v->n[2]); + + r->n[VY] = FixedMul(a->v[1].n[0], v->n[0]) + + FixedMul(a->v[1].n[1], v->n[1]) + + FixedMul(a->v[1].n[2], v->n[2]); + + r->n[VZ] = FixedMul(a->v[2].n[0], v->n[0]) + + FixedMul(a->v[2].n[1], v->n[1]) + + FixedMul(a->v[2].n[2], v->n[2]); +#endif +} + +#endif +#endif + + +void MAT3perK(LPMAT3 r, LPMAT3 v, double d) +{ + VEC3perK(&r -> v[0], &v -> v[0], d); + VEC3perK(&r -> v[1], &v -> v[1], d); + VEC3perK(&r -> v[2], &v -> v[2], d); +} + + +void MAT3toFix(LPWMAT3 r, LPMAT3 v) +{ + VEC3toFix(&r -> v[0], &v -> v[0]); + VEC3toFix(&r -> v[1], &v -> v[1]); + VEC3toFix(&r -> v[2], &v -> v[2]); +} + +void MAT3fromFix(LPMAT3 r, LPWMAT3 v) +{ + VEC3fromFix(&r -> v[0], &v -> v[0]); + VEC3fromFix(&r -> v[1], &v -> v[1]); + VEC3fromFix(&r -> v[2], &v -> v[2]); +} + + + +// Scale v by d and store it in r giving INTEGER + +void VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d) +{ + r -> n[VX] = (int) floor(v -> n[VX] * d + .5); + r -> n[VY] = (int) floor(v -> n[VY] * d + .5); + r -> n[VZ] = (int) floor(v -> n[VZ] * d + .5); +} + +void MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d) +{ + VEC3scaleAndCut(&r -> v[0], &v -> v[0], d); + VEC3scaleAndCut(&r -> v[1], &v -> v[1], d); + VEC3scaleAndCut(&r -> v[2], &v -> v[2], d); +} + + + + diff --git a/icc2ps/cmsnamed.c b/icc2ps/cmsnamed.c new file mode 100644 index 0000000..9a028bb --- /dev/null +++ b/icc2ps/cmsnamed.c @@ -0,0 +1,171 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +// Named color support + +#include "lcms.h" + + + +static +LPcmsNAMEDCOLORLIST GrowNamedColorList(LPcmsNAMEDCOLORLIST v, int ByElements) +{ + if (ByElements > v ->Allocated) { + + LPcmsNAMEDCOLORLIST TheNewList; + int NewElements; + size_t size; + + if (v ->Allocated == 0) + NewElements = 64; // Initial guess + else + NewElements = v ->Allocated; + + while (ByElements > NewElements) + NewElements *= 2; + + size = sizeof(cmsNAMEDCOLORLIST) + (sizeof(cmsNAMEDCOLOR) * NewElements); + TheNewList = (LPcmsNAMEDCOLORLIST) _cmsMalloc(size); + + + if (TheNewList == NULL) { + cmsSignalError(LCMS_ERRC_ABORTED, "Out of memory reallocating named color list"); + return NULL; + } + else { + ZeroMemory(TheNewList, size); + CopyMemory(TheNewList, v, sizeof(cmsNAMEDCOLORLIST) + (v ->nColors - 1) * sizeof(cmsNAMEDCOLOR)); + TheNewList -> Allocated = NewElements; + + _cmsFree(v); + return TheNewList; + } + } + + return v; +} + + +LPcmsNAMEDCOLORLIST cmsAllocNamedColorList(int n) +{ + size_t size = sizeof(cmsNAMEDCOLORLIST) + (n - 1) * sizeof(cmsNAMEDCOLOR); + + LPcmsNAMEDCOLORLIST v = (LPcmsNAMEDCOLORLIST) _cmsMalloc(size); + + + if (v == NULL) { + cmsSignalError(LCMS_ERRC_ABORTED, "Out of memory creating named color list"); + return NULL; + } + + ZeroMemory(v, size); + + v ->nColors = n; + v ->Allocated = n; + v ->Prefix[0] = 0; + v ->Suffix[0] = 0; + + return v; +} + +void cmsFreeNamedColorList(LPcmsNAMEDCOLORLIST v) +{ + if (v == NULL) { + cmsSignalError(LCMS_ERRC_RECOVERABLE, "Couldn't free a NULL named color list"); + return; + } + + _cmsFree(v); +} + +LCMSBOOL cmsAppendNamedColor(cmsHTRANSFORM xform, const char* Name, WORD PCS[3], WORD Colorant[MAXCHANNELS]) +{ + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) xform; + LPcmsNAMEDCOLORLIST List; + int i; + + if (v ->NamedColorList == NULL) return FALSE; + + v ->NamedColorList = GrowNamedColorList(v ->NamedColorList, v->NamedColorList ->nColors + 1); + + List = v ->NamedColorList; + + for (i=0; i < MAXCHANNELS; i++) + List ->List[List ->nColors].DeviceColorant[i] = Colorant[i]; + + for (i=0; i < 3; i++) + List ->List[List ->nColors].PCS[i] = PCS[i]; + + strncpy(List ->List[List ->nColors].Name, Name, MAX_PATH-1); + List ->List[List ->nColors].Name[MAX_PATH-1] = 0; + + List ->nColors++; + return TRUE; +} + + + +// Returns named color count + +int LCMSEXPORT cmsNamedColorCount(cmsHTRANSFORM xform) +{ + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) xform; + + if (v ->NamedColorList == NULL) return 0; + return v ->NamedColorList ->nColors; +} + + +LCMSBOOL LCMSEXPORT cmsNamedColorInfo(cmsHTRANSFORM xform, int nColor, char* Name, char* Prefix, char* Suffix) +{ + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) xform; + + if (v ->NamedColorList == NULL) return FALSE; + + if (nColor < 0 || nColor >= cmsNamedColorCount(xform)) return FALSE; + + if (Name) { strncpy(Name, v ->NamedColorList->List[nColor].Name, 31); Name[31] = 0; } + if (Prefix) { strncpy(Prefix, v ->NamedColorList->Prefix, 31); Prefix[31] = 0; } + if (Suffix) { strncpy(Suffix, v ->NamedColorList->Suffix, 31); Suffix[31] = 0; } + + return TRUE; +} + + +int LCMSEXPORT cmsNamedColorIndex(cmsHTRANSFORM xform, const char* Name) +{ + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) xform; + int i, n; + + if (v ->NamedColorList == NULL) return -1; + + n = cmsNamedColorCount(xform); + for (i=0; i < n; i++) { + if (stricmp(Name, v ->NamedColorList->List[i].Name) == 0) + return i; + } + + return -1; +} + + diff --git a/icc2ps/cmspack.c b/icc2ps/cmspack.c new file mode 100644 index 0000000..230ea34 --- /dev/null +++ b/icc2ps/cmspack.c @@ -0,0 +1,2146 @@ +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + +// This module handles all formats supported by lcms + + +// --------------------------------------------------------------------------- + + +// This macro return words stored as big endian + +#define CHANGE_ENDIAN(w) (WORD) ((WORD) ((w)<<8)|((w)>>8)) + +// These macros handles reversing (negative) + +#define REVERSE_FLAVOR_8(x) ((BYTE) (0xff-(x))) +#define REVERSE_FLAVOR_16(x) ((WORD)(0xffff-(x))) + +// Supress waning about info never being used + +#ifdef __BORLANDC__ +#pragma warn -par +#endif + +#ifdef _MSC_VER +#pragma warning(disable : 4100) +#endif + +// -------------------------------------------------------- Unpacking routines. + + +static +LPBYTE UnrollAnyBytes(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + int nChan = T_CHANNELS(info -> InputFormat); + register int i; + + for (i=0; i < nChan; i++) { + + wIn[i] = RGB_8_TO_16(*accum); accum++; + } + + return accum + T_EXTRA(info -> InputFormat); +} + + + +static +LPBYTE Unroll4Bytes(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = RGB_8_TO_16(*accum); accum++; // C + wIn[1] = RGB_8_TO_16(*accum); accum++; // M + wIn[2] = RGB_8_TO_16(*accum); accum++; // Y + wIn[3] = RGB_8_TO_16(*accum); accum++; // K + + return accum; +} + +static +LPBYTE Unroll4BytesReverse(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = RGB_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // C + wIn[1] = RGB_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // M + wIn[2] = RGB_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // Y + wIn[3] = RGB_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // K + + return accum; +} + + +static +LPBYTE Unroll4BytesSwapFirst(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + + wIn[3] = RGB_8_TO_16(*accum); accum++; // K + wIn[0] = RGB_8_TO_16(*accum); accum++; // C + wIn[1] = RGB_8_TO_16(*accum); accum++; // M + wIn[2] = RGB_8_TO_16(*accum); accum++; // Y + + + return accum; +} + + + +// KYMC +static +LPBYTE Unroll4BytesSwap(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[3] = RGB_8_TO_16(*accum); accum++; // K + wIn[2] = RGB_8_TO_16(*accum); accum++; // Y + wIn[1] = RGB_8_TO_16(*accum); accum++; // M + wIn[0] = RGB_8_TO_16(*accum); accum++; // C + + return accum; +} + + +static +LPBYTE Unroll4BytesSwapSwapFirst(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[2] = RGB_8_TO_16(*accum); accum++; // K + wIn[1] = RGB_8_TO_16(*accum); accum++; // Y + wIn[0] = RGB_8_TO_16(*accum); accum++; // M + wIn[3] = RGB_8_TO_16(*accum); accum++; // C + + return accum; +} + + +static +LPBYTE UnrollAnyWords(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + int nChan = T_CHANNELS(info -> InputFormat); + register int i; + + for (i=0; i < nChan; i++) { + + wIn[i] = *(LPWORD) accum; accum += 2; + } + + return accum + T_EXTRA(info -> InputFormat) * sizeof(WORD); +} + + +static +LPBYTE Unroll4Words(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = *(LPWORD) accum; accum+= 2; // C + wIn[1] = *(LPWORD) accum; accum+= 2; // M + wIn[2] = *(LPWORD) accum; accum+= 2; // Y + wIn[3] = *(LPWORD) accum; accum+= 2; // K + + return accum; +} + +static +LPBYTE Unroll4WordsReverse(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = REVERSE_FLAVOR_16(*(LPWORD) accum); accum+= 2; // C + wIn[1] = REVERSE_FLAVOR_16(*(LPWORD) accum); accum+= 2; // M + wIn[2] = REVERSE_FLAVOR_16(*(LPWORD) accum); accum+= 2; // Y + wIn[3] = REVERSE_FLAVOR_16(*(LPWORD) accum); accum+= 2; // K + + return accum; +} + + +static +LPBYTE Unroll4WordsSwapFirst(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[3] = *(LPWORD) accum; accum+= 2; // K + wIn[0] = *(LPWORD) accum; accum+= 2; // C + wIn[1] = *(LPWORD) accum; accum+= 2; // M + wIn[2] = *(LPWORD) accum; accum+= 2; // Y + + return accum; +} + + +// KYMC +static +LPBYTE Unroll4WordsSwap(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[3] = *(LPWORD) accum; accum+= 2; // K + wIn[2] = *(LPWORD) accum; accum+= 2; // Y + wIn[1] = *(LPWORD) accum; accum+= 2; // M + wIn[0] = *(LPWORD) accum; accum+= 2; // C + + return accum; +} + +static +LPBYTE Unroll4WordsSwapSwapFirst(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[2] = *(LPWORD) accum; accum+= 2; // K + wIn[1] = *(LPWORD) accum; accum+= 2; // Y + wIn[0] = *(LPWORD) accum; accum+= 2; // M + wIn[3] = *(LPWORD) accum; accum+= 2; // C + + return accum; +} + + +static +LPBYTE Unroll4WordsBigEndian(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //C + wIn[1] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //M + wIn[2] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //Y + wIn[3] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //K + + return accum; +} + +static +LPBYTE Unroll4WordsBigEndianReverse(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = REVERSE_FLAVOR_16(CHANGE_ENDIAN(*(LPWORD) accum)); accum+= 2; //C + wIn[1] = REVERSE_FLAVOR_16(CHANGE_ENDIAN(*(LPWORD) accum)); accum+= 2; //M + wIn[2] = REVERSE_FLAVOR_16(CHANGE_ENDIAN(*(LPWORD) accum)); accum+= 2; //Y + wIn[3] = REVERSE_FLAVOR_16(CHANGE_ENDIAN(*(LPWORD) accum)); accum+= 2; //K + + return accum; +} + + +// KYMC +static +LPBYTE Unroll4WordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[3] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //K + wIn[2] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //Y + wIn[1] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //M + wIn[0] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; //C + + return accum; +} + +static +LPBYTE Unroll3Bytes(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + + wIn[0] = RGB_8_TO_16(*accum); accum++; // R + wIn[1] = RGB_8_TO_16(*accum); accum++; // G + wIn[2] = RGB_8_TO_16(*accum); accum++; // B + + return accum; +} + + +// Lab8 encoding using v2 PCS + +static +LPBYTE Unroll3BytesLab(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + + wIn[0] = (WORD) ((*accum) << 8); accum++; + wIn[1] = (WORD) ((*accum) << 8); accum++; + wIn[2] = (WORD) ((*accum) << 8); accum++; + + return accum; +} + + +// BRG + +static +LPBYTE Unroll3BytesSwap(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + + wIn[2] = RGB_8_TO_16(*accum); accum++; // B + wIn[1] = RGB_8_TO_16(*accum); accum++; // G + wIn[0] = RGB_8_TO_16(*accum); accum++; // R + + return accum; +} + +static +LPBYTE Unroll3Words(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = *(LPWORD) accum; accum+= 2; // C R + wIn[1] = *(LPWORD) accum; accum+= 2; // M G + wIn[2] = *(LPWORD) accum; accum+= 2; // Y B + return accum; +} + + +static +LPBYTE Unroll3WordsSwap(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[2] = *(LPWORD) accum; accum+= 2; // C R + wIn[1] = *(LPWORD) accum; accum+= 2; // M G + wIn[0] = *(LPWORD) accum; accum+= 2; // Y B + return accum; +} + + +static +LPBYTE Unroll3WordsBigEndian(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + wIn[1] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + wIn[2] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + return accum; +} + + +static +LPBYTE Unroll3WordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[2] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + wIn[1] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + wIn[0] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + return accum; +} + + + +// Monochrome duplicates L into RGB for null-transforms + +static +LPBYTE Unroll1Byte(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = RGB_8_TO_16(*accum); accum++; // L + return accum; +} + + +static +LPBYTE Unroll1ByteSkip2(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = RGB_8_TO_16(*accum); accum++; // L + accum += 2; + return accum; +} + +static +LPBYTE Unroll1ByteReversed(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(RGB_8_TO_16(*accum)); accum++; // L + return accum; +} + + +static +LPBYTE Unroll1Word(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = *(LPWORD) accum; accum+= 2; // L + return accum; +} + +static +LPBYTE Unroll1WordReversed(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(*(LPWORD) accum); accum+= 2; + return accum; +} + + +static +LPBYTE Unroll1WordBigEndian(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + return accum; +} + +static +LPBYTE Unroll1WordSkip3(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = *(LPWORD) accum; + + accum += 8; + return accum; +} + + +// Monochrome + alpha. Alpha is lost + +static +LPBYTE Unroll2Byte(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = RGB_8_TO_16(*accum); accum++; // L + wIn[3] = RGB_8_TO_16(*accum); accum++; // alpha + return accum; +} + +static +LPBYTE Unroll2ByteSwapFirst(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[3] = RGB_8_TO_16(*accum); accum++; // alpha + wIn[0] = wIn[1] = wIn[2] = RGB_8_TO_16(*accum); accum++; // L + return accum; +} + + +static +LPBYTE Unroll2Word(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = *(LPWORD) accum; accum+= 2; // L + wIn[3] = *(LPWORD) accum; accum += 2; // alpha + + return accum; +} + + +static +LPBYTE Unroll2WordSwapFirst(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[3] = *(LPWORD) accum; accum += 2; // alpha + wIn[0] = wIn[1] = wIn[2] = *(LPWORD) accum; accum+= 2; // L + + return accum; +} + +static +LPBYTE Unroll2WordBigEndian(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + wIn[0] = wIn[1] = wIn[2] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + wIn[3] = CHANGE_ENDIAN(*(LPWORD) accum); accum+= 2; + + return accum; +} + + + + +static +LPBYTE UnrollPlanarBytes(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + int nChan = T_CHANNELS(info -> InputFormat); + register int i; + LPBYTE Init = accum; + + for (i=0; i < nChan; i++) { + + wIn[i] = RGB_8_TO_16(*accum); + accum += info -> StrideIn; + } + + return (Init + 1); +} + + + +static +LPBYTE UnrollPlanarWords(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + int nChan = T_CHANNELS(info -> InputFormat); + register int i; + LPBYTE Init = accum; + + for (i=0; i < nChan; i++) { + + wIn[i] = *(LPWORD) accum; + accum += (info -> StrideIn * sizeof(WORD)); + } + + return (Init + sizeof(WORD)); +} + + + +static +LPBYTE UnrollPlanarWordsBigEndian(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + int nChan = T_CHANNELS(info -> InputFormat); + register int i; + LPBYTE Init = accum; + + for (i=0; i < nChan; i++) { + + wIn[i] = CHANGE_ENDIAN(*(LPWORD) accum); + accum += (info -> StrideIn * sizeof(WORD)); + } + + return (Init + sizeof(WORD)); +} + + +// floating point +static +LPBYTE UnrollLabDouble(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + + if (T_PLANAR(info -> InputFormat)) { + + double* Pt = (double*) accum; + + cmsCIELab Lab; + + Lab.L = Pt[0]; + Lab.a = Pt[info->StrideIn]; + Lab.b = Pt[info->StrideIn*2]; + + if (info ->lInputV4Lab) + cmsFloat2LabEncoded4(wIn, &Lab); + else + cmsFloat2LabEncoded(wIn, &Lab); + + return accum + sizeof(double); + } + else { + + if (info ->lInputV4Lab) + cmsFloat2LabEncoded4(wIn, (LPcmsCIELab) accum); + else + cmsFloat2LabEncoded(wIn, (LPcmsCIELab) accum); + + accum += sizeof(cmsCIELab); + + return accum; + } +} + +static +LPBYTE UnrollXYZDouble(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + if (T_PLANAR(info -> InputFormat)) { + + double* Pt = (double*) accum; + cmsCIEXYZ XYZ; + + XYZ.X = Pt[0]; + XYZ.Y = Pt[info->StrideIn]; + XYZ.Z = Pt[info->StrideIn*2]; + cmsFloat2XYZEncoded(wIn, &XYZ); + + return accum + sizeof(double); + + } + + else { + + + cmsFloat2XYZEncoded(wIn, (LPcmsCIEXYZ) accum); + accum += sizeof(cmsCIEXYZ); + + return accum; + } +} + + + +// Inks does come in percentage +static +LPBYTE UnrollInkDouble(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + double* Inks = (double*) accum; + int nChan = T_CHANNELS(info -> InputFormat); + int Planar = T_PLANAR(info -> InputFormat); + int i; + double v; + + for (i=0; i < nChan; i++) { + + if (Planar) + + v = Inks[i * info ->StrideIn]; + else + v = Inks[i]; + + v = floor(v * 655.35 + 0.5); + + if (v > 65535.0) v = 65535.0; + if (v < 0) v = 0; + + wIn[i] = (WORD) v; + } + + if (T_PLANAR(info -> InputFormat)) + return accum + sizeof(double); + else + return accum + (nChan + T_EXTRA(info ->InputFormat)) * sizeof(double); +} + + +// Remaining cases are between 0..1.0 +static +LPBYTE UnrollDouble(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + double* Inks = (double*) accum; + int nChan = T_CHANNELS(info -> InputFormat); + int Planar = T_PLANAR(info -> InputFormat); + int i; + double v; + + for (i=0; i < nChan; i++) { + + if (Planar) + + v = Inks[i * info ->StrideIn]; + else + v = Inks[i]; + + v = floor(v * 65535.0 + 0.5); + + if (v > 65535.0) v = 65535.0; + if (v < 0) v = 0; + + wIn[i] = (WORD) v; + } + + if (T_PLANAR(info -> InputFormat)) + return accum + sizeof(double); + else + return accum + (nChan + T_EXTRA(info ->InputFormat)) * sizeof(double); +} + + + +static +LPBYTE UnrollDouble1Chan(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum) +{ + double* Inks = (double*) accum; + double v; + + + v = floor(Inks[0] * 65535.0 + 0.5); + + if (v > 65535.0) v = 65535.0; + if (v < 0) v = 0; + + + wIn[0] = wIn[1] = wIn[2] = (WORD) v; + + return accum + sizeof(double); +} + + +// ----------------------------------------------------------- Packing routines + + +// Generic N-bytes plus dither 16-to-8 conversion. Currently is just a quick hack + +static int err[MAXCHANNELS]; + +static +LPBYTE PackNBytesDither(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + unsigned int n, pe, pf; + + for (i=0; i < nChan; i++) { + + n = wOut[i] + err[i]; // Value + + pe = (n / 257); // Whole part + pf = (n % 257); // Fractional part + + err[i] = pf; // Store it for next pixel + + *output++ = (BYTE) pe; + } + + return output + T_EXTRA(info ->OutputFormat); +} + + + +static +LPBYTE PackNBytesSwapDither(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + unsigned int n, pe, pf; + + for (i=nChan-1; i >= 0; --i) { + + n = wOut[i] + err[i]; // Value + + pe = (n / 257); // Whole part + pf = (n % 257); // Fractional part + + err[i] = pf; // Store it for next pixel + + *output++ = (BYTE) pe; + } + + + return output + T_EXTRA(info ->OutputFormat); +} + + + +// Generic chunky for byte + +static +LPBYTE PackNBytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + + for (i=0; i < nChan; i++) + *output++ = RGB_16_TO_8(wOut[i]); + + return output + T_EXTRA(info ->OutputFormat); +} + +// Chunky reversed order bytes + +static +LPBYTE PackNBytesSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + + for (i=nChan-1; i >= 0; --i) + *output++ = RGB_16_TO_8(wOut[i]); + + return output + T_EXTRA(info ->OutputFormat); + +} + + +static +LPBYTE PackNWords(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + + for (i=0; i < nChan; i++) { + *(LPWORD) output = wOut[i]; + output += sizeof(WORD); + } + + return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD); +} + +static +LPBYTE PackNWordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + + for (i=nChan-1; i >= 0; --i) { + *(LPWORD) output = wOut[i]; + output += sizeof(WORD); + } + + return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD); +} + + + +static +LPBYTE PackNWordsBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + + for (i=0; i < nChan; i++) { + *(LPWORD) output = CHANGE_ENDIAN(wOut[i]); + output += sizeof(WORD); + } + + return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD); +} + + +static +LPBYTE PackNWordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + + for (i=nChan-1; i >= 0; --i) { + *(LPWORD) output = CHANGE_ENDIAN(wOut[i]); + output += sizeof(WORD); + } + + return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD); +} + + +static +LPBYTE PackPlanarBytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + LPBYTE Init = output; + + for (i=0; i < nChan; i++) { + + *(LPBYTE) output = RGB_16_TO_8(wOut[i]); + output += info -> StrideOut; + } + + return (Init + 1); +} + + +static +LPBYTE PackPlanarWords(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + int nChan = T_CHANNELS(info -> OutputFormat); + register int i; + LPBYTE Init = output; + + for (i=0; i < nChan; i++) { + + *(LPWORD) output = wOut[i]; + output += (info -> StrideOut * sizeof(WORD)); + } + + return (Init + 2); +} + + +// CMYKcm (unrolled for speed) + +static +LPBYTE Pack6Bytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[3]); + *output++ = RGB_16_TO_8(wOut[4]); + *output++ = RGB_16_TO_8(wOut[5]); + + return output; +} + +// KCMYcm + +static +LPBYTE Pack6BytesSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[3]); + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[4]); + *output++ = RGB_16_TO_8(wOut[5]); + + return output; +} + +// CMYKcm +static +LPBYTE Pack6Words(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[0]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[2]; + output+= 2; + *(LPWORD) output = wOut[3]; + output+= 2; + *(LPWORD) output = wOut[4]; + output+= 2; + *(LPWORD) output = wOut[5]; + output+= 2; + + return output; +} + +// KCMYcm +static +LPBYTE Pack6WordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[3]; + output+= 2; + *(LPWORD) output = wOut[0]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[2]; + output+= 2; + *(LPWORD) output = wOut[4]; + output+= 2; + *(LPWORD) output = wOut[5]; + output+= 2; + + return output; +} + +// CMYKcm +static +LPBYTE Pack6WordsBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[3]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[4]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[5]); + output+= 2; + + return output; +} + +// KCMYcm +static +LPBYTE Pack6WordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[3]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[4]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[5]); + output+= 2; + + return output; +} + + +static +LPBYTE Pack4Bytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[3]); + + return output; +} + +static +LPBYTE Pack4BytesReverse(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[0])); + *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[1])); + *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[2])); + *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[3])); + + return output; +} + + +static +LPBYTE Pack4BytesSwapFirst(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[3]); + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[2]); + + return output; +} + + +// ABGR + +static +LPBYTE Pack4BytesSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[3]); + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[0]); + + return output; +} + + +static +LPBYTE Pack4BytesSwapSwapFirst(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[3]); + + return output; +} + + +static +LPBYTE Pack4Words(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[0]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[2]; + output+= 2; + *(LPWORD) output = wOut[3]; + output+= 2; + + return output; +} + + +static +LPBYTE Pack4WordsReverse(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = REVERSE_FLAVOR_16(wOut[0]); + output+= 2; + *(LPWORD) output = REVERSE_FLAVOR_16(wOut[1]); + output+= 2; + *(LPWORD) output = REVERSE_FLAVOR_16(wOut[2]); + output+= 2; + *(LPWORD) output = REVERSE_FLAVOR_16(wOut[3]); + output+= 2; + + return output; +} + +// ABGR + +static +LPBYTE Pack4WordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[3]; + output+= 2; + *(LPWORD) output = wOut[2]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[0]; + output+= 2; + + return output; +} + +// CMYK +static +LPBYTE Pack4WordsBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[3]); + output+= 2; + + return output; +} + + +static +LPBYTE Pack4WordsBigEndianReverse(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[0])); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[1])); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[2])); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[3])); + output+= 2; + + return output; +} + +// KYMC + +static +LPBYTE Pack4WordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[3]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + + return output; +} + +static +LPBYTE Pack3Bytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[2]); + + return output; +} + +static +LPBYTE Pack3BytesLab(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = (BYTE) (wOut[0] >> 8); + *output++ = (BYTE) (wOut[1] >> 8); + *output++ = (BYTE) (wOut[2] >> 8); + + return output; +} + + +static +LPBYTE Pack3BytesSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[0]); + + return output; +} + + +static +LPBYTE Pack3Words(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[0]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[2]; + output+= 2; + + return output; +} + +static +LPBYTE Pack3WordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[2]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[0]; + output+= 2; + + return output; +} + +static +LPBYTE Pack3WordsBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + + return output; +} + + +static +LPBYTE Pack3WordsSwapBigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + + return output; +} + + +static +LPBYTE Pack3BytesAndSkip1(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[2]); + output++; + + return output; +} + + +static +LPBYTE Pack3BytesAndSkip1SwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + output++; + *output++ = RGB_16_TO_8(wOut[0]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[2]); + + return output; +} + +static +LPBYTE Pack3BytesAndSkip1Swap(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + output++; + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[0]); + + return output; +} + + +static +LPBYTE Pack3BytesAndSkip1SwapSwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[2]); + *output++ = RGB_16_TO_8(wOut[1]); + *output++ = RGB_16_TO_8(wOut[0]); + output++; + + return output; +} + + +static +LPBYTE Pack3WordsAndSkip1(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[0]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[2]; + output+= 2; + output+= 2; + + return output; +} + +static +LPBYTE Pack3WordsAndSkip1Swap(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + output+= 2; + *(LPWORD) output = wOut[2]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[0]; + output+= 2; + + + return output; +} + + +static +LPBYTE Pack3WordsAndSkip1SwapSwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[2]; + output+= 2; + *(LPWORD) output = wOut[1]; + output+= 2; + *(LPWORD) output = wOut[0]; + output+= 2; + output+= 2; + + + return output; +} + + +static +LPBYTE Pack3WordsAndSkip1BigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + output+= 2; + + return output; +} + + +static +LPBYTE Pack3WordsAndSkip1SwapBigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[2]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[1]); + output+= 2; + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + + + return output; +} + + + +static +LPBYTE Pack1Byte(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[0]); + return output; +} + + +static +LPBYTE Pack1ByteAndSkip1(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *output++ = RGB_16_TO_8(wOut[0]); + output++; + return output; +} + + +static +LPBYTE Pack1ByteAndSkip1SwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + output++; + *output++ = RGB_16_TO_8(wOut[0]); + + return output; +} + +static +LPBYTE Pack1Word(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[0]; + output+= 2; + + return output; +} + +static +LPBYTE Pack1WordBigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 2; + + return output; +} + + +static +LPBYTE Pack1WordAndSkip1(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = wOut[0]; + output+= 4; + + return output; +} + +static +LPBYTE Pack1WordAndSkip1SwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + output += 2; + *(LPWORD) output = wOut[0]; + output+= 2; + + return output; +} + + +static +LPBYTE Pack1WordAndSkip1BigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + *(LPWORD) output = CHANGE_ENDIAN(wOut[0]); + output+= 4; + + return output; +} + + +// Unencoded Float values -- don't try optimize speed + +static +LPBYTE PackLabDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + + if (T_PLANAR(Info -> OutputFormat)) { + + cmsCIELab Lab; + double* Out = (double*) output; + cmsLabEncoded2Float(&Lab, wOut); + + Out[0] = Lab.L; + Out[Info ->StrideOut] = Lab.a; + Out[Info ->StrideOut*2] = Lab.b; + + return output + sizeof(double); + + } + else { + + if (Info ->lOutputV4Lab) + cmsLabEncoded2Float4((LPcmsCIELab) output, wOut); + else + cmsLabEncoded2Float((LPcmsCIELab) output, wOut); + + return output + (sizeof(cmsCIELab) + T_EXTRA(Info ->OutputFormat) * sizeof(double)); + } + +} + +static +LPBYTE PackXYZDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + + if (T_PLANAR(Info -> OutputFormat)) { + + cmsCIEXYZ XYZ; + double* Out = (double*) output; + cmsXYZEncoded2Float(&XYZ, wOut); + + Out[0] = XYZ.X; + Out[Info ->StrideOut] = XYZ.Y; + Out[Info ->StrideOut*2] = XYZ.Z; + + return output + sizeof(double); + + } + else { + + cmsXYZEncoded2Float((LPcmsCIEXYZ) output, wOut); + + return output + (sizeof(cmsCIEXYZ) + T_EXTRA(Info ->OutputFormat) * sizeof(double)); + } +} + + + +static +LPBYTE PackInkDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + double* Inks = (double*) output; + int nChan = T_CHANNELS(Info -> OutputFormat); + int i; + + if (T_PLANAR(Info -> OutputFormat)) { + + for (i=0; i < nChan; i++) { + + Inks[i*Info ->StrideOut] = wOut[i] / 655.35; + } + + return output + sizeof(double); + } + else { + + for (i=0; i < nChan; i++) { + + Inks[i] = wOut[i] / 655.35; + } + + + return output + (nChan + T_EXTRA(Info ->OutputFormat)) * sizeof(double); + } + +} + + +static +LPBYTE PackDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output) +{ + double* Inks = (double*) output; + int nChan = T_CHANNELS(Info -> OutputFormat); + int i; + + + if (T_PLANAR(Info -> OutputFormat)) { + + for (i=0; i < nChan; i++) { + + Inks[i*Info ->StrideOut] = wOut[i] / 65535.0; + } + + return output + sizeof(double); + + } + else { + for (i=0; i < nChan; i++) { + + Inks[i] = wOut[i] / 65535.0; + } + + return output + (nChan + T_EXTRA(Info ->OutputFormat)) * sizeof(double); + } + +} + + +// choose routine from Input identifier + +_cmsFIXFN _cmsIdentifyInputFormat(_LPcmsTRANSFORM xform, DWORD dwInput) +{ + _cmsFIXFN FromInput = NULL; + + + // Check Named Color + + if (xform) { + + if (xform ->InputProfile) { + + if (cmsGetDeviceClass(xform ->InputProfile) == icSigNamedColorClass) { + + if (dwInput != TYPE_NAMED_COLOR_INDEX) { + cmsSignalError(LCMS_ERRC_ABORTED, "Named color needs TYPE_NAMED_COLOR_INDEX"); + return NULL; + } + } + + } + } + + // Unencoded modes + + if (T_BYTES(dwInput) == 0) { + + switch (T_COLORSPACE(dwInput)) { + + case PT_Lab: + FromInput = UnrollLabDouble; + break; + case PT_XYZ: + FromInput = UnrollXYZDouble; + break; + + // 0.0 .. 1.0 range + + case PT_GRAY: + case PT_RGB: + case PT_YCbCr: + case PT_YUV: + case PT_YUVK: + case PT_HSV: + case PT_HLS: + case PT_Yxy: + if (T_CHANNELS(dwInput) == 1) + FromInput = UnrollDouble1Chan; + else + FromInput = UnrollDouble; + break; + + // Inks (%) 0.0 .. 100.0 + + default: + FromInput = UnrollInkDouble; + break; + } + + } + else { + + if (T_PLANAR(dwInput)) { + + switch (T_BYTES(dwInput)) { + + case 1: + FromInput = UnrollPlanarBytes; + break; + + case 2: + if (T_ENDIAN16(dwInput)) + FromInput = UnrollPlanarWordsBigEndian; + else + FromInput = UnrollPlanarWords; + break; + + default:; + } + } + else { + + switch (T_BYTES(dwInput)) { + + case 1: // 1 byte per channel + + switch (T_CHANNELS(dwInput) + T_EXTRA(dwInput)) { + + case 1: if (T_FLAVOR(dwInput)) + FromInput = Unroll1ByteReversed; + else + FromInput = Unroll1Byte; + break; + + case 2: if (T_SWAPFIRST(dwInput)) + FromInput = Unroll2ByteSwapFirst; + else + FromInput = Unroll2Byte; + break; + + case 3: if (T_DOSWAP(dwInput)) + FromInput = Unroll3BytesSwap; + else { + if (T_EXTRA(dwInput) == 2) + FromInput = Unroll1ByteSkip2; + else + if (T_COLORSPACE(dwInput) == PT_Lab) + FromInput = Unroll3BytesLab; + else + FromInput = Unroll3Bytes; + } + break; + case 4: + // TODO: ALab8 must be fixed to match v2 encoding + + if (T_DOSWAP(dwInput)) { + if (T_SWAPFIRST(dwInput)) + + FromInput = Unroll4BytesSwapSwapFirst; + else + FromInput = Unroll4BytesSwap; + } + else { + if (T_SWAPFIRST(dwInput)) + FromInput = Unroll4BytesSwapFirst; + else { + if (T_FLAVOR(dwInput)) + FromInput = Unroll4BytesReverse; + else + FromInput = Unroll4Bytes; + } + } + break; + + + case 5: + case 6: + case 7: + case 8: + if (!T_DOSWAP(dwInput) && !T_SWAPFIRST(dwInput)) + FromInput = UnrollAnyBytes; + break; + + + default:; + } + break; + + + case 2: // 1 word per channel + + switch (T_CHANNELS(dwInput) + T_EXTRA(dwInput)) + { + case 1: if (T_ENDIAN16(dwInput)) + FromInput = Unroll1WordBigEndian; + else + if (T_FLAVOR(dwInput)) + FromInput = Unroll1WordReversed; + else + FromInput = Unroll1Word; + break; + + case 2: if (T_ENDIAN16(dwInput)) + FromInput = Unroll2WordBigEndian; + else { + if (T_SWAPFIRST(dwInput)) + FromInput = Unroll2WordSwapFirst; + else + FromInput = Unroll2Word; + } + break; + + case 3: if (T_DOSWAP(dwInput)) { + if (T_ENDIAN16(dwInput)) + FromInput = Unroll3WordsSwapBigEndian; + else + FromInput = Unroll3WordsSwap; + } + else { + if (T_ENDIAN16(dwInput)) + FromInput = Unroll3WordsBigEndian; + else + FromInput = Unroll3Words; + } + break; + + case 4: if (T_DOSWAP(dwInput)) { + + if (T_ENDIAN16(dwInput)) + FromInput = Unroll4WordsSwapBigEndian; + else { + + if (T_SWAPFIRST(dwInput)) + FromInput = Unroll4WordsSwapSwapFirst; + else + FromInput = Unroll4WordsSwap; + + } + + } + else { + + if (T_EXTRA(dwInput) == 3) + FromInput = Unroll1WordSkip3; + else + + if (T_ENDIAN16(dwInput)) { + + if (T_FLAVOR(dwInput)) + FromInput = Unroll4WordsBigEndianReverse; + else + FromInput = Unroll4WordsBigEndian; + } + else { + if (T_SWAPFIRST(dwInput)) + FromInput = Unroll4WordsSwapFirst; + else { + if (T_FLAVOR(dwInput)) + FromInput = Unroll4WordsReverse; + else + FromInput = Unroll4Words; + } + } + } + break; + + + case 5: + case 6: + case 7: + case 8: + if (!T_DOSWAP(dwInput) && !T_SWAPFIRST(dwInput)) + FromInput = UnrollAnyWords; + break; + + } + break; + + default:; + } + } + } + + + if (!FromInput) + cmsSignalError(LCMS_ERRC_ABORTED, "Unknown input format"); + + return FromInput; +} + +// choose routine from Input identifier + +_cmsFIXFN _cmsIdentifyOutputFormat(_LPcmsTRANSFORM xform, DWORD dwOutput) +{ + _cmsFIXFN ToOutput = NULL; + + + if (T_BYTES(dwOutput) == 0) { + + switch (T_COLORSPACE(dwOutput)) { + + case PT_Lab: + ToOutput = PackLabDouble; + break; + case PT_XYZ: + ToOutput = PackXYZDouble; + break; + + // 0.0 .. 1.0 range + case PT_GRAY: + case PT_RGB: + case PT_YCbCr: + case PT_YUV: + case PT_YUVK: + case PT_HSV: + case PT_HLS: + case PT_Yxy: + ToOutput = PackDouble; + break; + + // Inks (%) 0.0 .. 100.0 + + default: + ToOutput = PackInkDouble; + break; + } + + } + else + + if (T_PLANAR(dwOutput)) { + + switch (T_BYTES(dwOutput)) { + + case 1: ToOutput = PackPlanarBytes; + break; + + case 2:if (!T_ENDIAN16(dwOutput)) + ToOutput = PackPlanarWords; + break; + + default:; + } + } + else { + + switch (T_BYTES(dwOutput)) { + + case 1: + switch (T_CHANNELS(dwOutput)) + { + case 1: + if (T_DITHER(dwOutput)) + ToOutput = PackNBytesDither; + else + ToOutput = Pack1Byte; + if (T_EXTRA(dwOutput) == 1) { + if (T_SWAPFIRST(dwOutput)) + ToOutput = Pack1ByteAndSkip1SwapFirst; + else + ToOutput = Pack1ByteAndSkip1; + } + break; + + case 3: + switch (T_EXTRA(dwOutput)) { + + case 0: if (T_DOSWAP(dwOutput)) + ToOutput = Pack3BytesSwap; + else + if (T_COLORSPACE(dwOutput) == PT_Lab) + ToOutput = Pack3BytesLab; + else { + if (T_DITHER(dwOutput)) + ToOutput = PackNBytesDither; + else + ToOutput = Pack3Bytes; + } + break; + + case 1: // TODO: ALab8 should be handled here + + if (T_DOSWAP(dwOutput)) { + + if (T_SWAPFIRST(dwOutput)) + ToOutput = Pack3BytesAndSkip1SwapSwapFirst; + else + ToOutput = Pack3BytesAndSkip1Swap; + } + else { + if (T_SWAPFIRST(dwOutput)) + ToOutput = Pack3BytesAndSkip1SwapFirst; + else + ToOutput = Pack3BytesAndSkip1; + } + break; + + default:; + } + break; + + case 4: if (T_EXTRA(dwOutput) == 0) { + + + if (T_DOSWAP(dwOutput)) { + + + if (T_SWAPFIRST(dwOutput)) { + ToOutput = Pack4BytesSwapSwapFirst; + } + else { + + if (T_DITHER(dwOutput)) { + ToOutput = PackNBytesSwapDither; + } + else { + ToOutput = Pack4BytesSwap; + } + } + } + else { + if (T_SWAPFIRST(dwOutput)) + ToOutput = Pack4BytesSwapFirst; + else { + + if (T_FLAVOR(dwOutput)) + ToOutput = Pack4BytesReverse; + else { + if (T_DITHER(dwOutput)) + ToOutput = PackNBytesDither; + else + ToOutput = Pack4Bytes; + } + } + } + } + else { + if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput)) + ToOutput = PackNBytes; + } + break; + + // Hexachrome separations. + case 6: if (T_EXTRA(dwOutput) == 0) { + + if( T_DOSWAP(dwOutput)) + ToOutput = Pack6BytesSwap; + else + ToOutput = Pack6Bytes; + } + else { + if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput)) + ToOutput = PackNBytes; + + } + break; + + case 2: + case 5: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + + if ((T_EXTRA(dwOutput) == 0) && (T_SWAPFIRST(dwOutput) == 0)) + { + if (T_DOSWAP(dwOutput)) + ToOutput = PackNBytesSwap; + else { + + if (T_DITHER(dwOutput)) + ToOutput = PackNBytesDither; + else + ToOutput = PackNBytes; + } + } + break; + + default:; + } + break; + + + case 2: + + switch (T_CHANNELS(dwOutput)) { + + case 1: + if (T_ENDIAN16(dwOutput)) + + ToOutput = Pack1WordBigEndian; + else + ToOutput = Pack1Word; + + if (T_EXTRA(dwOutput) == 1) { + + if (T_ENDIAN16(dwOutput)) + + ToOutput = Pack1WordAndSkip1BigEndian; + else { + if (T_SWAPFIRST(dwOutput)) + ToOutput = Pack1WordAndSkip1SwapFirst; + else + ToOutput = Pack1WordAndSkip1; + } + } + break; + + case 3: + + switch (T_EXTRA(dwOutput)) { + + case 0: + if (T_DOSWAP(dwOutput)) { + + if (T_ENDIAN16(dwOutput)) + + ToOutput = Pack3WordsSwapBigEndian; + else + ToOutput = Pack3WordsSwap; + } + else { + if (T_ENDIAN16(dwOutput)) + + ToOutput = Pack3WordsBigEndian; + else + ToOutput = Pack3Words; + } + break; + + case 1: if (T_DOSWAP(dwOutput)) { + + if (T_ENDIAN16(dwOutput)) + + ToOutput = Pack3WordsAndSkip1SwapBigEndian; + else { + if (T_SWAPFIRST(dwOutput)) + ToOutput = Pack3WordsAndSkip1SwapSwapFirst; + else + ToOutput = Pack3WordsAndSkip1Swap; + } + } + else { + if (T_ENDIAN16(dwOutput)) + ToOutput = Pack3WordsAndSkip1BigEndian; + else + ToOutput = Pack3WordsAndSkip1; + } + default:; + } + break; + + case 4: if (T_EXTRA(dwOutput) == 0) { + + if (T_DOSWAP(dwOutput)) { + + if (T_ENDIAN16(dwOutput)) + ToOutput = Pack4WordsSwapBigEndian; + else + ToOutput = Pack4WordsSwap; + } + else { + + if (T_ENDIAN16(dwOutput)) { + + if (T_FLAVOR(dwOutput)) + ToOutput = Pack4WordsBigEndianReverse; + else + ToOutput = Pack4WordsBigEndian; + } + else { + if (T_FLAVOR(dwOutput)) + ToOutput = Pack4WordsReverse; + else + ToOutput = Pack4Words; + } + } + } + else { + if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput)) + ToOutput = PackNWords; + } + break; + + case 6: if (T_EXTRA(dwOutput) == 0) { + + if (T_DOSWAP(dwOutput)) { + + if (T_ENDIAN16(dwOutput)) + ToOutput = Pack6WordsSwapBigEndian; + else + ToOutput = Pack6WordsSwap; + } + else { + + if (T_ENDIAN16(dwOutput)) + ToOutput = Pack6WordsBigEndian; + else + ToOutput = Pack6Words; + } + } + else { + if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput)) + ToOutput = PackNWords; + } + break; + + + case 2: + case 5: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: if ((T_EXTRA(dwOutput) == 0) && (T_SWAPFIRST(dwOutput) == 0)) { + + if (T_DOSWAP(dwOutput)) { + + if (T_ENDIAN16(dwOutput)) + ToOutput = PackNWordsSwapBigEndian; + else + ToOutput = PackNWordsSwap; + } + else { + + if (T_ENDIAN16(dwOutput)) + ToOutput = PackNWordsBigEndian; + else + ToOutput = PackNWords; + } + } + break; + + default:; + } + break; + + default:; + } + } + + if (!ToOutput) + cmsSignalError(LCMS_ERRC_ABORTED, "Unknown output format"); + + return ToOutput; +} + +// User formatters for (weird) cases not already included + +void LCMSEXPORT cmsSetUserFormatters(cmsHTRANSFORM hTransform, DWORD dwInput, cmsFORMATTER Input, + DWORD dwOutput, cmsFORMATTER Output) +{ + _LPcmsTRANSFORM xform = (_LPcmsTRANSFORM) (LPSTR) hTransform; + + if (Input != NULL) { + xform ->FromInput = (_cmsFIXFN) Input; + xform ->InputFormat = dwInput; + } + + if (Output != NULL) { + xform ->ToOutput = (_cmsFIXFN) Output; + xform ->OutputFormat = dwOutput; + } + +} + +void LCMSEXPORT cmsGetUserFormatters(cmsHTRANSFORM hTransform, + LPDWORD InputFormat, cmsFORMATTER* Input, + LPDWORD OutputFormat, cmsFORMATTER* Output) +{ + _LPcmsTRANSFORM xform = (_LPcmsTRANSFORM) (LPSTR) hTransform; + + if (Input) *Input = (cmsFORMATTER) xform ->FromInput; + if (InputFormat) *InputFormat = xform -> InputFormat; + if (Output) *Output = (cmsFORMATTER) xform ->ToOutput; + if (OutputFormat) *OutputFormat = xform -> OutputFormat; +} + + +// Change format of yet existing transform. No colorspace checking is performed + +void LCMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform, + DWORD dwInputFormat, + DWORD dwOutputFormat) +{ + + cmsSetUserFormatters(hTransform, + dwInputFormat, + (cmsFORMATTER) _cmsIdentifyInputFormat((_LPcmsTRANSFORM) hTransform, dwInputFormat), + dwOutputFormat, + (cmsFORMATTER) _cmsIdentifyOutputFormat((_LPcmsTRANSFORM) hTransform, dwOutputFormat)); +} diff --git a/icc2ps/cmspcs.c b/icc2ps/cmspcs.c new file mode 100644 index 0000000..2864418 --- /dev/null +++ b/icc2ps/cmspcs.c @@ -0,0 +1,601 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// inter PCS conversions XYZ <-> CIE L* a* b* + +#include "lcms.h" + +/* + + + CIE 15:2004 CIELab is defined as: + + L* = 116*f(Y/Yn) - 16 0 <= L* <= 100 + a* = 500*[f(X/Xn) - f(Y/Yn)] + b* = 200*[f(Y/Yn) - f(Z/Zn)] + + and + + f(t) = t^(1/3) 1 >= t > (24/116)^3 + (841/108)*t + (16/116) 0 <= t <= (24/116)^3 + + + Reverse transform is: + + X = Xn*[a* / 500 + (L* + 16) / 116] ^ 3 if (X/Xn) > (24/116) + = Xn*(a* / 500 + L* / 116) / 7.787 if (X/Xn) <= (24/116) + + + + Following ICC. PCS in Lab is coded as: + + 8 bit Lab PCS: + + L* 0..100 into a 0..ff byte. + a* t + 128 range is -128.0 +127.0 + b* + + 16 bit Lab PCS: + + L* 0..100 into a 0..ff00 word. + a* t + 128 range is -128.0 +127.9961 + b* + + + We are always playing with 16 bits-data, so I will ignore the + 8-bits encoding scheme. + + +Interchange Space Component Actual Range Encoded Range +CIE XYZ X 0 -> 1.99997 0x0000 -> 0xffff +CIE XYZ Y 0 -> 1.99997 0x0000 -> 0xffff +CIE XYZ Z 0 -> 1.99997 0x0000 -> 0xffff + +Version 2,3 +----------- + +CIELAB (16 bit) L* 0 -> 100.0 0x0000 -> 0xff00 +CIELAB (16 bit) a* -128.0 -> +127.996 0x0000 -> 0x8000 -> 0xffff +CIELAB (16 bit) b* -128.0 -> +127.996 0x0000 -> 0x8000 -> 0xffff + + +Version 4 +--------- + +CIELAB (16 bit) L* 0 -> 100.0 0x0000 -> 0xffff +CIELAB (16 bit) a* -128.0 -> +127 0x0000 -> 0x8080 -> 0xffff +CIELAB (16 bit) b* -128.0 -> +127 0x0000 -> 0x8080 -> 0xffff + +*/ + + + + +// On most modern computers, D > 4 M (i.e. a division takes more than 4 +// multiplications worth of time), so it is probably preferable to compute +// a 24 bit result directly. + +// #define ITERATE 1 + +static +float CubeRoot(float x) +{ + float fr, r; + int ex, shx; + + /* Argument reduction */ + fr = (float) frexp(x, &ex); /* separate into mantissa and exponent */ + shx = ex % 3; + + if (shx > 0) + shx -= 3; /* compute shx such that (ex - shx) is divisible by 3 */ + + ex = (ex - shx) / 3; /* exponent of cube root */ + fr = (float) ldexp(fr, shx); + + /* 0.125 <= fr < 1.0 */ + +#ifdef ITERATE + /* Compute seed with a quadratic approximation */ + + fr = (-0.46946116F * fr + 1.072302F) * fr + 0.3812513F;/* 0.5<=fr<1 */ + r = ldexp(fr, ex); /* 6 bits of precision */ + + /* Newton-Raphson iterations */ + + r = (float)(2.0/3.0) * r + (float)(1.0/3.0) * x / (r * r); /* 12 bits */ + r = (float)(2.0/3.0) * r + (float)(1.0/3.0) * x / (r * r); /* 24 bits */ +#else /* ITERATE */ + + /* Use quartic rational polynomial with error < 2^(-24) */ + + fr = (float) (((((45.2548339756803022511987494 * fr + + 192.2798368355061050458134625) * fr + + 119.1654824285581628956914143) * fr + + 13.43250139086239872172837314) * fr + + 0.1636161226585754240958355063) + / + ((((14.80884093219134573786480845 * fr + + 151.9714051044435648658557668) * fr + + 168.5254414101568283957668343) * fr + + 33.9905941350215598754191872) * fr + + 1.0)); + r = (float) ldexp(fr, ex); /* 24 bits of precision */ +#endif + return r; +} + +static +double f(double t) +{ + + const double Limit = (24.0/116.0) * (24.0/116.0) * (24.0/116.0); + + if (t <= Limit) + return (841.0/108.0) * t + (16.0/116.0); + else + return CubeRoot((float) t); +} + + +static +double f_1(double t) +{ + const double Limit = (24.0/116.0); + + if (t <= Limit) + { + double tmp; + + tmp = (108.0/841.0) * (t - (16.0/116.0)); + if (tmp <= 0.0) return 0.0; + else return tmp; + } + + return t * t * t; +} + + + +void LCMSEXPORT cmsXYZ2Lab(LPcmsCIEXYZ WhitePoint, LPcmsCIELab Lab, const cmsCIEXYZ* xyz) +{ + double fx, fy, fz; + + if (xyz -> X == 0 && xyz -> Y == 0 && xyz -> Z == 0) + { + Lab -> L = 0; + Lab -> a = 0; + Lab -> b = 0; + return; + } + + if (WhitePoint == NULL) + WhitePoint = cmsD50_XYZ(); + + fx = f(xyz->X / WhitePoint->X); + fy = f(xyz->Y / WhitePoint->Y); + fz = f(xyz->Z / WhitePoint->Z); + + Lab->L = 116.0* fy - 16.; + + Lab->a = 500.0*(fx - fy); + Lab->b = 200.0*(fy - fz); +} + + + +void cmsXYZ2LabEncoded(WORD XYZ[3], WORD Lab[3]) +{ + Fixed32 X, Y, Z; + double x, y, z, L, a, b; + double fx, fy, fz; + Fixed32 wL, wa, wb; + + X = (Fixed32) XYZ[0] << 1; + Y = (Fixed32) XYZ[1] << 1; + Z = (Fixed32) XYZ[2] << 1; + + + if (X==0 && Y==0 && Z==0) { + + Lab[0] = 0; + Lab[1] = Lab[2] = 0x8000; + return; + } + + // PCS is in D50 + + + x = FIXED_TO_DOUBLE(X) / D50X; + y = FIXED_TO_DOUBLE(Y) / D50Y; + z = FIXED_TO_DOUBLE(Z) / D50Z; + + + fx = f(x); + fy = f(y); + fz = f(z); + + L = 116.* fy - 16.; + + a = 500.*(fx - fy); + b = 200.*(fy - fz); + + a += 128.; + b += 128.; + + wL = (int) (L * 652.800 + .5); + wa = (int) (a * 256.0 + .5); + wb = (int) (b * 256.0 + .5); + + + Lab[0] = Clamp_L(wL); + Lab[1] = Clamp_ab(wa); + Lab[2] = Clamp_ab(wb); + + +} + + + + + + +void LCMSEXPORT cmsLab2XYZ(LPcmsCIEXYZ WhitePoint, LPcmsCIEXYZ xyz, const cmsCIELab* Lab) +{ + double x, y, z; + + if (Lab -> L <= 0) { + xyz -> X = 0; + xyz -> Y = 0; + xyz -> Z = 0; + return; + } + + + if (WhitePoint == NULL) + WhitePoint = cmsD50_XYZ(); + + y = (Lab-> L + 16.0) / 116.0; + x = y + 0.002 * Lab -> a; + z = y - 0.005 * Lab -> b; + + xyz -> X = f_1(x) * WhitePoint -> X; + xyz -> Y = f_1(y) * WhitePoint -> Y; + xyz -> Z = f_1(z) * WhitePoint -> Z; + +} + + + +void cmsLab2XYZEncoded(WORD Lab[3], WORD XYZ[3]) +{ + double L, a, b; + double X, Y, Z, x, y, z; + + + L = ((double) Lab[0] * 100.0) / 65280.0; + if (L==0.0) { + + XYZ[0] = 0; XYZ[1] = 0; XYZ[2] = 0; + return; + } + + a = ((double) Lab[1] / 256.0) - 128.0; + b = ((double) Lab[2] / 256.0) - 128.0; + + y = (L + 16.) / 116.0; + x = y + 0.002 * a; + z = y - 0.005 * b; + + X = f_1(x) * D50X; + Y = f_1(y) * D50Y; + Z = f_1(z) * D50Z; + + // Convert to 1.15 fixed format PCS + + + XYZ[0] = _cmsClampWord((int) floor(X * 32768.0 + 0.5)); + XYZ[1] = _cmsClampWord((int) floor(Y * 32768.0 + 0.5)); + XYZ[2] = _cmsClampWord((int) floor(Z * 32768.0 + 0.5)); + + +} + +static +double L2float3(WORD v) +{ + Fixed32 fix32; + + fix32 = (Fixed32) v; + return (double) fix32 / 652.800; +} + + +// the a/b part + +static +double ab2float3(WORD v) +{ + Fixed32 fix32; + + fix32 = (Fixed32) v; + return ((double) fix32/256.0)-128.0; +} + +static +WORD L2Fix3(double L) +{ + return (WORD) (L * 652.800 + 0.5); +} + +static +WORD ab2Fix3(double ab) +{ + return (WORD) ((ab + 128.0) * 256.0 + 0.5); +} + + +// ICC 4.0 -- ICC has changed PCS Lab encoding. + +static +WORD L2Fix4(double L) +{ + return (WORD) (L * 655.35 + 0.5); +} + +static +WORD ab2Fix4(double ab) +{ + return (WORD) ((ab + 128.0) * 257.0 + 0.5); +} + +static +double L2float4(WORD v) +{ + Fixed32 fix32; + + fix32 = (Fixed32) v; + return (double) fix32 / 655.35; +} + + +// the a/b part + +static +double ab2float4(WORD v) +{ + Fixed32 fix32; + + fix32 = (Fixed32) v; + return ((double) fix32/257.0)-128.0; +} + + +void LCMSEXPORT cmsLabEncoded2Float(LPcmsCIELab Lab, const WORD wLab[3]) +{ + Lab->L = L2float3(wLab[0]); + Lab->a = ab2float3(wLab[1]); + Lab->b = ab2float3(wLab[2]); +} + + +void LCMSEXPORT cmsLabEncoded2Float4(LPcmsCIELab Lab, const WORD wLab[3]) +{ + Lab->L = L2float4(wLab[0]); + Lab->a = ab2float4(wLab[1]); + Lab->b = ab2float4(wLab[2]); +} + +static +double Clamp_L_double(double L) +{ + if (L < 0) L = 0; + if (L > 100) L = 100; + + return L; +} + + +static +double Clamp_ab_double(double ab) +{ + if (ab < -128) ab = -128.0; + if (ab > +127.9961) ab = +127.9961; + + return ab; +} + +void LCMSEXPORT cmsFloat2LabEncoded(WORD wLab[3], const cmsCIELab* fLab) +{ + cmsCIELab Lab; + + + Lab.L = Clamp_L_double(fLab ->L); + Lab.a = Clamp_ab_double(fLab ->a); + Lab.b = Clamp_ab_double(fLab ->b); + + wLab[0] = L2Fix3(Lab.L); + wLab[1] = ab2Fix3(Lab.a); + wLab[2] = ab2Fix3(Lab.b); +} + + +void LCMSEXPORT cmsFloat2LabEncoded4(WORD wLab[3], const cmsCIELab* fLab) +{ + cmsCIELab Lab; + + + Lab.L = fLab ->L; + Lab.a = fLab ->a; + Lab.b = fLab ->b; + + + if (Lab.L < 0) Lab.L = 0; + if (Lab.L > 100.) Lab.L = 100.; + + if (Lab.a < -128.) Lab.a = -128.; + if (Lab.a > 127.) Lab.a = 127.; + if (Lab.b < -128.) Lab.b = -128.; + if (Lab.b > 127.) Lab.b = 127.; + + + wLab[0] = L2Fix4(Lab.L); + wLab[1] = ab2Fix4(Lab.a); + wLab[2] = ab2Fix4(Lab.b); +} + + + + +void LCMSEXPORT cmsLab2LCh(LPcmsCIELCh LCh, const cmsCIELab* Lab) +{ + double a, b; + + LCh -> L = Clamp_L_double(Lab -> L); + + a = Clamp_ab_double(Lab -> a); + b = Clamp_ab_double(Lab -> b); + + LCh -> C = pow(a * a + b * b, 0.5); + + if (a == 0 && b == 0) + LCh -> h = 0; + else + LCh -> h = atan2(b, a); + + + LCh -> h *= (180. / M_PI); + + + while (LCh -> h >= 360.) // Not necessary, but included as a check. + LCh -> h -= 360.; + + while (LCh -> h < 0) + LCh -> h += 360.; + +} + + + + +void LCMSEXPORT cmsLCh2Lab(LPcmsCIELab Lab, const cmsCIELCh* LCh) +{ + + double h = (LCh -> h * M_PI) / 180.0; + + Lab -> L = Clamp_L_double(LCh -> L); + Lab -> a = Clamp_ab_double(LCh -> C * cos(h)); + Lab -> b = Clamp_ab_double(LCh -> C * sin(h)); + +} + + + + + +// In XYZ All 3 components are encoded using 1.15 fixed point + +static +WORD XYZ2Fix(double d) +{ + return (WORD) floor(d * 32768.0 + 0.5); +} + + +void LCMSEXPORT cmsFloat2XYZEncoded(WORD XYZ[3], const cmsCIEXYZ* fXYZ) +{ + cmsCIEXYZ xyz; + + xyz.X = fXYZ -> X; + xyz.Y = fXYZ -> Y; + xyz.Z = fXYZ -> Z; + + + // Clamp to encodeable values. + // 1.99997 is reserved as out-of-gamut marker + + + if (xyz.Y <= 0) { + + xyz.X = 0; + xyz.Y = 0; + xyz.Z = 0; + } + + + if (xyz.X > 1.99996) + xyz.X = 1.99996; + + if (xyz.X < 0) + xyz.X = 0; + + if (xyz.Y > 1.99996) + xyz.Y = 1.99996; + + if (xyz.Y < 0) + xyz.Y = 0; + + + if (xyz.Z > 1.99996) + xyz.Z = 1.99996; + + if (xyz.Z < 0) + xyz.Z = 0; + + + + XYZ[0] = XYZ2Fix(xyz.X); + XYZ[1] = XYZ2Fix(xyz.Y); + XYZ[2] = XYZ2Fix(xyz.Z); + +} + + +// To convert from Fixed 1.15 point to double + +static +double XYZ2float(WORD v) +{ + Fixed32 fix32; + + // From 1.15 to 15.16 + + fix32 = v << 1; + + // From fixed 15.16 to double + + return FIXED_TO_DOUBLE(fix32); +} + + +void LCMSEXPORT cmsXYZEncoded2Float(LPcmsCIEXYZ fXYZ, const WORD XYZ[3]) +{ + + fXYZ -> X = XYZ2float(XYZ[0]); + fXYZ -> Y = XYZ2float(XYZ[1]); + fXYZ -> Z = XYZ2float(XYZ[2]); + +} + + + + diff --git a/icc2ps/cmsps2.c b/icc2ps/cmsps2.c new file mode 100644 index 0000000..6c352a7 --- /dev/null +++ b/icc2ps/cmsps2.c @@ -0,0 +1,1717 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +// Postscript level 2 operators + + + +#include "lcms.h" +#include +#include + +// PostScript ColorRenderingDictionary and ColorSpaceArray + +LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCSA(cmsHPROFILE hProfile, int Intent, LPVOID Buffer, DWORD dwBufferLen); +LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCRD(cmsHPROFILE hProfile, int Intent, LPVOID Buffer, DWORD dwBufferLen); +LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCRDEx(cmsHPROFILE hProfile, int Intent, DWORD dwFlags, LPVOID Buffer, DWORD dwBufferLen); +// -------------------------------------------------------------------- Implementation + +#define MAXPSCOLS 60 // Columns on tables + +/* + Implementation + -------------- + + PostScript does use XYZ as its internal PCS. But since PostScript + interpolation tables are limited to 8 bits, I use Lab as a way to + improve the accuracy, favoring perceptual results. So, for the creation + of each CRD, CSA the profiles are converted to Lab via a device + link between profile -> Lab or Lab -> profile. The PS code necessary to + convert Lab <-> XYZ is also included. + + + + Color Space Arrays (CSA) + ================================================================================== + + In order to obtain precission, code chooses between three ways to implement + the device -> XYZ transform. These cases identifies monochrome profiles (often + implemented as a set of curves), matrix-shaper and LUT-based. + + Monochrome + ----------- + + This is implemented as /CIEBasedA CSA. The prelinearization curve is + placed into /DecodeA section, and matrix equals to D50. Since here is + no interpolation tables, I do the conversion directly to XYZ + + NOTE: CLUT-based monochrome profiles are NOT supported. So, cmsFLAGS_MATRIXINPUT + flag is forced on such profiles. + + [ /CIEBasedA + << + /DecodeA { transfer function } bind + /MatrixA [D50] + /RangeLMN [ 0.0 D50X 0.0 D50Y 0.0 D50Z ] + /WhitePoint [D50] + /BlackPoint [BP] + /RenderingIntent (intent) + >> + ] + + On simpler profiles, the PCS is already XYZ, so no conversion is required. + + + Matrix-shaper based + ------------------- + + This is implemented both with /CIEBasedABC or /CIEBasedDEF on dependig + of profile implementation. Since here is no interpolation tables, I do + the conversion directly to XYZ + + + + [ /CIEBasedABC + << + /DecodeABC [ {transfer1} {transfer2} {transfer3} ] + /MatrixABC [Matrix] + /RangeLMN [ 0.0 D50X 0.0 D50Y 0.0 D50Z ] + /DecodeLMN [ { / 2} dup dup ] + /WhitePoint [D50] + /BlackPoint [BP] + /RenderingIntent (intent) + >> + ] + + + CLUT based + ---------- + + Lab is used in such cases. + + [ /CIEBasedDEF + << + /DecodeDEF [ ] + /Table [ p p p [<...>]] + /RangeABC [ 0 1 0 1 0 1] + /DecodeABC[ ] + /RangeLMN [ -0.236 1.254 0 1 -0.635 1.640 ] + % -128/500 1+127/500 0 1 -127/200 1+128/200 + /MatrixABC [ 1 1 1 1 0 0 0 0 -1] + /WhitePoint [D50] + /BlackPoint [BP] + /RenderingIntent (intent) + ] + + + Color Rendering Dictionaries (CRD) + ================================== + These are always implemented as CLUT, and always are using Lab. Since CRD are expected to + be used as resources, the code adds the definition as well. + + << + /ColorRenderingType 1 + /WhitePoint [ D50 ] + /BlackPoint [BP] + /MatrixPQR [ Bradford ] + /RangePQR [-0.125 1.375 -0.125 1.375 -0.125 1.375 ] + /TransformPQR [ + {4 index 3 get div 2 index 3 get mul exch pop exch pop exch pop exch pop } bind + {4 index 4 get div 2 index 4 get mul exch pop exch pop exch pop exch pop } bind + {4 index 5 get div 2 index 5 get mul exch pop exch pop exch pop exch pop } bind + ] + /MatrixABC <...> + /EncodeABC <...> + /RangeABC <.. used for XYZ -> Lab> + /EncodeLMN + /RenderTable [ p p p [<...>]] + + /RenderingIntent (Perceptual) + >> + /Current exch /ColorRendering defineresource pop + + + The following stages are used to convert from XYZ to Lab + -------------------------------------------------------- + + Input is given at LMN stage on X, Y, Z + + Encode LMN gives us f(X/Xn), f(Y/Yn), f(Z/Zn) + + /EncodeLMN [ + + { 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind + { 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind + { 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind + + ] + + + MatrixABC is used to compute f(Y/Yn), f(X/Xn) - f(Y/Yn), f(Y/Yn) - f(Z/Zn) + + | 0 1 0| + | 1 -1 0| + | 0 1 -1| + + /MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] + + EncodeABC finally gives Lab values. + + /EncodeABC [ + { 116 mul 16 sub 100 div } bind + { 500 mul 128 add 255 div } bind + { 200 mul 128 add 255 div } bind + ] + + The following stages are used to convert Lab to XYZ + ---------------------------------------------------- + + /RangeABC [ 0 1 0 1 0 1] + /DecodeABC [ { 100 mul 16 add 116 div } bind + { 255 mul 128 sub 500 div } bind + { 255 mul 128 sub 200 div } bind + ] + + /MatrixABC [ 1 1 1 1 0 0 0 0 -1] + /DecodeLMN [ + {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.964200 mul} bind + {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse } bind + {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.824900 mul} bind + ] + + +*/ + +/* + + PostScript algorithms discussion. + ========================================================================================================= + + 1D interpolation algorithm + + + 1D interpolation (float) + ------------------------ + + val2 = Domain * Value; + + cell0 = (int) floor(val2); + cell1 = (int) ceil(val2); + + rest = val2 - cell0; + + y0 = LutTable[cell0] ; + y1 = LutTable[cell1] ; + + y = y0 + (y1 - y0) * rest; + + + + PostScript code Stack + ================================================ + + { % v + + [array] % v tab + dup % v tab tab + length 1 sub % v tab dom + + 3 -1 roll % tab dom v + + mul % tab val2 + dup % tab val2 val2 + dup % tab val2 val2 val2 + floor cvi % tab val2 val2 cell0 + exch % tab val2 cell0 val2 + ceiling cvi % tab val2 cell0 cell1 + + 3 index % tab val2 cell0 cell1 tab + exch % tab val2 cell0 tab cell1 + get % tab val2 cell0 y1 + + 4 -1 roll % val2 cell0 y1 tab + 3 -1 roll % val2 y1 tab cell0 + get % val2 y1 y0 + + dup % val2 y1 y0 y0 + 3 1 roll % val2 y0 y1 y0 + + sub % val2 y0 (y1-y0) + 3 -1 roll % y0 (y1-y0) val2 + dup % y0 (y1-y0) val2 val2 + floor cvi % y0 (y1-y0) val2 floor(val2) + sub % y0 (y1-y0) rest + mul % y0 t1 + add % y + 65535 div % result + + } bind + + +*/ + +static icTagSignature Device2PCSTab[] = {icSigAToB0Tag, // Perceptual + icSigAToB1Tag, // Relative colorimetric + icSigAToB2Tag, // Saturation + icSigAToB1Tag }; // Absolute colorimetric + // (Relative/WhitePoint) + + +// --------------------------------------------------------------- Memory Stream +// +// This struct holds the memory block currently being write +// + +typedef struct { + LPBYTE Block; + LPBYTE Ptr; + DWORD dwMax; + DWORD dwUsed; + int MaxCols; + int Col; + int HasError; + + } MEMSTREAM, FAR* LPMEMSTREAM; + + +typedef struct { + LPLUT Lut; + LPMEMSTREAM m; + + int FirstComponent; + int SecondComponent; + + int bps; + const char* PreMaj; + const char* PostMaj; + const char* PreMin; + const char* PostMin; + + int lIsInput; // Handle L* encoding + int FixWhite; // Force mapping of pure white + + icColorSpaceSignature ColorSpace; // ColorSpace of profile + + + } SAMPLERCARGO, FAR* LPSAMPLERCARGO; + + +// Creates a ready to use memory stream +static +LPMEMSTREAM CreateMemStream(LPBYTE Buffer, DWORD dwMax, int MaxCols) +{ + LPMEMSTREAM m = (LPMEMSTREAM) _cmsMalloc(sizeof(MEMSTREAM)); + if (m == NULL) return NULL; + + ZeroMemory(m, sizeof(MEMSTREAM)); + + m -> Block = m -> Ptr = Buffer; + m -> dwMax = dwMax; + m -> dwUsed = 0; + m -> MaxCols = MaxCols; + m -> Col = 0; + m -> HasError = 0; + + return m; +} + + + +// Convert to byte +static +BYTE Word2Byte(WORD w) +{ + return (BYTE) floor((double) w / 257.0 + 0.5); +} + + +// Convert to byte (using ICC2 notation) + +static +BYTE L2Byte(WORD w) +{ + int ww = w + 0x0080; + + if (ww > 0xFFFF) return 0xFF; + + return (BYTE) ((WORD) (ww >> 8) & 0xFF); +} + +// Write a raw, uncooked byte. Check for space +static +void WriteRawByte(LPMEMSTREAM m, BYTE b) +{ + if (m -> dwUsed + 1 > m -> dwMax) { + m -> HasError = 1; + } + + if (!m ->HasError && m ->Block) { + *m ->Ptr++ = b; + } + + m -> dwUsed++; +} + +// Write a cooked byte +static +void WriteByte(LPMEMSTREAM m, BYTE b) +{ + static const BYTE Hex[] = "0123456789ABCDEF"; + BYTE c; + + c = Hex[(b >> 4) & 0x0f]; + WriteRawByte(m, c); + + c = Hex[b & 0x0f]; + WriteRawByte(m, c); + + m -> Col += 2; + + if (m -> Col > m -> MaxCols) { + + WriteRawByte(m, '\n'); + m -> Col = 0; + } + +} + +// Does write a formatted string. Guaranteed to be 2048 bytes at most. +static +void Writef(LPMEMSTREAM m, const char *frm, ...) +{ + va_list args; + LPBYTE pt; + BYTE Buffer[2048]; + + va_start(args, frm); + + vsnprintf((char*) Buffer, 2048, frm, args); + + for (pt = Buffer; *pt; pt++) { + + WriteRawByte(m, *pt); + } + + va_end(args); +} + + + +// ----------------------------------------------------------------- PostScript generation + + +// Removes offending Carriage returns +static +char* RemoveCR(const char* txt) +{ + static char Buffer[2048]; + char* pt; + + strncpy(Buffer, txt, 2047); + Buffer[2047] = 0; + for (pt = Buffer; *pt; pt++) + if (*pt == '\n' || *pt == '\r') *pt = ' '; + + return Buffer; + +} + +static +void EmitHeader(LPMEMSTREAM m, const char* Title, cmsHPROFILE hProfile) +{ + + time_t timer; + + time(&timer); + + Writef(m, "%%!PS-Adobe-3.0\n"); + Writef(m, "%%\n"); + Writef(m, "%% %s\n", Title); + Writef(m, "%% Source: %s\n", RemoveCR(cmsTakeProductName(hProfile))); + Writef(m, "%% Description: %s\n", RemoveCR(cmsTakeProductDesc(hProfile))); + Writef(m, "%% Created: %s", ctime(&timer)); // ctime appends a \n!!! + Writef(m, "%%\n"); + Writef(m, "%%%%BeginResource\n"); + +} + + +// Emits White & Black point. White point is always D50, Black point is the device +// Black point adapted to D50. + +static +void EmitWhiteBlackD50(LPMEMSTREAM m, LPcmsCIEXYZ BlackPoint) +{ + + Writef(m, "/BlackPoint [%f %f %f]\n", BlackPoint -> X, + BlackPoint -> Y, + BlackPoint -> Z); + + Writef(m, "/WhitePoint [%f %f %f]\n", cmsD50_XYZ()->X, + cmsD50_XYZ()->Y, + cmsD50_XYZ()->Z); +} + + +static +void EmitRangeCheck(LPMEMSTREAM m) +{ + Writef(m, "dup 0.0 lt { pop 0.0 } if " + "dup 1.0 gt { pop 1.0 } if "); + +} + +// Does write the intent + +static +void EmitIntent(LPMEMSTREAM m, int RenderingIntent) +{ + const char *intent; + + switch (RenderingIntent) { + + case INTENT_PERCEPTUAL: intent = "Perceptual"; break; + case INTENT_RELATIVE_COLORIMETRIC: intent = "RelativeColorimetric"; break; + case INTENT_ABSOLUTE_COLORIMETRIC: intent = "AbsoluteColorimetric"; break; + case INTENT_SATURATION: intent = "Saturation"; break; + + default: intent = "Undefined"; break; + } + + Writef(m, "/RenderingIntent (%s)\n", intent ); +} + +// +// Convert L* to Y +// +// Y = Yn*[ (L* + 16) / 116] ^ 3 if (L*) >= 6 / 29 +// = Yn*( L* / 116) / 7.787 if (L*) < 6 / 29 +// + +/* +static +void EmitL2Y(LPMEMSTREAM m) +{ + Writef(m, + "{ " + "100 mul 16 add 116 div " // (L * 100 + 16) / 116 + "dup 6 29 div ge " // >= 6 / 29 ? + "{ dup dup mul mul } " // yes, ^3 and done + "{ 4 29 div sub 108 841 div mul } " // no, slope limiting + "ifelse } bind "); +} +*/ + + +// Lab -> XYZ, see the discussion above + +static +void EmitLab2XYZ(LPMEMSTREAM m) +{ + Writef(m, "/RangeABC [ 0 1 0 1 0 1]\n"); + Writef(m, "/DecodeABC [\n"); + Writef(m, "{100 mul 16 add 116 div } bind\n"); + Writef(m, "{255 mul 128 sub 500 div } bind\n"); + Writef(m, "{255 mul 128 sub 200 div } bind\n"); + Writef(m, "]\n"); + Writef(m, "/MatrixABC [ 1 1 1 1 0 0 0 0 -1]\n"); + Writef(m, "/RangeLMN [ -0.236 1.254 0 1 -0.635 1.640 ]\n"); + Writef(m, "/DecodeLMN [\n"); + Writef(m, "{dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.964200 mul} bind\n"); + Writef(m, "{dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse } bind\n"); + Writef(m, "{dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.824900 mul} bind\n"); + Writef(m, "]\n"); +} + + + +// Outputs a table of words. It does use 16 bits + +static +void Emit1Gamma(LPMEMSTREAM m, LPWORD Table, int nEntries) +{ + int i; + double gamma; + + + if (nEntries <= 0) return; // Empty table + + // Suppress whole if identity + if (cmsIsLinear(Table, nEntries)) { + Writef(m, "{} "); + return; + } + + + // Check if is really an exponential. If so, emit "exp" + gamma = cmsEstimateGammaEx(Table, nEntries, 0.001); + if (gamma > 0) { + Writef(m, "{ %g exp } bind ", gamma); + return; + } + + Writef(m, "{ "); + + // Bounds check + EmitRangeCheck(m); + + // Emit intepolation code + + // PostScript code Stack + // =============== ======================== + // v + Writef(m, " ["); + + // TODO: Check for endianess!!! + + for (i=0; i < nEntries; i++) { + Writef(m, "%d ", Table[i]); + } + + Writef(m, "] "); // v tab + + Writef(m, "dup "); // v tab tab + Writef(m, "length 1 sub "); // v tab dom + Writef(m, "3 -1 roll "); // tab dom v + Writef(m, "mul "); // tab val2 + Writef(m, "dup "); // tab val2 val2 + Writef(m, "dup "); // tab val2 val2 val2 + Writef(m, "floor cvi "); // tab val2 val2 cell0 + Writef(m, "exch "); // tab val2 cell0 val2 + Writef(m, "ceiling cvi "); // tab val2 cell0 cell1 + Writef(m, "3 index "); // tab val2 cell0 cell1 tab + Writef(m, "exch "); // tab val2 cell0 tab cell1 + Writef(m, "get "); // tab val2 cell0 y1 + Writef(m, "4 -1 roll "); // val2 cell0 y1 tab + Writef(m, "3 -1 roll "); // val2 y1 tab cell0 + Writef(m, "get "); // val2 y1 y0 + Writef(m, "dup "); // val2 y1 y0 y0 + Writef(m, "3 1 roll "); // val2 y0 y1 y0 + Writef(m, "sub "); // val2 y0 (y1-y0) + Writef(m, "3 -1 roll "); // y0 (y1-y0) val2 + Writef(m, "dup "); // y0 (y1-y0) val2 val2 + Writef(m, "floor cvi "); // y0 (y1-y0) val2 floor(val2) + Writef(m, "sub "); // y0 (y1-y0) rest + Writef(m, "mul "); // y0 t1 + Writef(m, "add "); // y + Writef(m, "65535 div "); // result + + Writef(m, " } bind "); +} + + +// Compare gamma table + +static +LCMSBOOL GammaTableEquals(LPWORD g1, LPWORD g2, int nEntries) +{ + return memcmp(g1, g2, nEntries* sizeof(WORD)) == 0; +} + + +// Does write a set of gamma curves + +static +void EmitNGamma(LPMEMSTREAM m, int n, LPWORD g[], int nEntries) +{ + int i; + + for( i=0; i < n; i++ ) + { + if (i > 0 && GammaTableEquals(g[i-1], g[i], nEntries)) { + + Writef(m, "dup "); + } + else { + Emit1Gamma(m, g[i], nEntries); + } + } + +} + + +// Check whatever a profile has CLUT tables (only on input) + +static +LCMSBOOL IsLUTbased(cmsHPROFILE hProfile, int Intent) +{ + icTagSignature Tag; + + // Check if adequate tag is present + Tag = Device2PCSTab[Intent]; + + if (cmsIsTag(hProfile, Tag)) return 1; + + // If not present, revert to default (perceptual) + Tag = icSigAToB0Tag; + + // If no tag present, try matrix-shaper + return cmsIsTag(hProfile, Tag); +} + + + +// Following code dumps a LUT onto memory stream + + +// This is the sampler. Intended to work in SAMPLER_INSPECT mode, +// that is, the callback will be called for each knot with +// +// In[] The grid location coordinates, normalized to 0..ffff +// Out[] The LUT values, normalized to 0..ffff +// +// Returning a value other than 0 does terminate the sampling process +// +// Each row contains LUT values for all but first component. So, I +// detect row changing by keeping a copy of last value of first +// component. -1 is used to mark begining of whole block. + +static +int OutputValueSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + LPSAMPLERCARGO sc = (LPSAMPLERCARGO) Cargo; + unsigned int i; + + + if (sc -> FixWhite) { + + if (In[0] == 0xFFFF) { // Only in L* = 100, ab = [-8..8] + + if ((In[1] >= 0x7800 && In[1] <= 0x8800) && + (In[2] >= 0x7800 && In[2] <= 0x8800)) { + + WORD* Black; + WORD* White; + int nOutputs; + + if (!_cmsEndPointsBySpace(sc ->ColorSpace, &White, &Black, &nOutputs)) + return 0; + + for (i=0; i < (unsigned int) nOutputs; i++) + Out[i] = White[i]; + } + + + } + } + + + // Hadle the parenthesis on rows + + if (In[0] != sc ->FirstComponent) { + + if (sc ->FirstComponent != -1) { + + Writef(sc ->m, sc ->PostMin); + sc ->SecondComponent = -1; + Writef(sc ->m, sc ->PostMaj); + } + + // Begin block + sc->m->Col = 0; + + Writef(sc ->m, sc ->PreMaj); + sc ->FirstComponent = In[0]; + } + + + if (In[1] != sc ->SecondComponent) { + + if (sc ->SecondComponent != -1) { + + Writef(sc ->m, sc ->PostMin); + } + + Writef(sc ->m, sc ->PreMin); + sc ->SecondComponent = In[1]; + } + + + + // Dump table. Could be Word or byte based on + // depending on bps member (16 bps mode is not currently + // being used at all, but is here for future ampliations) + + for (i=0; i < sc -> Lut ->OutputChan; i++) { + + WORD wWordOut = Out[i]; + + if (sc ->bps == 8) { + + // Value as byte + BYTE wByteOut; + + // If is input, convert from Lab2 to Lab4 (just divide by 256) + + if (sc ->lIsInput) { + + + wByteOut = L2Byte(wWordOut); + } + else + wByteOut = Word2Byte(wWordOut); + + WriteByte(sc -> m, wByteOut); + } + else { + + // Value as word + WriteByte(sc -> m, (BYTE) (wWordOut & 0xFF)); + WriteByte(sc -> m, (BYTE) ((wWordOut >> 8) & 0xFF)); + } + } + + return 1; +} + +// Writes a LUT on memstream. Could be 8 or 16 bits based + +static +void WriteCLUT(LPMEMSTREAM m, LPLUT Lut, int bps, const char* PreMaj, + const char* PostMaj, + const char* PreMin, + const char* PostMin, + int lIsInput, + int FixWhite, + icColorSpaceSignature ColorSpace) +{ + unsigned int i; + SAMPLERCARGO sc; + + sc.FirstComponent = -1; + sc.SecondComponent = -1; + sc.Lut = Lut; + sc.m = m; + sc.bps = bps; + sc.PreMaj = PreMaj; + sc.PostMaj= PostMaj; + + sc.PreMin = PreMin; + sc.PostMin = PostMin; + sc.lIsInput = lIsInput; + sc.FixWhite = FixWhite; + sc.ColorSpace = ColorSpace; + + Writef(m, "["); + + for (i=0; i < Lut ->InputChan; i++) + Writef(m, " %d ", Lut ->cLutPoints); + + Writef(m, " [\n"); + + + + cmsSample3DGrid(Lut, OutputValueSampler, (LPVOID) &sc, SAMPLER_INSPECT); + + + Writef(m, PostMin); + Writef(m, PostMaj); + Writef(m, "] "); + + + +} + + +// Dumps CIEBasedA Color Space Array + +static +int EmitCIEBasedA(LPMEMSTREAM m, LPWORD Tab, int nEntries, LPcmsCIEXYZ BlackPoint) +{ + + Writef(m, "[ /CIEBasedA\n"); + Writef(m, " <<\n"); + + Writef(m, "/DecodeA "); + + Emit1Gamma(m,Tab, nEntries); + + Writef(m, " \n"); + + Writef(m, "/MatrixA [ 0.9642 1.0000 0.8249 ]\n"); + Writef(m, "/RangeLMN [ 0.0 0.9642 0.0 1.0000 0.0 0.8249 ]\n"); + + EmitWhiteBlackD50(m, BlackPoint); + EmitIntent(m, INTENT_PERCEPTUAL); + + Writef(m, ">>\n"); + Writef(m, "]\n"); + + return 1; +} + + +// Dumps CIEBasedABC Color Space Array + +static +int EmitCIEBasedABC(LPMEMSTREAM m, LPWORD L[], int nEntries, LPWMAT3 Matrix, LPcmsCIEXYZ BlackPoint) +{ + int i; + + Writef(m, "[ /CIEBasedABC\n"); + Writef(m, "<<\n"); + Writef(m, "/DecodeABC [ "); + + EmitNGamma(m, 3, L, nEntries); + + Writef(m, "]\n"); + + Writef(m, "/MatrixABC [ " ); + + for( i=0; i < 3; i++ ) { + + Writef(m, "%.6f %.6f %.6f ", + FIXED_TO_DOUBLE(Matrix->v[0].n[i]), + FIXED_TO_DOUBLE(Matrix->v[1].n[i]), + FIXED_TO_DOUBLE(Matrix->v[2].n[i])); + } + + + Writef(m, "]\n"); + + Writef(m, "/RangeLMN [ 0.0 0.9642 0.0 1.0000 0.0 0.8249 ]\n"); + + EmitWhiteBlackD50(m, BlackPoint); + EmitIntent(m, INTENT_PERCEPTUAL); + + Writef(m, ">>\n"); + Writef(m, "]\n"); + + + return 1; +} + + +static +int EmitCIEBasedDEF(LPMEMSTREAM m, LPLUT Lut, int Intent, LPcmsCIEXYZ BlackPoint) +{ + const char* PreMaj; + const char* PostMaj; + const char* PreMin, *PostMin; + + switch (Lut ->InputChan) { + case 3: + + Writef(m, "[ /CIEBasedDEF\n"); + PreMaj ="<"; + PostMaj= ">\n"; + PreMin = PostMin = ""; + break; + case 4: + Writef(m, "[ /CIEBasedDEFG\n"); + PreMaj = "["; + PostMaj = "]\n"; + PreMin = "<"; + PostMin = ">\n"; + break; + default: + return 0; + + } + + Writef(m, "<<\n"); + + if (Lut ->wFlags & LUT_HASTL1) { + + Writef(m, "/DecodeDEF [ "); + EmitNGamma(m, Lut ->InputChan, Lut ->L1, Lut ->CLut16params.nSamples); + Writef(m, "]\n"); + } + + + + if (Lut ->wFlags & LUT_HAS3DGRID) { + + Writef(m, "/Table "); + WriteCLUT(m, Lut, 8, PreMaj, PostMaj, PreMin, PostMin, TRUE, FALSE, (icColorSpaceSignature) 0); + Writef(m, "]\n"); + } + + EmitLab2XYZ(m); + EmitWhiteBlackD50(m, BlackPoint); + EmitIntent(m, Intent); + + Writef(m, " >>\n"); + Writef(m, "]\n"); + + + return 1; +} + +// Generates a curve from a gray profile + +static +LPGAMMATABLE ExtractGray2Y(cmsHPROFILE hProfile, int Intent) +{ + LPGAMMATABLE Out = cmsAllocGamma(256); + cmsHPROFILE hXYZ = cmsCreateXYZProfile(); + cmsHTRANSFORM xform = cmsCreateTransform(hProfile, TYPE_GRAY_8, hXYZ, TYPE_XYZ_DBL, Intent, cmsFLAGS_NOTPRECALC); + int i; + + for (i=0; i < 256; i++) { + + BYTE Gray = (BYTE) i; + cmsCIEXYZ XYZ; + + cmsDoTransform(xform, &Gray, &XYZ, 1); + + Out ->GammaTable[i] =_cmsClampWord((int) floor(XYZ.Y * 65535.0 + 0.5)); + } + + cmsDeleteTransform(xform); + cmsCloseProfile(hXYZ); + return Out; +} + + + +// Because PostScrip has only 8 bits in /Table, we should use +// a more perceptually uniform space... I do choose Lab. + +static +int WriteInputLUT(LPMEMSTREAM m, cmsHPROFILE hProfile, int Intent) +{ + cmsHPROFILE hLab; + cmsHTRANSFORM xform; + icColorSpaceSignature ColorSpace; + int nChannels; + DWORD InputFormat; + int rc; + cmsHPROFILE Profiles[2]; + cmsCIEXYZ BlackPointAdaptedToD50; + + // Does create a device-link based transform. + // The DeviceLink is next dumped as working CSA. + + hLab = cmsCreateLabProfile(NULL); + ColorSpace = cmsGetColorSpace(hProfile); + nChannels = _cmsChannelsOf(ColorSpace); + InputFormat = CHANNELS_SH(nChannels) | BYTES_SH(2); + + cmsDetectBlackPoint(&BlackPointAdaptedToD50, hProfile, Intent,LCMS_BPFLAGS_D50_ADAPTED); + + // Is a devicelink profile? + if (cmsGetDeviceClass(hProfile) == icSigLinkClass) { + + // if devicelink output already Lab, use it directly + + if (cmsGetPCS(hProfile) == icSigLabData) { + + xform = cmsCreateTransform(hProfile, InputFormat, NULL, + TYPE_Lab_DBL, Intent, 0); + } + else { + + // Nope, adjust output to Lab if possible + + Profiles[0] = hProfile; + Profiles[1] = hLab; + + xform = cmsCreateMultiprofileTransform(Profiles, 2, InputFormat, + TYPE_Lab_DBL, Intent, 0); + } + + + } + else { + + // This is a normal profile + xform = cmsCreateTransform(hProfile, InputFormat, hLab, + TYPE_Lab_DBL, Intent, 0); + } + + + + if (xform == NULL) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Cannot create transform Profile -> Lab"); + return 0; + } + + // Only 1, 3 and 4 channels are allowed + + switch (nChannels) { + + case 1: { + LPGAMMATABLE Gray2Y = ExtractGray2Y(hProfile, Intent); + EmitCIEBasedA(m, Gray2Y->GammaTable, Gray2Y ->nEntries, &BlackPointAdaptedToD50); + cmsFreeGamma(Gray2Y); + } + break; + + case 3: + case 4: { + LPLUT DeviceLink; + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) xform; + + if (v ->DeviceLink) + rc = EmitCIEBasedDEF(m, v->DeviceLink, Intent, &BlackPointAdaptedToD50); + else { + DeviceLink = _cmsPrecalculateDeviceLink(xform, 0); + rc = EmitCIEBasedDEF(m, DeviceLink, Intent, &BlackPointAdaptedToD50); + cmsFreeLUT(DeviceLink); + } + } + break; + + default: + + cmsSignalError(LCMS_ERRC_ABORTED, "Only 3, 4 channels supported for CSA. This profile has %d channels.", nChannels); + return 0; + } + + + cmsDeleteTransform(xform); + cmsCloseProfile(hLab); + return 1; +} + + + +// Does create CSA based on matrix-shaper. Allowed types are gray and RGB based + +static +int WriteInputMatrixShaper(LPMEMSTREAM m, cmsHPROFILE hProfile) +{ + icColorSpaceSignature ColorSpace; + LPMATSHAPER MatShaper; + int rc; + cmsCIEXYZ BlackPointAdaptedToD50; + + + ColorSpace = cmsGetColorSpace(hProfile); + MatShaper = cmsBuildInputMatrixShaper(hProfile); + + cmsDetectBlackPoint(&BlackPointAdaptedToD50, hProfile, INTENT_RELATIVE_COLORIMETRIC, LCMS_BPFLAGS_D50_ADAPTED); + + if (MatShaper == NULL) { + + cmsSignalError(LCMS_ERRC_ABORTED, "This profile is not suitable for input"); + return 0; + } + + if (ColorSpace == icSigGrayData) { + + rc = EmitCIEBasedA(m, MatShaper ->L[0], + MatShaper ->p16.nSamples, + &BlackPointAdaptedToD50); + + } + else + if (ColorSpace == icSigRgbData) { + + + rc = EmitCIEBasedABC(m, MatShaper->L, + MatShaper ->p16.nSamples, + &MatShaper ->Matrix, + &BlackPointAdaptedToD50); + } + else { + + cmsSignalError(LCMS_ERRC_ABORTED, "Profile is not suitable for CSA. Unsupported colorspace."); + return 0; + } + + cmsFreeMatShaper(MatShaper); + return rc; +} + + + +// Creates a PostScript color list from a named profile data. +// This is a HP extension, and it works in Lab instead of XYZ + +static +int WriteNamedColorCSA(LPMEMSTREAM m, cmsHPROFILE hNamedColor, int Intent) +{ + cmsHTRANSFORM xform; + cmsHPROFILE hLab; + int i, nColors; + char ColorName[32]; + + + hLab = cmsCreateLabProfile(NULL); + xform = cmsCreateTransform(hNamedColor, TYPE_NAMED_COLOR_INDEX, + hLab, TYPE_Lab_DBL, Intent, cmsFLAGS_NOTPRECALC); + if (xform == NULL) return 0; + + + Writef(m, "<<\n"); + Writef(m, "(colorlistcomment) (%s)\n", "Named color CSA"); + Writef(m, "(Prefix) [ (Pantone ) (PANTONE ) ]\n"); + Writef(m, "(Suffix) [ ( CV) ( CVC) ( C) ]\n"); + + nColors = cmsNamedColorCount(xform); + + + for (i=0; i < nColors; i++) { + + WORD In[1]; + cmsCIELab Lab; + + In[0] = (WORD) i; + + if (!cmsNamedColorInfo(xform, i, ColorName, NULL, NULL)) + continue; + + cmsDoTransform(xform, In, &Lab, 1); + Writef(m, " (%s) [ %.3f %.3f %.3f ]\n", ColorName, Lab.L, Lab.a, Lab.b); + } + + + + Writef(m, ">>\n"); + + cmsDeleteTransform(xform); + cmsCloseProfile(hLab); + return 1; +} + + +// Does create a Color Space Array on XYZ colorspace for PostScript usage + +DWORD LCMSEXPORT cmsGetPostScriptCSA(cmsHPROFILE hProfile, + int Intent, + LPVOID Buffer, DWORD dwBufferLen) +{ + + LPMEMSTREAM mem; + DWORD dwBytesUsed; + + // Set up the serialization engine + mem = CreateMemStream((LPBYTE) Buffer, dwBufferLen, MAXPSCOLS); + if (!mem) return 0; + + + // Is a named color profile? + if (cmsGetDeviceClass(hProfile) == icSigNamedColorClass) { + + if (!WriteNamedColorCSA(mem, hProfile, Intent)) { + + _cmsFree((void*) mem); + return 0; + } + } + else { + + + // Any profile class are allowed (including devicelink), but + // output (PCS) colorspace must be XYZ or Lab + icColorSpaceSignature ColorSpace = cmsGetPCS(hProfile); + + if (ColorSpace != icSigXYZData && + ColorSpace != icSigLabData) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Invalid output color space"); + _cmsFree((void*) mem); + return 0; + } + + // Is there any CLUT? + if (IsLUTbased(hProfile, Intent)) { + + // Yes, so handle as LUT-based + if (!WriteInputLUT(mem, hProfile, Intent)) { + + _cmsFree((void*) mem); + return 0; + } + } + else { + + // No, try Matrix-shaper (this only works on XYZ) + + if (!WriteInputMatrixShaper(mem, hProfile)) { + + _cmsFree((void*) mem); // Something went wrong + return 0; + } + } + } + + + // Done, keep memory usage + dwBytesUsed = mem ->dwUsed; + + // Get rid of memory stream + _cmsFree((void*) mem); + + // Finally, return used byte count + return dwBytesUsed; +} + +// ------------------------------------------------------ Color Rendering Dictionary (CRD) + + + +/* + + Black point compensation plus chromatic adaptation: + + Step 1 - Chromatic adaptation + ============================= + + WPout + X = ------- PQR + Wpin + + Step 2 - Black point compensation + ================================= + + (WPout - BPout)*X - WPout*(BPin - BPout) + out = --------------------------------------- + WPout - BPin + + + Algorithm discussion + ==================== + + TransformPQR(WPin, BPin, WPout, BPout, PQR) + + Wpin,etc= { Xws Yws Zws Pws Qws Rws } + + + Algorithm Stack 0...n + =========================================================== + PQR BPout WPout BPin WPin + 4 index 3 get WPin PQR BPout WPout BPin WPin + div (PQR/WPin) BPout WPout BPin WPin + 2 index 3 get WPout (PQR/WPin) BPout WPout BPin WPin + mult WPout*(PQR/WPin) BPout WPout BPin WPin + + 2 index 3 get WPout WPout*(PQR/WPin) BPout WPout BPin WPin + 2 index 3 get BPout WPout WPout*(PQR/WPin) BPout WPout BPin WPin + sub (WPout-BPout) WPout*(PQR/WPin) BPout WPout BPin WPin + mult (WPout-BPout)* WPout*(PQR/WPin) BPout WPout BPin WPin + + 2 index 3 get WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin + 4 index 3 get BPin WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin + 3 index 3 get BPout BPin WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin + + sub (BPin-BPout) WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin + mult (BPin-BPout)*WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin + sub (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin + + 3 index 3 get BPin (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin + 3 index 3 get WPout BPin (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin + exch + sub (WPout-BPin) (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin + div + + exch pop + exch pop + exch pop + exch pop + +*/ + + +static +void EmitPQRStage(LPMEMSTREAM m, cmsHPROFILE hProfile, int DoBPC, int lIsAbsolute) +{ + + + if (lIsAbsolute) { + + // For absolute colorimetric intent, encode back to relative + // and generate a relative LUT + + // Relative encoding is obtained across XYZpcs*(D50/WhitePoint) + + cmsCIEXYZ White; + + cmsTakeMediaWhitePoint(&White, hProfile); + + Writef(m,"/MatrixPQR [1 0 0 0 1 0 0 0 1 ]\n"); + Writef(m,"/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ]\n"); + + Writef(m, "%% Absolute colorimetric -- encode to relative to maximize LUT usage\n" + "/TransformPQR [\n" + "{0.9642 mul %g div exch pop exch pop exch pop exch pop} bind\n" + "{1.0000 mul %g div exch pop exch pop exch pop exch pop} bind\n" + "{0.8249 mul %g div exch pop exch pop exch pop exch pop} bind\n]\n", + White.X, White.Y, White.Z); + return; + } + + + Writef(m,"%% Bradford Cone Space\n" + "/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] \n"); + + Writef(m, "/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ]\n"); + + + // No BPC + + if (!DoBPC) { + + Writef(m, "%% VonKries-like transform in Bradford Cone Space\n" + "/TransformPQR [\n" + "{exch pop exch 3 get mul exch pop exch 3 get div} bind\n" + "{exch pop exch 4 get mul exch pop exch 4 get div} bind\n" + "{exch pop exch 5 get mul exch pop exch 5 get div} bind\n]\n"); + } else { + + // BPC + + Writef(m, "%% VonKries-like transform in Bradford Cone Space plus BPC\n" + "/TransformPQR [\n"); + + Writef(m, "{4 index 3 get div 2 index 3 get mul " + "2 index 3 get 2 index 3 get sub mul " + "2 index 3 get 4 index 3 get 3 index 3 get sub mul sub " + "3 index 3 get 3 index 3 get exch sub div " + "exch pop exch pop exch pop exch pop } bind\n"); + + Writef(m, "{4 index 4 get div 2 index 4 get mul " + "2 index 4 get 2 index 4 get sub mul " + "2 index 4 get 4 index 4 get 3 index 4 get sub mul sub " + "3 index 4 get 3 index 4 get exch sub div " + "exch pop exch pop exch pop exch pop } bind\n"); + + Writef(m, "{4 index 5 get div 2 index 5 get mul " + "2 index 5 get 2 index 5 get sub mul " + "2 index 5 get 4 index 5 get 3 index 5 get sub mul sub " + "3 index 5 get 3 index 5 get exch sub div " + "exch pop exch pop exch pop exch pop } bind\n]\n"); + + } + + +} + + +static +void EmitXYZ2Lab(LPMEMSTREAM m) +{ + Writef(m, "/RangeLMN [ -0.635 2.0 0 2 -0.635 2.0 ]\n"); + Writef(m, "/EncodeLMN [\n"); + Writef(m, "{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind\n"); + Writef(m, "{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind\n"); + Writef(m, "{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind\n"); + Writef(m, "]\n"); + Writef(m, "/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ]\n"); + Writef(m, "/EncodeABC [\n"); + + + Writef(m, "{ 116 mul 16 sub 100 div } bind\n"); + Writef(m, "{ 500 mul 128 add 256 div } bind\n"); + Writef(m, "{ 200 mul 128 add 256 div } bind\n"); + + + Writef(m, "]\n"); + + +} + +// Due to impedance mismatch between XYZ and almost all RGB and CMYK spaces +// I choose to dump LUTS in Lab instead of XYZ. There is still a lot of wasted +// space on 3D CLUT, but since space seems not to be a problem here, 33 points +// would give a reasonable accurancy. Note also that CRD tables must operate in +// 8 bits. + +static +int WriteOutputLUT(LPMEMSTREAM m, cmsHPROFILE hProfile, int Intent, DWORD dwFlags) +{ + cmsHPROFILE hLab; + cmsHTRANSFORM xform; + icColorSpaceSignature ColorSpace; + int i, nChannels; + DWORD OutputFormat; + _LPcmsTRANSFORM v; + LPLUT DeviceLink; + cmsHPROFILE Profiles[3]; + cmsCIEXYZ BlackPointAdaptedToD50; + LCMSBOOL lFreeDeviceLink = FALSE; + LCMSBOOL lDoBPC = (dwFlags & cmsFLAGS_BLACKPOINTCOMPENSATION); + LCMSBOOL lFixWhite = !(dwFlags & cmsFLAGS_NOWHITEONWHITEFIXUP); + int RelativeEncodingIntent; + + + + hLab = cmsCreateLabProfile(NULL); + + ColorSpace = cmsGetColorSpace(hProfile); + nChannels = _cmsChannelsOf(ColorSpace); + OutputFormat = CHANNELS_SH(nChannels) | BYTES_SH(2); + + // For absolute colorimetric, the LUT is encoded as relative + // in order to preserve precission. + + RelativeEncodingIntent = Intent; + if (RelativeEncodingIntent == INTENT_ABSOLUTE_COLORIMETRIC) + RelativeEncodingIntent = INTENT_RELATIVE_COLORIMETRIC; + + + // Is a devicelink profile? + if (cmsGetDeviceClass(hProfile) == icSigLinkClass) { + + // if devicelink input already in Lab + + if (ColorSpace == icSigLabData) { + + // adjust input to Lab to our v4 + + Profiles[0] = hLab; + Profiles[1] = hProfile; + + xform = cmsCreateMultiprofileTransform(Profiles, 2, TYPE_Lab_DBL, + OutputFormat, RelativeEncodingIntent, + dwFlags|cmsFLAGS_NOWHITEONWHITEFIXUP|cmsFLAGS_NOPRELINEARIZATION); + + } + else { + cmsSignalError(LCMS_ERRC_ABORTED, "Cannot use devicelink profile for CRD creation"); + return 0; + } + + + } + else { + + // This is a normal profile + xform = cmsCreateTransform(hLab, TYPE_Lab_DBL, hProfile, + OutputFormat, RelativeEncodingIntent, dwFlags|cmsFLAGS_NOWHITEONWHITEFIXUP|cmsFLAGS_NOPRELINEARIZATION); + } + + if (xform == NULL) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Cannot create transform Lab -> Profile in CRD creation"); + return 0; + } + + // Get the internal precalculated devicelink + + v = (_LPcmsTRANSFORM) xform; + DeviceLink = v ->DeviceLink; + + if (!DeviceLink) { + + DeviceLink = _cmsPrecalculateDeviceLink(xform, cmsFLAGS_NOPRELINEARIZATION); + lFreeDeviceLink = TRUE; + } + + Writef(m, "<<\n"); + Writef(m, "/ColorRenderingType 1\n"); + + + cmsDetectBlackPoint(&BlackPointAdaptedToD50, hProfile, Intent, LCMS_BPFLAGS_D50_ADAPTED); + + // Emit headers, etc. + EmitWhiteBlackD50(m, &BlackPointAdaptedToD50); + EmitPQRStage(m, hProfile, lDoBPC, Intent == INTENT_ABSOLUTE_COLORIMETRIC); + EmitXYZ2Lab(m); + + if (DeviceLink ->wFlags & LUT_HASTL1) { + + // Shouldn't happen + cmsSignalError(LCMS_ERRC_ABORTED, "Internal error (prelinearization on CRD)"); + return 0; + } + + + // FIXUP: map Lab (100, 0, 0) to perfect white, because the particular encoding for Lab + // does map a=b=0 not falling into any specific node. Since range a,b goes -128..127, + // zero is slightly moved towards right, so assure next node (in L=100 slice) is mapped to + // zero. This would sacrifice a bit of highlights, but failure to do so would cause + // scum dot. Ouch. + + if (Intent == INTENT_ABSOLUTE_COLORIMETRIC) + lFixWhite = FALSE; + + Writef(m, "/RenderTable "); + + WriteCLUT(m, DeviceLink, 8, "<", ">\n", "", "", FALSE, + lFixWhite, ColorSpace); + + Writef(m, " %d {} bind ", nChannels); + + for (i=1; i < nChannels; i++) + Writef(m, "dup "); + + Writef(m, "]\n"); + + + EmitIntent(m, Intent); + + Writef(m, ">>\n"); + + if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { + + Writef(m, "/Current exch /ColorRendering defineresource pop\n"); + } + + if (lFreeDeviceLink) cmsFreeLUT(DeviceLink); + cmsDeleteTransform(xform); + cmsCloseProfile(hLab); + + return 1; +} + + +// Builds a ASCII string containing colorant list in 0..1.0 range +static +void BuildColorantList(char *Colorant, int nColorant, WORD Out[]) +{ + char Buff[32]; + int j; + + Colorant[0] = 0; + if (nColorant > MAXCHANNELS) + nColorant = MAXCHANNELS; + + for (j=0; j < nColorant; j++) { + + sprintf(Buff, "%.3f", Out[j] / 65535.0); + strcat(Colorant, Buff); + if (j < nColorant -1) + strcat(Colorant, " "); + + } +} + + +// Creates a PostScript color list from a named profile data. +// This is a HP extension. + +static +int WriteNamedColorCRD(LPMEMSTREAM m, cmsHPROFILE hNamedColor, int Intent, DWORD dwFlags) +{ + cmsHTRANSFORM xform; + int i, nColors, nColorant; + DWORD OutputFormat; + char ColorName[32]; + char Colorant[128]; + + nColorant = _cmsChannelsOf(cmsGetColorSpace(hNamedColor)); + OutputFormat = CHANNELS_SH(nColorant) | BYTES_SH(2); + + xform = cmsCreateTransform(hNamedColor, TYPE_NAMED_COLOR_INDEX, + NULL, OutputFormat, Intent, cmsFLAGS_NOTPRECALC); + if (xform == NULL) return 0; + + + Writef(m, "<<\n"); + Writef(m, "(colorlistcomment) (%s) \n", "Named profile"); + Writef(m, "(Prefix) [ (Pantone ) (PANTONE ) ]\n"); + Writef(m, "(Suffix) [ ( CV) ( CVC) ( C) ]\n"); + + nColors = cmsNamedColorCount(xform); + + + for (i=0; i < nColors; i++) { + + WORD In[1]; + WORD Out[MAXCHANNELS]; + + In[0] = (WORD) i; + + if (!cmsNamedColorInfo(xform, i, ColorName, NULL, NULL)) + continue; + + cmsDoTransform(xform, In, Out, 1); + BuildColorantList(Colorant, nColorant, Out); + Writef(m, " (%s) [ %s ]\n", ColorName, Colorant); + } + + Writef(m, " >>"); + + if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { + + Writef(m, " /Current exch /HPSpotTable defineresource pop\n"); + } + + cmsDeleteTransform(xform); + return 1; +} + + + +// This one does create a Color Rendering Dictionary. +// CRD are always LUT-Based, no matter if profile is +// implemented as matrix-shaper. + +DWORD LCMSEXPORT cmsGetPostScriptCRDEx(cmsHPROFILE hProfile, + int Intent, DWORD dwFlags, + LPVOID Buffer, DWORD dwBufferLen) +{ + + LPMEMSTREAM mem; + DWORD dwBytesUsed; + + // Set up the serialization artifact + mem = CreateMemStream((LPBYTE) Buffer, dwBufferLen, MAXPSCOLS); + if (!mem) return 0; + + + if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { + + EmitHeader(mem, "Color Rendering Dictionary (CRD)", hProfile); + } + + + // Is a named color profile? + if (cmsGetDeviceClass(hProfile) == icSigNamedColorClass) { + + if (!WriteNamedColorCRD(mem, hProfile, Intent, dwFlags)) { + + _cmsFree((void*) mem); + return 0; + } + } + else { + + // CRD are always implemented as LUT. + + + if (!WriteOutputLUT(mem, hProfile, Intent, dwFlags)) { + _cmsFree((void*) mem); + return 0; + } + } + + if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { + + Writef(mem, "%%%%EndResource\n"); + Writef(mem, "\n%% CRD End\n"); + } + + // Done, keep memory usage + dwBytesUsed = mem ->dwUsed; + + // Get rid of memory stream + _cmsFree((void*) mem); + + // Finally, return used byte count + return dwBytesUsed; +} + + +// For compatibility with previous versions + +DWORD LCMSEXPORT cmsGetPostScriptCRD(cmsHPROFILE hProfile, + int Intent, + LPVOID Buffer, DWORD dwBufferLen) +{ + return cmsGetPostScriptCRDEx(hProfile, Intent, 0, Buffer, dwBufferLen); +} diff --git a/icc2ps/cmssamp.c b/icc2ps/cmssamp.c new file mode 100644 index 0000000..b6bfd85 --- /dev/null +++ b/icc2ps/cmssamp.c @@ -0,0 +1,668 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + + +// --------------------------------------------------------------------------------- + +static volatile int GlobalBlackPreservationStrategy = 0; + +// Quantize a value 0 <= i < MaxSamples + +WORD _cmsQuantizeVal(double i, int MaxSamples) +{ + double x; + + x = ((double) i * 65535.) / (double) (MaxSamples - 1); + + return (WORD) floor(x + .5); +} + + +// Is a table linear? + +int cmsIsLinear(WORD Table[], int nEntries) +{ + register int i; + int diff; + + for (i=0; i < nEntries; i++) { + + diff = abs((int) Table[i] - (int) _cmsQuantizeVal(i, nEntries)); + if (diff > 3) + return 0; + } + + return 1; +} + + + +// pow() restricted to integer + +static +int ipow(int base, int exp) +{ + int res = base; + + while (--exp) + res *= base; + + return res; +} + + +// Given n, 0<=n<=clut^dim, returns the colorant. + +static +int ComponentOf(int n, int clut, int nColorant) +{ + if (nColorant <= 0) + return (n % clut); + + n /= ipow(clut, nColorant); + + return (n % clut); +} + + + +// This routine does a sweep on whole input space, and calls its callback +// function on knots. returns TRUE if all ok, FALSE otherwise. + +LCMSBOOL LCMSEXPORT cmsSample3DGrid(LPLUT Lut, _cmsSAMPLER Sampler, LPVOID Cargo, DWORD dwFlags) +{ + int i, t, nTotalPoints, Colorant, index; + WORD In[MAXCHANNELS], Out[MAXCHANNELS]; + + nTotalPoints = ipow(Lut->cLutPoints, Lut -> InputChan); + + index = 0; + for (i = 0; i < nTotalPoints; i++) { + + for (t=0; t < (int) Lut -> InputChan; t++) { + + Colorant = ComponentOf(i, Lut -> cLutPoints, (Lut -> InputChan - t - 1 )); + In[t] = _cmsQuantizeVal(Colorant, Lut -> cLutPoints); + } + + + if (dwFlags & SAMPLER_HASTL1) { + + for (t=0; t < (int) Lut -> InputChan; t++) + In[t] = cmsReverseLinearInterpLUT16(In[t], + Lut -> L1[t], + &Lut -> In16params); + } + + for (t=0; t < (int) Lut -> OutputChan; t++) + Out[t] = Lut->T[index + t]; + + if (dwFlags & SAMPLER_HASTL2) { + + for (t=0; t < (int) Lut -> OutputChan; t++) + Out[t] = cmsLinearInterpLUT16(Out[t], + Lut -> L2[t], + &Lut -> Out16params); + } + + + if (!Sampler(In, Out, Cargo)) + return FALSE; + + if (!(dwFlags & SAMPLER_INSPECT)) { + + if (dwFlags & SAMPLER_HASTL2) { + + for (t=0; t < (int) Lut -> OutputChan; t++) + Out[t] = cmsReverseLinearInterpLUT16(Out[t], + Lut -> L2[t], + &Lut -> Out16params); + } + + + for (t=0; t < (int) Lut -> OutputChan; t++) + Lut->T[index + t] = Out[t]; + + } + + index += Lut -> OutputChan; + + } + + return TRUE; +} + + + + + + +// choose reasonable resolution +int _cmsReasonableGridpointsByColorspace(icColorSpaceSignature Colorspace, DWORD dwFlags) +{ + int nChannels; + + // Already specified? + if (dwFlags & 0x00FF0000) { + // Yes, grab'em + return (dwFlags >> 16) & 0xFF; + } + + nChannels = _cmsChannelsOf(Colorspace); + + // HighResPrecalc is maximum resolution + + if (dwFlags & cmsFLAGS_HIGHRESPRECALC) { + + if (nChannels > 4) + return 7; // 7 for Hifi + + if (nChannels == 4) // 23 for CMYK + return 23; + + return 49; // 49 for RGB and others + } + + + // LowResPrecal is stripped resolution + + if (dwFlags & cmsFLAGS_LOWRESPRECALC) { + + if (nChannels > 4) + return 6; // 6 for Hifi + + if (nChannels == 1) + return 33; // For monochrome + + return 17; // 17 for remaining + } + + // Default values + + if (nChannels > 4) + return 7; // 7 for Hifi + + if (nChannels == 4) + return 17; // 17 for CMYK + + return 33; // 33 for RGB + +} + +// Sampler implemented by another transform. This is a clean way to +// precalculate the devicelink 3D CLUT for almost any transform + +static +int XFormSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + cmsDoTransform((cmsHTRANSFORM) Cargo, In, Out, 1); + return TRUE; +} + +// This routine does compute the devicelink CLUT containing whole +// transform. Handles any channel number. + +LPLUT _cmsPrecalculateDeviceLink(cmsHTRANSFORM h, DWORD dwFlags) +{ + _LPcmsTRANSFORM p = (_LPcmsTRANSFORM) h; + LPLUT Grid; + int nGridPoints; + DWORD dwFormatIn, dwFormatOut; + DWORD SaveFormatIn, SaveFormatOut; + int ChannelsIn, ChannelsOut; + LPLUT SaveGamutLUT; + + + // Remove any gamut checking + SaveGamutLUT = p ->Gamut; + p ->Gamut = NULL; + + ChannelsIn = _cmsChannelsOf(p -> EntryColorSpace); + ChannelsOut = _cmsChannelsOf(p -> ExitColorSpace); + + nGridPoints = _cmsReasonableGridpointsByColorspace(p -> EntryColorSpace, dwFlags); + + Grid = cmsAllocLUT(); + if (!Grid) return NULL; + + Grid = cmsAlloc3DGrid(Grid, nGridPoints, ChannelsIn, ChannelsOut); + + // Compute device link on 16-bit basis + dwFormatIn = (CHANNELS_SH(ChannelsIn)|BYTES_SH(2)); + dwFormatOut = (CHANNELS_SH(ChannelsOut)|BYTES_SH(2)); + + SaveFormatIn = p ->InputFormat; + SaveFormatOut = p ->OutputFormat; + + p -> InputFormat = dwFormatIn; + p -> OutputFormat = dwFormatOut; + p -> FromInput = _cmsIdentifyInputFormat(p, dwFormatIn); + p -> ToOutput = _cmsIdentifyOutputFormat(p, dwFormatOut); + + // Fix gamut & gamma possible mismatches. + + if (!(dwFlags & cmsFLAGS_NOPRELINEARIZATION)) { + + cmsHTRANSFORM hOne[1]; + hOne[0] = h; + + _cmsComputePrelinearizationTablesFromXFORM(hOne, 1, Grid); + } + + // Attention to this typecast! we can take the luxury to + // do this since cmsHTRANSFORM is only an alias to a pointer + // to the transform struct. + + if (!cmsSample3DGrid(Grid, XFormSampler, (LPVOID) p, Grid -> wFlags)) { + + cmsFreeLUT(Grid); + Grid = NULL; + } + + p ->Gamut = SaveGamutLUT; + p ->InputFormat = SaveFormatIn; + p ->OutputFormat = SaveFormatOut; + + return Grid; +} + + + +// Sampler for Black-preserving CMYK->CMYK transforms + +typedef struct { + cmsHTRANSFORM cmyk2cmyk; + cmsHTRANSFORM cmyk2Lab; + LPGAMMATABLE KTone; + L16PARAMS KToneParams; + LPLUT LabK2cmyk; + double MaxError; + + cmsHTRANSFORM hRoundTrip; + int MaxTAC; + + cmsHTRANSFORM hProofOutput; + + } BPCARGO, *LPBPCARGO; + + + +// Preserve black only if that is the only ink used +static +int BlackPreservingGrayOnlySampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + BPCARGO* bp = (LPBPCARGO) Cargo; + + // If going across black only, keep black only + if (In[0] == 0 && In[1] == 0 && In[2] == 0) { + + // TAC does not apply because it is black ink! + Out[0] = Out[1] = Out[2] = 0; + Out[3] = cmsLinearInterpLUT16(In[3], bp->KTone ->GammaTable, &bp->KToneParams); + return 1; + } + + // Keep normal transform for other colors + cmsDoTransform(bp ->cmyk2cmyk, In, Out, 1); + return 1; +} + + + +// Preserve all K plane. +static +int BlackPreservingSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + + WORD LabK[4]; + double SumCMY, SumCMYK, Error; + cmsCIELab ColorimetricLab, BlackPreservingLab; + BPCARGO* bp = (LPBPCARGO) Cargo; + + // Get the K across Tone curve + LabK[3] = cmsLinearInterpLUT16(In[3], bp->KTone ->GammaTable, &bp->KToneParams); + + // If going across black only, keep black only + if (In[0] == 0 && In[1] == 0 && In[2] == 0) { + + Out[0] = Out[1] = Out[2] = 0; + Out[3] = LabK[3]; + return 1; + } + + // Try the original transform, maybe K is already ok (valid on K=0) + cmsDoTransform(bp ->cmyk2cmyk, In, Out, 1); + if (Out[3] == LabK[3]) return 1; + + + // No, mesure and keep Lab measurement for further usage + cmsDoTransform(bp->hProofOutput, Out, &ColorimetricLab, 1); + + // Is not black only and the transform doesn't keep black. + // Obtain the Lab of CMYK. After that we have Lab + K + cmsDoTransform(bp ->cmyk2Lab, In, LabK, 1); + + // Obtain the corresponding CMY using reverse interpolation. + // As a seed, we use the colorimetric CMY + cmsEvalLUTreverse(bp ->LabK2cmyk, LabK, Out, Out); + + // Estimate the error + cmsDoTransform(bp->hProofOutput, Out, &BlackPreservingLab, 1); + Error = cmsDeltaE(&ColorimetricLab, &BlackPreservingLab); + + + // Apply TAC if needed + + SumCMY = Out[0] + Out[1] + Out[2]; + SumCMYK = SumCMY + Out[3]; + + if (SumCMYK > bp ->MaxTAC) { + + double Ratio = 1 - ((SumCMYK - bp->MaxTAC) / SumCMY); + if (Ratio < 0) + Ratio = 0; + + Out[0] = (WORD) floor(Out[0] * Ratio + 0.5); // C + Out[1] = (WORD) floor(Out[1] * Ratio + 0.5); // M + Out[2] = (WORD) floor(Out[2] * Ratio + 0.5); // Y + } + + return 1; +} + + +// Sample whole gamut to estimate maximum TAC + +#ifdef _MSC_VER +#pragma warning(disable : 4100) +#endif + +static +int EstimateTAC(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + BPCARGO* bp = (LPBPCARGO) Cargo; + WORD RoundTrip[4]; + int Sum; + + cmsDoTransform(bp->hRoundTrip, In, RoundTrip, 1); + + Sum = RoundTrip[0] + RoundTrip[1] + RoundTrip[2] + RoundTrip[3]; + + if (Sum > bp ->MaxTAC) + bp ->MaxTAC = Sum; + + return 1; +} + + +// Estimate the maximum error +static +int BlackPreservingEstimateErrorSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + BPCARGO* bp = (LPBPCARGO) Cargo; + WORD ColorimetricOut[4]; + cmsCIELab ColorimetricLab, BlackPreservingLab; + double Error; + + if (In[0] == 0 && In[1] == 0 && In[2] == 0) return 1; + + cmsDoTransform(bp->cmyk2cmyk, In, ColorimetricOut, 1); + + cmsDoTransform(bp->hProofOutput, ColorimetricOut, &ColorimetricLab, 1); + cmsDoTransform(bp->hProofOutput, Out, &BlackPreservingLab, 1); + + Error = cmsDeltaE(&ColorimetricLab, &BlackPreservingLab); + + if (Error > bp ->MaxError) + bp ->MaxError = Error; + + return 1; +} + +// Setup the K preservation strategy +int LCMSEXPORT cmsSetCMYKPreservationStrategy(int n) +{ + int OldVal = GlobalBlackPreservationStrategy; + + if (n >= 0) + GlobalBlackPreservationStrategy = n; + + return OldVal; +} + +#pragma warning(disable: 4550) + +// Get a pointer to callback on depending of strategy +static +_cmsSAMPLER _cmsGetBlackPreservationSampler(void) +{ + switch (GlobalBlackPreservationStrategy) { + + case 0: return BlackPreservingGrayOnlySampler; + default: return BlackPreservingSampler; + } + +} + +// This is the black-preserving devicelink generator +LPLUT _cmsPrecalculateBlackPreservingDeviceLink(cmsHTRANSFORM hCMYK2CMYK, DWORD dwFlags) +{ + _LPcmsTRANSFORM p = (_LPcmsTRANSFORM) hCMYK2CMYK; + BPCARGO Cargo; + LPLUT Grid; + DWORD LocalFlags; + cmsHPROFILE hLab = cmsCreateLabProfile(NULL); + int nGridPoints; + icTagSignature Device2PCS[] = {icSigAToB0Tag, // Perceptual + icSigAToB1Tag, // Relative colorimetric + icSigAToB2Tag, // Saturation + icSigAToB1Tag }; // Absolute colorimetric + // (Relative/WhitePoint) + + nGridPoints = _cmsReasonableGridpointsByColorspace(p -> EntryColorSpace, dwFlags); + + // Get a copy of inteserting flags for this kind of xform + LocalFlags = cmsFLAGS_NOTPRECALC; + if (p -> dwOriginalFlags & cmsFLAGS_BLACKPOINTCOMPENSATION) + LocalFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; + + // Fill in cargo struct + Cargo.cmyk2cmyk = hCMYK2CMYK; + + // Compute tone curve. + Cargo.KTone = _cmsBuildKToneCurve(hCMYK2CMYK, 256); + if (Cargo.KTone == NULL) return NULL; + cmsCalcL16Params(Cargo.KTone ->nEntries, &Cargo.KToneParams); + + + // Create a CMYK->Lab "normal" transform on input, without K-preservation + Cargo.cmyk2Lab = cmsCreateTransform(p ->InputProfile, TYPE_CMYK_16, + hLab, TYPE_Lab_16, p->Intent, LocalFlags); + + // We are going to use the reverse of proof direction + Cargo.LabK2cmyk = cmsReadICCLut(p->OutputProfile, Device2PCS[p->Intent]); + + // Is there any table available? + if (Cargo.LabK2cmyk == NULL) { + + Grid = NULL; + goto Cleanup; + } + + // Setup a roundtrip on output profile for TAC estimation + Cargo.hRoundTrip = cmsCreateTransform(p ->OutputProfile, TYPE_CMYK_16, + p ->OutputProfile, TYPE_CMYK_16, p->Intent, cmsFLAGS_NOTPRECALC); + + + // Setup a proof CMYK->Lab on output + Cargo.hProofOutput = cmsCreateTransform(p ->OutputProfile, TYPE_CMYK_16, + hLab, TYPE_Lab_DBL, p->Intent, LocalFlags); + + + // Create an empty LUT for holding K-preserving xform + Grid = cmsAllocLUT(); + if (!Grid) goto Cleanup; + + Grid = cmsAlloc3DGrid(Grid, nGridPoints, 4, 4); + + // Setup formatters + p -> FromInput = _cmsIdentifyInputFormat(p, TYPE_CMYK_16); + p -> ToOutput = _cmsIdentifyOutputFormat(p, TYPE_CMYK_16); + + + + // Step #1, estimate TAC + Cargo.MaxTAC = 0; + if (!cmsSample3DGrid(Grid, EstimateTAC, (LPVOID) &Cargo, 0)) { + + cmsFreeLUT(Grid); + Grid = NULL; + goto Cleanup; + } + + + // Step #2, compute approximation + if (!cmsSample3DGrid(Grid, _cmsGetBlackPreservationSampler(), (LPVOID) &Cargo, 0)) { + + cmsFreeLUT(Grid); + Grid = NULL; + goto Cleanup; + } + + // Step #3, estimate error + Cargo.MaxError = 0; + cmsSample3DGrid(Grid, BlackPreservingEstimateErrorSampler, (LPVOID) &Cargo, SAMPLER_INSPECT); + + +Cleanup: + + if (Cargo.cmyk2Lab) cmsDeleteTransform(Cargo.cmyk2Lab); + if (Cargo.hRoundTrip) cmsDeleteTransform(Cargo.hRoundTrip); + if (Cargo.hProofOutput) cmsDeleteTransform(Cargo.hProofOutput); + + if (hLab) cmsCloseProfile(hLab); + if (Cargo.KTone) cmsFreeGamma(Cargo.KTone); + if (Cargo.LabK2cmyk) cmsFreeLUT(Cargo.LabK2cmyk); + + return Grid; +} + + + +// Fix broken LUT. just to obtain other CMS compatibility + +static +void PatchLUT(LPLUT Grid, WORD At[], WORD Value[], + int nChannelsOut, int nChannelsIn) +{ + LPL16PARAMS p16 = &Grid -> CLut16params; + double px, py, pz, pw; + int x0, y0, z0, w0; + int i, index; + + + if (Grid ->wFlags & LUT_HASTL1) return; // There is a prelinearization + + px = ((double) At[0] * (p16->Domain)) / 65535.0; + py = ((double) At[1] * (p16->Domain)) / 65535.0; + pz = ((double) At[2] * (p16->Domain)) / 65535.0; + pw = ((double) At[3] * (p16->Domain)) / 65535.0; + + x0 = (int) floor(px); + y0 = (int) floor(py); + z0 = (int) floor(pz); + w0 = (int) floor(pw); + + if (nChannelsIn == 4) { + + if (((px - x0) != 0) || + ((py - y0) != 0) || + ((pz - z0) != 0) || + ((pw - w0) != 0)) return; // Not on exact node + + index = p16 -> opta4 * x0 + + p16 -> opta3 * y0 + + p16 -> opta2 * z0 + + p16 -> opta1 * w0; + } + else + if (nChannelsIn == 3) { + + if (((px - x0) != 0) || + ((py - y0) != 0) || + ((pz - z0) != 0)) return; // Not on exact node + + index = p16 -> opta3 * x0 + + p16 -> opta2 * y0 + + p16 -> opta1 * z0; + } + else + if (nChannelsIn == 1) { + + if (((px - x0) != 0)) return; // Not on exact node + + index = p16 -> opta1 * x0; + } + else { + cmsSignalError(LCMS_ERRC_ABORTED, "(internal) %d Channels are not supported on PatchLUT", nChannelsIn); + return; + } + + for (i=0; i < nChannelsOut; i++) + Grid -> T[index + i] = Value[i]; + +} + + + +LCMSBOOL _cmsFixWhiteMisalignment(_LPcmsTRANSFORM p) +{ + + WORD *WhitePointIn, *WhitePointOut, *BlackPointIn, *BlackPointOut; + int nOuts, nIns; + + + if (!p -> DeviceLink) return FALSE; + + if (p ->Intent == INTENT_ABSOLUTE_COLORIMETRIC) return FALSE; + if ((p ->PreviewProfile != NULL) && + (p ->ProofIntent == INTENT_ABSOLUTE_COLORIMETRIC)) return FALSE; + + + if (!_cmsEndPointsBySpace(p -> EntryColorSpace, + &WhitePointIn, &BlackPointIn, &nIns)) return FALSE; + + + if (!_cmsEndPointsBySpace(p -> ExitColorSpace, + &WhitePointOut, &BlackPointOut, &nOuts)) return FALSE; + + // Fix white only + + PatchLUT(p -> DeviceLink, WhitePointIn, WhitePointOut, nOuts, nIns); + // PatchLUT(p -> DeviceLink, BlackPointIn, BlackPointOut, nOuts, nIns); + + return TRUE; +} + diff --git a/icc2ps/cmsvirt.c b/icc2ps/cmsvirt.c new file mode 100644 index 0000000..10f5bd6 --- /dev/null +++ b/icc2ps/cmsvirt.c @@ -0,0 +1,899 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + + +// Virtual (built-in) profiles +// ----------------------------------------------------------------------------------- + + +// This function creates a profile based on White point, primaries and +// transfer functions. + + +cmsHPROFILE LCMSEXPORT cmsCreateRGBProfile(LPcmsCIExyY WhitePoint, + LPcmsCIExyYTRIPLE Primaries, + LPGAMMATABLE TransferFunction[3]) +{ + cmsHPROFILE hICC; + cmsCIEXYZ tmp; + MAT3 MColorants; + cmsCIEXYZTRIPLE Colorants; + cmsCIExyY MaxWhite; + + + hICC = _cmsCreateProfilePlaceholder(); + if (!hICC) // can't allocate + return NULL; + + + cmsSetDeviceClass(hICC, icSigDisplayClass); + cmsSetColorSpace(hICC, icSigRgbData); + cmsSetPCS(hICC, icSigXYZData); + cmsSetRenderingIntent(hICC, INTENT_PERCEPTUAL); + + + // Implement profile using following tags: + // + // 1 icSigProfileDescriptionTag + // 2 icSigMediaWhitePointTag + // 3 icSigRedColorantTag + // 4 icSigGreenColorantTag + // 5 icSigBlueColorantTag + // 6 icSigRedTRCTag + // 7 icSigGreenTRCTag + // 8 icSigBlueTRCTag + + // This conforms a standard RGB DisplayProfile as says ICC, and then I add + + // 9 icSigChromaticityTag + + // As addendum II + + + // Fill-in the tags + + cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "lcms RGB virtual profile"); + cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "rgb built-in"); + + + if (WhitePoint) { + + cmsxyY2XYZ(&tmp, WhitePoint); + cmsAddTag(hICC, icSigMediaWhitePointTag, (LPVOID) &tmp); + } + + if (WhitePoint && Primaries) { + + MaxWhite.x = WhitePoint -> x; + MaxWhite.y = WhitePoint -> y; + MaxWhite.Y = 1.0; + + if (!cmsBuildRGB2XYZtransferMatrix(&MColorants, &MaxWhite, Primaries)) + { + cmsCloseProfile(hICC); + return NULL; + } + + cmsAdaptMatrixToD50(&MColorants, &MaxWhite); + + Colorants.Red.X = MColorants.v[0].n[0]; + Colorants.Red.Y = MColorants.v[1].n[0]; + Colorants.Red.Z = MColorants.v[2].n[0]; + + Colorants.Green.X = MColorants.v[0].n[1]; + Colorants.Green.Y = MColorants.v[1].n[1]; + Colorants.Green.Z = MColorants.v[2].n[1]; + + Colorants.Blue.X = MColorants.v[0].n[2]; + Colorants.Blue.Y = MColorants.v[1].n[2]; + Colorants.Blue.Z = MColorants.v[2].n[2]; + + cmsAddTag(hICC, icSigRedColorantTag, (LPVOID) &Colorants.Red); + cmsAddTag(hICC, icSigBlueColorantTag, (LPVOID) &Colorants.Blue); + cmsAddTag(hICC, icSigGreenColorantTag, (LPVOID) &Colorants.Green); + } + + + if (TransferFunction) { + + // In case of gamma, we must dup' the table pointer + + cmsAddTag(hICC, icSigRedTRCTag, (LPVOID) TransferFunction[0]); + cmsAddTag(hICC, icSigGreenTRCTag, (LPVOID) TransferFunction[1]); + cmsAddTag(hICC, icSigBlueTRCTag, (LPVOID) TransferFunction[2]); + } + + if (Primaries) { + cmsAddTag(hICC, icSigChromaticityTag, (LPVOID) Primaries); + } + + return hICC; +} + + + +// This function creates a profile based on White point and transfer function. + +cmsHPROFILE LCMSEXPORT cmsCreateGrayProfile(LPcmsCIExyY WhitePoint, + LPGAMMATABLE TransferFunction) +{ + cmsHPROFILE hICC; + cmsCIEXYZ tmp; + + + hICC = _cmsCreateProfilePlaceholder(); + if (!hICC) // can't allocate + return NULL; + + + cmsSetDeviceClass(hICC, icSigDisplayClass); + cmsSetColorSpace(hICC, icSigGrayData); + cmsSetPCS(hICC, icSigXYZData); + cmsSetRenderingIntent(hICC, INTENT_PERCEPTUAL); + + + + // Implement profile using following tags: + // + // 1 icSigProfileDescriptionTag + // 2 icSigMediaWhitePointTag + // 6 icSigGrayTRCTag + + // This conforms a standard Gray DisplayProfile + + // Fill-in the tags + + + cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "lcms gray virtual profile"); + cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "gray built-in"); + + + if (WhitePoint) { + + cmsxyY2XYZ(&tmp, WhitePoint); + cmsAddTag(hICC, icSigMediaWhitePointTag, (LPVOID) &tmp); + } + + + if (TransferFunction) { + + // In case of gamma, we must dup' the table pointer + + cmsAddTag(hICC, icSigGrayTRCTag, (LPVOID) TransferFunction); + } + + return hICC; + +} + + +static +int IsPCS(icColorSpaceSignature ColorSpace) +{ + return (ColorSpace == icSigXYZData || + ColorSpace == icSigLabData); +} + +static +void FixColorSpaces(cmsHPROFILE hProfile, + icColorSpaceSignature ColorSpace, + icColorSpaceSignature PCS, + DWORD dwFlags) +{ + + if (dwFlags & cmsFLAGS_GUESSDEVICECLASS) { + + if (IsPCS(ColorSpace) && IsPCS(PCS)) { + + cmsSetDeviceClass(hProfile, icSigAbstractClass); + cmsSetColorSpace(hProfile, ColorSpace); + cmsSetPCS(hProfile, PCS); + return; + } + + if (IsPCS(ColorSpace) && !IsPCS(PCS)) { + + cmsSetDeviceClass(hProfile, icSigOutputClass); + cmsSetPCS(hProfile, ColorSpace); + cmsSetColorSpace(hProfile, PCS); + return; + } + + if (IsPCS(PCS) && !IsPCS(ColorSpace)) { + + cmsSetDeviceClass(hProfile, icSigInputClass); + cmsSetColorSpace(hProfile, ColorSpace); + cmsSetPCS(hProfile, PCS); + return; + } + } + + cmsSetDeviceClass(hProfile, icSigLinkClass); + cmsSetColorSpace(hProfile, ColorSpace); + cmsSetPCS(hProfile, PCS); + +} + + +static +cmsHPROFILE CreateNamedColorDevicelink(cmsHTRANSFORM xform) +{ + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) xform; + cmsHPROFILE hICC; + cmsCIEXYZ WhitePoint; + int i, nColors; + size_t Size; + LPcmsNAMEDCOLORLIST nc2; + + + hICC = _cmsCreateProfilePlaceholder(); + if (hICC == NULL) return NULL; + + cmsSetRenderingIntent(hICC, v -> Intent); + cmsSetDeviceClass(hICC, icSigNamedColorClass); + cmsSetColorSpace(hICC, v ->ExitColorSpace); + cmsSetPCS(hICC, cmsGetPCS(v ->InputProfile)); + cmsTakeMediaWhitePoint(&WhitePoint, v ->InputProfile); + + cmsAddTag(hICC, icSigMediaWhitePointTag, &WhitePoint); + cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "LittleCMS"); + cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "Named color Device link"); + cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "Named color Device link"); + + + nColors = cmsNamedColorCount(xform); + nc2 = cmsAllocNamedColorList(nColors); + + Size = sizeof(cmsNAMEDCOLORLIST) + (sizeof(cmsNAMEDCOLOR) * (nColors-1)); + + CopyMemory(nc2, v->NamedColorList, Size); + nc2 ->ColorantCount = _cmsChannelsOf(v ->ExitColorSpace); + + for (i=0; i < nColors; i++) { + cmsDoTransform(xform, &i, nc2 ->List[i].DeviceColorant, 1); + } + + cmsAddTag(hICC, icSigNamedColor2Tag, (void*) nc2); + cmsFreeNamedColorList(nc2); + + return hICC; +} + + +// Does convert a transform into a device link profile + +cmsHPROFILE LCMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, DWORD dwFlags) +{ + cmsHPROFILE hICC; + _LPcmsTRANSFORM v = (_LPcmsTRANSFORM) hTransform; + LPLUT Lut; + LCMSBOOL MustFreeLUT; + LPcmsNAMEDCOLORLIST InputColorant = NULL; + LPcmsNAMEDCOLORLIST OutputColorant = NULL; + + + // Check if is a named color transform + + if (cmsGetDeviceClass(v ->InputProfile) == icSigNamedColorClass) { + + return CreateNamedColorDevicelink(hTransform); + + } + + if (v ->DeviceLink) { + + Lut = v -> DeviceLink; + MustFreeLUT = FALSE; + } + else { + + Lut = _cmsPrecalculateDeviceLink(hTransform, dwFlags); + if (!Lut) return NULL; + MustFreeLUT = TRUE; + } + + hICC = _cmsCreateProfilePlaceholder(); + if (!hICC) { // can't allocate + + if (MustFreeLUT) cmsFreeLUT(Lut); + return NULL; + } + + + FixColorSpaces(hICC, v -> EntryColorSpace, v -> ExitColorSpace, dwFlags); + + cmsSetRenderingIntent(hICC, v -> Intent); + + // Implement devicelink profile using following tags: + // + // 1 icSigProfileDescriptionTag + // 2 icSigMediaWhitePointTag + // 3 icSigAToB0Tag + + + cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "LittleCMS"); + cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "Device link"); + cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "Device link"); + + + cmsAddTag(hICC, icSigMediaWhitePointTag, (LPVOID) cmsD50_XYZ()); + + if (cmsGetDeviceClass(hICC) == icSigOutputClass) { + + cmsAddTag(hICC, icSigBToA0Tag, (LPVOID) Lut); + } + else + cmsAddTag(hICC, icSigAToB0Tag, (LPVOID) Lut); + + + + // Try to read input and output colorant table + if (cmsIsTag(v ->InputProfile, icSigColorantTableTag)) { + + // Input table can only come in this way. + InputColorant = cmsReadColorantTable(v ->InputProfile, icSigColorantTableTag); + } + + // Output is a little bit more complex. + if (cmsGetDeviceClass(v ->OutputProfile) == icSigLinkClass) { + + // This tag may exist only on devicelink profiles. + if (cmsIsTag(v ->OutputProfile, icSigColorantTableOutTag)) { + + OutputColorant = cmsReadColorantTable(v ->OutputProfile, icSigColorantTableOutTag); + } + + } else { + + if (cmsIsTag(v ->OutputProfile, icSigColorantTableTag)) { + + OutputColorant = cmsReadColorantTable(v ->OutputProfile, icSigColorantTableTag); + } + } + + if (InputColorant) + cmsAddTag(hICC, icSigColorantTableTag, InputColorant); + + if (OutputColorant) + cmsAddTag(hICC, icSigColorantTableOutTag, OutputColorant); + + + + if (MustFreeLUT) cmsFreeLUT(Lut); + if (InputColorant) cmsFreeNamedColorList(InputColorant); + if (OutputColorant) cmsFreeNamedColorList(OutputColorant); + + return hICC; + +} + + +// This is a devicelink operating in the target colorspace with as many transfer +// functions as components + +cmsHPROFILE LCMSEXPORT cmsCreateLinearizationDeviceLink(icColorSpaceSignature ColorSpace, + LPGAMMATABLE TransferFunctions[]) +{ + cmsHPROFILE hICC; + LPLUT Lut; + + + hICC = _cmsCreateProfilePlaceholder(); + if (!hICC) // can't allocate + return NULL; + + + cmsSetDeviceClass(hICC, icSigLinkClass); + cmsSetColorSpace(hICC, ColorSpace); + cmsSetPCS(hICC, ColorSpace); + cmsSetRenderingIntent(hICC, INTENT_PERCEPTUAL); + + + // Creates a LUT with prelinearization step only + Lut = cmsAllocLUT(); + if (Lut == NULL) return NULL; + + // Set up channels + Lut ->InputChan = Lut ->OutputChan = _cmsChannelsOf(ColorSpace); + + // Copy tables to LUT + cmsAllocLinearTable(Lut, TransferFunctions, 1); + + // Create tags + cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "lcms linearization device link"); + cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "linearization built-in"); + + cmsAddTag(hICC, icSigMediaWhitePointTag, (LPVOID) cmsD50_XYZ()); + cmsAddTag(hICC, icSigAToB0Tag, (LPVOID) Lut); + + // LUT is already on virtual profile + cmsFreeLUT(Lut); + + // Ok, done + return hICC; +} + + +// Ink-limiting algorithm +// +// Sum = C + M + Y + K +// If Sum > InkLimit +// Ratio= 1 - (Sum - InkLimit) / (C + M + Y) +// if Ratio <0 +// Ratio=0 +// endif +// Else +// Ratio=1 +// endif +// +// C = Ratio * C +// M = Ratio * M +// Y = Ratio * Y +// K: Does not change + +static +int InkLimitingSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + double InkLimit = *(double *) Cargo; + double SumCMY, SumCMYK, Ratio; + + InkLimit = (InkLimit * 655.35); + + SumCMY = In[0] + In[1] + In[2]; + SumCMYK = SumCMY + In[3]; + + if (SumCMYK > InkLimit) { + + Ratio = 1 - ((SumCMYK - InkLimit) / SumCMY); + if (Ratio < 0) + Ratio = 0; + } + else Ratio = 1; + + Out[0] = (WORD) floor(In[0] * Ratio + 0.5); // C + Out[1] = (WORD) floor(In[1] * Ratio + 0.5); // M + Out[2] = (WORD) floor(In[2] * Ratio + 0.5); // Y + + Out[3] = In[3]; // K (untouched) + + return TRUE; +} + +// This is a devicelink operating in CMYK for ink-limiting + +cmsHPROFILE LCMSEXPORT cmsCreateInkLimitingDeviceLink(icColorSpaceSignature ColorSpace, + double Limit) +{ + cmsHPROFILE hICC; + LPLUT Lut; + + if (ColorSpace != icSigCmykData) { + cmsSignalError(LCMS_ERRC_ABORTED, "InkLimiting: Only CMYK currently supported"); + return NULL; + } + + if (Limit < 0.0 || Limit > 400) { + + cmsSignalError(LCMS_ERRC_WARNING, "InkLimiting: Limit should be between 0..400"); + if (Limit < 0) Limit = 0; + if (Limit > 400) Limit = 400; + + } + + hICC = _cmsCreateProfilePlaceholder(); + if (!hICC) // can't allocate + return NULL; + + + cmsSetDeviceClass(hICC, icSigLinkClass); + cmsSetColorSpace(hICC, ColorSpace); + cmsSetPCS(hICC, ColorSpace); + cmsSetRenderingIntent(hICC, INTENT_PERCEPTUAL); + + + // Creates a LUT with 3D grid only + Lut = cmsAllocLUT(); + if (Lut == NULL) { + cmsCloseProfile(hICC); + return NULL; + } + + + cmsAlloc3DGrid(Lut, 17, _cmsChannelsOf(ColorSpace), + _cmsChannelsOf(ColorSpace)); + + if (!cmsSample3DGrid(Lut, InkLimitingSampler, (LPVOID) &Limit, 0)) { + + // Shouldn't reach here + cmsFreeLUT(Lut); + cmsCloseProfile(hICC); + return NULL; + } + + // Create tags + + cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "lcms ink limiting device link"); + cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "ink limiting built-in"); + + cmsAddTag(hICC, icSigMediaWhitePointTag, (LPVOID) cmsD50_XYZ()); + + cmsAddTag(hICC, icSigAToB0Tag, (LPVOID) Lut); + + // LUT is already on virtual profile + cmsFreeLUT(Lut); + + // Ok, done + return hICC; +} + + + +static +LPLUT Create3x3EmptyLUT(void) +{ + LPLUT AToB0 = cmsAllocLUT(); + if (AToB0 == NULL) return NULL; + + AToB0 -> InputChan = AToB0 -> OutputChan = 3; + return AToB0; +} + + + +// Creates a fake Lab identity. +cmsHPROFILE LCMSEXPORT cmsCreateLabProfile(LPcmsCIExyY WhitePoint) +{ + cmsHPROFILE hProfile; + LPLUT Lut; + + hProfile = cmsCreateRGBProfile(WhitePoint == NULL ? cmsD50_xyY() : WhitePoint, NULL, NULL); + if (hProfile == NULL) return NULL; + + cmsSetDeviceClass(hProfile, icSigAbstractClass); + cmsSetColorSpace(hProfile, icSigLabData); + cmsSetPCS(hProfile, icSigLabData); + + cmsAddTag(hProfile, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hProfile, icSigProfileDescriptionTag, (LPVOID) "lcms Lab identity"); + cmsAddTag(hProfile, icSigDeviceModelDescTag, (LPVOID) "Lab built-in"); + + + // An empty LUTs is all we need + Lut = Create3x3EmptyLUT(); + if (Lut == NULL) { + cmsCloseProfile(hProfile); + return NULL; + } + + cmsAddTag(hProfile, icSigAToB0Tag, (LPVOID) Lut); + cmsAddTag(hProfile, icSigBToA0Tag, (LPVOID) Lut); + + cmsFreeLUT(Lut); + + return hProfile; +} + + +// Creates a fake Lab identity. +cmsHPROFILE LCMSEXPORT cmsCreateLab4Profile(LPcmsCIExyY WhitePoint) +{ + cmsHPROFILE hProfile; + LPLUT Lut; + + hProfile = cmsCreateRGBProfile(WhitePoint == NULL ? cmsD50_xyY() : WhitePoint, NULL, NULL); + if (hProfile == NULL) return NULL; + + cmsSetProfileICCversion(hProfile, 0x4000000); + + cmsSetDeviceClass(hProfile, icSigAbstractClass); + cmsSetColorSpace(hProfile, icSigLabData); + cmsSetPCS(hProfile, icSigLabData); + + cmsAddTag(hProfile, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hProfile, icSigProfileDescriptionTag, (LPVOID) "lcms Lab identity v4"); + cmsAddTag(hProfile, icSigDeviceModelDescTag, (LPVOID) "Lab v4 built-in"); + + + // An empty LUTs is all we need + Lut = Create3x3EmptyLUT(); + if (Lut == NULL) { + cmsCloseProfile(hProfile); + return NULL; + } + + Lut -> wFlags |= LUT_V4_INPUT_EMULATE_V2; + cmsAddTag(hProfile, icSigAToB0Tag, (LPVOID) Lut); + + Lut -> wFlags |= LUT_V4_OUTPUT_EMULATE_V2; + cmsAddTag(hProfile, icSigBToA0Tag, (LPVOID) Lut); + + cmsFreeLUT(Lut); + + return hProfile; +} + + + +// Creates a fake XYZ identity +cmsHPROFILE LCMSEXPORT cmsCreateXYZProfile(void) +{ + cmsHPROFILE hProfile; + LPLUT Lut; + + hProfile = cmsCreateRGBProfile(cmsD50_xyY(), NULL, NULL); + if (hProfile == NULL) return NULL; + + cmsSetDeviceClass(hProfile, icSigAbstractClass); + cmsSetColorSpace(hProfile, icSigXYZData); + cmsSetPCS(hProfile, icSigXYZData); + + cmsAddTag(hProfile, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hProfile, icSigProfileDescriptionTag, (LPVOID) "lcms XYZ identity"); + cmsAddTag(hProfile, icSigDeviceModelDescTag, (LPVOID) "XYZ built-in"); + + // An empty LUTs is all we need + Lut = Create3x3EmptyLUT(); + if (Lut == NULL) { + cmsCloseProfile(hProfile); + return NULL; + } + + cmsAddTag(hProfile, icSigAToB0Tag, (LPVOID) Lut); + cmsAddTag(hProfile, icSigBToA0Tag, (LPVOID) Lut); + cmsAddTag(hProfile, icSigPreview0Tag, (LPVOID) Lut); + + cmsFreeLUT(Lut); + return hProfile; +} + + + +/* + +If R’sRGB,G’sRGB, B’sRGB < 0.04045 + + R = R’sRGB / 12.92 + G = G’sRGB / 12.92 + B = B’sRGB / 12.92 + + + +else if R’sRGB,G’sRGB, B’sRGB >= 0.04045 + + R = ((R’sRGB + 0.055) / 1.055)^2.4 + G = ((G’sRGB + 0.055) / 1.055)^2.4 + B = ((B’sRGB + 0.055) / 1.055)^2.4 + + */ + +static +LPGAMMATABLE Build_sRGBGamma(void) +{ + double Parameters[5]; + + Parameters[0] = 2.4; + Parameters[1] = 1. / 1.055; + Parameters[2] = 0.055 / 1.055; + Parameters[3] = 1. / 12.92; + Parameters[4] = 0.04045; // d + + return cmsBuildParametricGamma(1024, 4, Parameters); +} + +// Create the ICC virtual profile for sRGB space +cmsHPROFILE LCMSEXPORT cmsCreate_sRGBProfile(void) +{ + cmsCIExyY D65; + cmsCIExyYTRIPLE Rec709Primaries = { + {0.6400, 0.3300, 1.0}, + {0.3000, 0.6000, 1.0}, + {0.1500, 0.0600, 1.0} + }; + LPGAMMATABLE Gamma22[3]; + cmsHPROFILE hsRGB; + + cmsWhitePointFromTemp(6504, &D65); + Gamma22[0] = Gamma22[1] = Gamma22[2] = Build_sRGBGamma(); + + hsRGB = cmsCreateRGBProfile(&D65, &Rec709Primaries, Gamma22); + cmsFreeGamma(Gamma22[0]); + if (hsRGB == NULL) return NULL; + + + cmsAddTag(hsRGB, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hsRGB, icSigDeviceModelDescTag, (LPVOID) "sRGB built-in"); + cmsAddTag(hsRGB, icSigProfileDescriptionTag, (LPVOID) "sRGB built-in"); + + return hsRGB; +} + + + +typedef struct { + double Brightness; + double Contrast; + double Hue; + double Saturation; + cmsCIEXYZ WPsrc, WPdest; + +} BCHSWADJUSTS, *LPBCHSWADJUSTS; + + +static +int bchswSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + cmsCIELab LabIn, LabOut; + cmsCIELCh LChIn, LChOut; + cmsCIEXYZ XYZ; + LPBCHSWADJUSTS bchsw = (LPBCHSWADJUSTS) Cargo; + + + cmsLabEncoded2Float(&LabIn, In); + + + cmsLab2LCh(&LChIn, &LabIn); + + // Do some adjusts on LCh + + LChOut.L = LChIn.L * bchsw ->Contrast + bchsw ->Brightness; + LChOut.C = LChIn.C + bchsw -> Saturation; + LChOut.h = LChIn.h + bchsw -> Hue; + + + cmsLCh2Lab(&LabOut, &LChOut); + + // Move white point in Lab + + cmsLab2XYZ(&bchsw ->WPsrc, &XYZ, &LabOut); + cmsXYZ2Lab(&bchsw ->WPdest, &LabOut, &XYZ); + + // Back to encoded + + cmsFloat2LabEncoded(Out, &LabOut); + + return TRUE; +} + + +// Creates an abstract profile operating in Lab space for Brightness, +// contrast, Saturation and white point displacement + +cmsHPROFILE LCMSEXPORT cmsCreateBCHSWabstractProfile(int nLUTPoints, + double Bright, + double Contrast, + double Hue, + double Saturation, + int TempSrc, + int TempDest) +{ + cmsHPROFILE hICC; + LPLUT Lut; + BCHSWADJUSTS bchsw; + cmsCIExyY WhitePnt; + + bchsw.Brightness = Bright; + bchsw.Contrast = Contrast; + bchsw.Hue = Hue; + bchsw.Saturation = Saturation; + + cmsWhitePointFromTemp(TempSrc, &WhitePnt); + cmsxyY2XYZ(&bchsw.WPsrc, &WhitePnt); + + cmsWhitePointFromTemp(TempDest, &WhitePnt); + cmsxyY2XYZ(&bchsw.WPdest, &WhitePnt); + + hICC = _cmsCreateProfilePlaceholder(); + if (!hICC) // can't allocate + return NULL; + + + cmsSetDeviceClass(hICC, icSigAbstractClass); + cmsSetColorSpace(hICC, icSigLabData); + cmsSetPCS(hICC, icSigLabData); + + cmsSetRenderingIntent(hICC, INTENT_PERCEPTUAL); + + + // Creates a LUT with 3D grid only + Lut = cmsAllocLUT(); + if (Lut == NULL) { + cmsCloseProfile(hICC); + return NULL; + } + + cmsAlloc3DGrid(Lut, nLUTPoints, 3, 3); + + if (!cmsSample3DGrid(Lut, bchswSampler, (LPVOID) &bchsw, 0)) { + + // Shouldn't reach here + cmsFreeLUT(Lut); + cmsCloseProfile(hICC); + return NULL; + } + + // Create tags + + cmsAddTag(hICC, icSigDeviceMfgDescTag, (LPVOID) "(lcms internal)"); + cmsAddTag(hICC, icSigProfileDescriptionTag, (LPVOID) "lcms BCHSW abstract profile"); + cmsAddTag(hICC, icSigDeviceModelDescTag, (LPVOID) "BCHSW built-in"); + + cmsAddTag(hICC, icSigMediaWhitePointTag, (LPVOID) cmsD50_XYZ()); + + cmsAddTag(hICC, icSigAToB0Tag, (LPVOID) Lut); + + // LUT is already on virtual profile + cmsFreeLUT(Lut); + + // Ok, done + return hICC; + +} + + +// Creates a fake NULL profile. This profile return 1 channel as always 0. +// Is useful only for gamut checking tricks + +cmsHPROFILE LCMSEXPORT cmsCreateNULLProfile(void) +{ + cmsHPROFILE hProfile; + LPLUT Lut; + LPGAMMATABLE EmptyTab; + + hProfile = _cmsCreateProfilePlaceholder(); + if (!hProfile) // can't allocate + return NULL; + + cmsSetDeviceClass(hProfile, icSigOutputClass); + cmsSetColorSpace(hProfile, icSigGrayData); + cmsSetPCS(hProfile, icSigLabData); + + + // An empty LUTs is all we need + Lut = cmsAllocLUT(); + if (Lut == NULL) { + cmsCloseProfile(hProfile); + return NULL; + } + + Lut -> InputChan = 3; + Lut -> OutputChan = 1; + + EmptyTab = cmsAllocGamma(2); + EmptyTab ->GammaTable[0] = 0; + EmptyTab ->GammaTable[1] = 0; + + cmsAllocLinearTable(Lut, &EmptyTab, 2); + + cmsAddTag(hProfile, icSigBToA0Tag, (LPVOID) Lut); + + cmsFreeLUT(Lut); + cmsFreeGamma(EmptyTab); + + return hProfile; +} diff --git a/icc2ps/cmswtpnt.c b/icc2ps/cmswtpnt.c new file mode 100644 index 0000000..c3ec50d --- /dev/null +++ b/icc2ps/cmswtpnt.c @@ -0,0 +1,695 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include "lcms.h" + + +// Conversions + +void LCMSEXPORT cmsXYZ2xyY(LPcmsCIExyY Dest, const cmsCIEXYZ* Source) +{ + double ISum; + + ISum = 1./(Source -> X + Source -> Y + Source -> Z); + + Dest -> x = (Source -> X) * ISum; + Dest -> y = (Source -> Y) * ISum; + Dest -> Y = Source -> Y; +} + + +void LCMSEXPORT cmsxyY2XYZ(LPcmsCIEXYZ Dest, const cmsCIExyY* Source) +{ + + Dest -> X = (Source -> x / Source -> y) * Source -> Y; + Dest -> Y = Source -> Y; + Dest -> Z = ((1 - Source -> x - Source -> y) / Source -> y) * Source -> Y; +} + + +// Obtains WhitePoint from Temperature + +LCMSBOOL LCMSEXPORT cmsWhitePointFromTemp(int TempK, LPcmsCIExyY WhitePoint) +{ + double x, y; + double T, T2, T3; + // double M1, M2; + + + // No optimization provided. + + T = TempK; + T2 = T*T; // Square + T3 = T2*T; // Cube + + // For correlated color temperature (T) between 4000K and 7000K: + + if (T >= 4000. && T <= 7000.) + { + x = -4.6070*(1E9/T3) + 2.9678*(1E6/T2) + 0.09911*(1E3/T) + 0.244063; + } + else + // or for correlated color temperature (T) between 7000K and 25000K: + + if (T > 7000.0 && T <= 25000.0) + { + x = -2.0064*(1E9/T3) + 1.9018*(1E6/T2) + 0.24748*(1E3/T) + 0.237040; + } + else { + cmsSignalError(LCMS_ERRC_ABORTED, "cmsWhitePointFromTemp: invalid temp"); + return FALSE; + } + + // Obtain y(x) + + y = -3.000*(x*x) + 2.870*x - 0.275; + + // wave factors (not used, but here for futures extensions) + + // M1 = (-1.3515 - 1.7703*x + 5.9114 *y)/(0.0241 + 0.2562*x - 0.7341*y); + // M2 = (0.0300 - 31.4424*x + 30.0717*y)/(0.0241 + 0.2562*x - 0.7341*y); + + + + // Fill WhitePoint struct + + WhitePoint -> x = x; + WhitePoint -> y = y; + WhitePoint -> Y = 1.0; + + return TRUE; +} + +// Build a White point, primary chromas transfer matrix from RGB to CIE XYZ +// This is just an approximation, I am not handling all the non-linear +// aspects of the RGB to XYZ process, and assumming that the gamma correction +// has transitive property in the tranformation chain. +// +// the alghoritm: +// +// - First I build the absolute conversion matrix using +// primaries in XYZ. This matrix is next inverted +// - Then I eval the source white point across this matrix +// obtaining the coeficients of the transformation +// - Then, I apply these coeficients to the original matrix + + +LCMSBOOL LCMSEXPORT cmsBuildRGB2XYZtransferMatrix(LPMAT3 r, LPcmsCIExyY WhitePt, + LPcmsCIExyYTRIPLE Primrs) +{ + VEC3 WhitePoint, Coef; + MAT3 Result, Primaries; + double xn, yn; + double xr, yr; + double xg, yg; + double xb, yb; + + + xn = WhitePt -> x; + yn = WhitePt -> y; + xr = Primrs -> Red.x; + yr = Primrs -> Red.y; + xg = Primrs -> Green.x; + yg = Primrs -> Green.y; + xb = Primrs -> Blue.x; + yb = Primrs -> Blue.y; + + + // Build Primaries matrix + VEC3init(&Primaries.v[0], xr, xg, xb); + VEC3init(&Primaries.v[1], yr, yg, yb); + VEC3init(&Primaries.v[2], (1-xr-yr), (1-xg-yg), (1-xb-yb)); + + + // Result = Primaries ^ (-1) inverse matrix + if (!MAT3inverse(&Primaries, &Result)) + return FALSE; + + + VEC3init(&WhitePoint, xn/yn, 1.0, (1.0-xn-yn)/yn); + + // Across inverse primaries ... + MAT3eval(&Coef, &Result, &WhitePoint); + + // Give us the Coefs, then I build transformation matrix + VEC3init(&r -> v[0], Coef.n[VX]*xr, Coef.n[VY]*xg, Coef.n[VZ]*xb); + VEC3init(&r -> v[1], Coef.n[VX]*yr, Coef.n[VY]*yg, Coef.n[VZ]*yb); + VEC3init(&r -> v[2], Coef.n[VX]*(1.0-xr-yr), Coef.n[VY]*(1.0-xg-yg), Coef.n[VZ]*(1.0-xb-yb)); + + + return TRUE; +} + + + +// Compute chromatic adaptation matrix using Chad as cone matrix + +static +void ComputeChromaticAdaptation(LPMAT3 Conversion, + LPcmsCIEXYZ SourceWhitePoint, + LPcmsCIEXYZ DestWhitePoint, + LPMAT3 Chad) + +{ + + MAT3 Chad_Inv; + VEC3 ConeSourceXYZ, ConeSourceRGB; + VEC3 ConeDestXYZ, ConeDestRGB; + MAT3 Cone, Tmp; + + + Tmp = *Chad; + MAT3inverse(&Tmp, &Chad_Inv); + + VEC3init(&ConeSourceXYZ, SourceWhitePoint -> X, + SourceWhitePoint -> Y, + SourceWhitePoint -> Z); + + VEC3init(&ConeDestXYZ, DestWhitePoint -> X, + DestWhitePoint -> Y, + DestWhitePoint -> Z); + + MAT3eval(&ConeSourceRGB, Chad, &ConeSourceXYZ); + MAT3eval(&ConeDestRGB, Chad, &ConeDestXYZ); + + // Build matrix + + VEC3init(&Cone.v[0], ConeDestRGB.n[0]/ConeSourceRGB.n[0], 0.0, 0.0); + VEC3init(&Cone.v[1], 0.0, ConeDestRGB.n[1]/ConeSourceRGB.n[1], 0.0); + VEC3init(&Cone.v[2], 0.0, 0.0, ConeDestRGB.n[2]/ConeSourceRGB.n[2]); + + + // Normalize + MAT3per(&Tmp, &Cone, Chad); + MAT3per(Conversion, &Chad_Inv, &Tmp); + +} + + +// Returns the final chrmatic adaptation from illuminant FromIll to Illuminant ToIll +// The cone matrix can be specified in ConeMatrix. If NULL, Bradford is assumed + +LCMSBOOL cmsAdaptationMatrix(LPMAT3 r, LPMAT3 ConeMatrix, LPcmsCIEXYZ FromIll, LPcmsCIEXYZ ToIll) +{ + MAT3 LamRigg = {{ // Bradford matrix + {{ 0.8951, 0.2664, -0.1614 }}, + {{ -0.7502, 1.7135, 0.0367 }}, + {{ 0.0389, -0.0685, 1.0296 }} + }}; + + + if (ConeMatrix == NULL) + ConeMatrix = &LamRigg; + + ComputeChromaticAdaptation(r, FromIll, ToIll, ConeMatrix); + return TRUE; + +} + +// Same as anterior, but assuming D50 destination. White point is given in xyY + +LCMSBOOL cmsAdaptMatrixToD50(LPMAT3 r, LPcmsCIExyY SourceWhitePt) +{ + cmsCIEXYZ Dn; + MAT3 Bradford; + MAT3 Tmp; + + cmsxyY2XYZ(&Dn, SourceWhitePt); + + cmsAdaptationMatrix(&Bradford, NULL, &Dn, cmsD50_XYZ()); + + Tmp = *r; + MAT3per(r, &Bradford, &Tmp); + + return TRUE; +} + + +// Same as anterior, but assuming D50 source. White point is given in xyY + +LCMSBOOL cmsAdaptMatrixFromD50(LPMAT3 r, LPcmsCIExyY DestWhitePt) +{ + cmsCIEXYZ Dn; + MAT3 Bradford; + MAT3 Tmp; + + cmsxyY2XYZ(&Dn, DestWhitePt); + + cmsAdaptationMatrix(&Bradford, NULL, cmsD50_XYZ(), &Dn); + + Tmp = *r; + MAT3per(r, &Bradford, &Tmp); + + return TRUE; +} + + +// Adapts a color to a given illuminant. Original color is expected to have +// a SourceWhitePt white point. + +LCMSBOOL LCMSEXPORT cmsAdaptToIlluminant(LPcmsCIEXYZ Result, + LPcmsCIEXYZ SourceWhitePt, + LPcmsCIEXYZ Illuminant, + LPcmsCIEXYZ Value) +{ + MAT3 Bradford; + VEC3 In, Out; + + // BradfordLamRiggChromaticAdaptation(&Bradford, SourceWhitePt, Illuminant); + + cmsAdaptationMatrix(&Bradford, NULL, SourceWhitePt, Illuminant); + + VEC3init(&In, Value -> X, Value -> Y, Value -> Z); + MAT3eval(&Out, &Bradford, &In); + + Result -> X = Out.n[0]; + Result -> Y = Out.n[1]; + Result -> Z = Out.n[2]; + + return TRUE; +} + + + +typedef struct { + + double mirek; // temp (in microreciprocal kelvin) + double ut; // u coord of intersection w/ blackbody locus + double vt; // v coord of intersection w/ blackbody locus + double tt; // slope of ISOTEMPERATURE. line + + } ISOTEMPERATURE,FAR* LPISOTEMPERATURE; + +static ISOTEMPERATURE isotempdata[] = { +// {Mirek, Ut, Vt, Tt } + {0, 0.18006, 0.26352, -0.24341}, + {10, 0.18066, 0.26589, -0.25479}, + {20, 0.18133, 0.26846, -0.26876}, + {30, 0.18208, 0.27119, -0.28539}, + {40, 0.18293, 0.27407, -0.30470}, + {50, 0.18388, 0.27709, -0.32675}, + {60, 0.18494, 0.28021, -0.35156}, + {70, 0.18611, 0.28342, -0.37915}, + {80, 0.18740, 0.28668, -0.40955}, + {90, 0.18880, 0.28997, -0.44278}, + {100, 0.19032, 0.29326, -0.47888}, + {125, 0.19462, 0.30141, -0.58204}, + {150, 0.19962, 0.30921, -0.70471}, + {175, 0.20525, 0.31647, -0.84901}, + {200, 0.21142, 0.32312, -1.0182 }, + {225, 0.21807, 0.32909, -1.2168 }, + {250, 0.22511, 0.33439, -1.4512 }, + {275, 0.23247, 0.33904, -1.7298 }, + {300, 0.24010, 0.34308, -2.0637 }, + {325, 0.24702, 0.34655, -2.4681 }, + {350, 0.25591, 0.34951, -2.9641 }, + {375, 0.26400, 0.35200, -3.5814 }, + {400, 0.27218, 0.35407, -4.3633 }, + {425, 0.28039, 0.35577, -5.3762 }, + {450, 0.28863, 0.35714, -6.7262 }, + {475, 0.29685, 0.35823, -8.5955 }, + {500, 0.30505, 0.35907, -11.324 }, + {525, 0.31320, 0.35968, -15.628 }, + {550, 0.32129, 0.36011, -23.325 }, + {575, 0.32931, 0.36038, -40.770 }, + {600, 0.33724, 0.36051, -116.45 } +}; + +#define NISO sizeof(isotempdata)/sizeof(ISOTEMPERATURE) + + +// Robertson's method + +static +double Robertson(LPcmsCIExyY v) +{ + int j; + double us,vs; + double uj,vj,tj,di,dj,mi,mj; + double Tc = -1, xs, ys; + + di = mi = 0; + xs = v -> x; + ys = v -> y; + + // convert (x,y) to CIE 1960 (u,v) + + us = (2*xs) / (-xs + 6*ys + 1.5); + vs = (3*ys) / (-xs + 6*ys + 1.5); + + + for (j=0; j < NISO; j++) { + + uj = isotempdata[j].ut; + vj = isotempdata[j].vt; + tj = isotempdata[j].tt; + mj = isotempdata[j].mirek; + + dj = ((vs - vj) - tj * (us - uj)) / sqrt(1 + tj*tj); + + if ((j!=0) && (di/dj < 0.0)) { + Tc = 1000000.0 / (mi + (di / (di - dj)) * (mj - mi)); + break; + } + + di = dj; + mi = mj; + } + + + if (j == NISO) return -1; + return Tc; +} + + + +static +LCMSBOOL InRange(LPcmsCIExyY a, LPcmsCIExyY b, double tolerance) +{ + double dist_x, dist_y; + + dist_x = fabs(a->x - b->x); + dist_y = fabs(a->y - b->y); + + return (tolerance >= dist_x * dist_x + dist_y * dist_y); + +} + + +typedef struct { + char Name[30]; + cmsCIExyY Val; + + } WHITEPOINTS,FAR *LPWHITEPOINTS; + +static +int FromD40toD150(LPWHITEPOINTS pts) +{ + int i, n; + + n = 0; + for (i=40; i < 150; i ++) + { + sprintf(pts[n].Name, "D%d", i); + cmsWhitePointFromTemp((int) (i*100.0), &pts[n].Val); + n++; + } + + return n; +} + + +// To be removed in future versions +void _cmsIdentifyWhitePoint(char *Buffer, LPcmsCIEXYZ WhitePt) +{ + int i, n; + cmsCIExyY Val; + double T; + WHITEPOINTS SomeIlluminants[140] = { + + {"CIE illuminant A", {0.4476, 0.4074, 1.0}}, + {"CIE illuminant C", {0.3101, 0.3162, 1.0}}, + {"D65 (daylight)", {0.3127, 0.3291, 1.0}}, + }; + + n = FromD40toD150(&SomeIlluminants[3]) + 3; + + cmsXYZ2xyY(&Val, WhitePt); + + Val.Y = 1.; + for (i=0; i < n; i++) + { + + if (InRange(&Val, &SomeIlluminants[i].Val, 0.000005)) + { + strcpy(Buffer, "WhitePoint : "); + strcat(Buffer, SomeIlluminants[i].Name); + return; + } + } + + T = Robertson(&Val); + + if (T > 0) + sprintf(Buffer, "White point near %dK", (int) T); + else + { + sprintf(Buffer, "Unknown white point (X:%1.2g, Y:%1.2g, Z:%1.2g)", + WhitePt -> X, WhitePt -> Y, WhitePt -> Z); + + } + +} + + +// Use darker colorant to obtain black point + +static +int BlackPointAsDarkerColorant(cmsHPROFILE hInput, + int Intent, + LPcmsCIEXYZ BlackPoint, + DWORD dwFlags) +{ + WORD *Black, *White; + cmsHTRANSFORM xform; + icColorSpaceSignature Space; + int nChannels; + DWORD dwFormat; + cmsHPROFILE hLab; + cmsCIELab Lab; + cmsCIEXYZ BlackXYZ, MediaWhite; + + // If the profile does not support input direction, assume Black point 0 + if (!cmsIsIntentSupported(hInput, Intent, LCMS_USED_AS_INPUT)) { + + BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; + return 0; + } + + + // Try to get black by using black colorant + Space = cmsGetColorSpace(hInput); + + if (!_cmsEndPointsBySpace(Space, &White, &Black, &nChannels)) { + + BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; + return 0; + } + + dwFormat = CHANNELS_SH(nChannels)|BYTES_SH(2); + + hLab = cmsCreateLabProfile(NULL); + + xform = cmsCreateTransform(hInput, dwFormat, + hLab, TYPE_Lab_DBL, Intent, cmsFLAGS_NOTPRECALC); + + + cmsDoTransform(xform, Black, &Lab, 1); + + // Force it to be neutral, clip to max. L* of 50 + + Lab.a = Lab.b = 0; + if (Lab.L > 50) Lab.L = 50; + + cmsCloseProfile(hLab); + cmsDeleteTransform(xform); + + cmsLab2XYZ(NULL, &BlackXYZ, &Lab); + + if (Intent == INTENT_ABSOLUTE_COLORIMETRIC) { + + *BlackPoint = BlackXYZ; + } + else { + + if (!(dwFlags & LCMS_BPFLAGS_D50_ADAPTED)) { + + cmsTakeMediaWhitePoint(&MediaWhite, hInput); + cmsAdaptToIlluminant(BlackPoint, cmsD50_XYZ(), &MediaWhite, &BlackXYZ); + } + else + *BlackPoint = BlackXYZ; + } + + return 1; +} + + +// Get a black point of output CMYK profile, discounting any ink-limiting embedded +// in the profile. For doing that, use perceptual intent in input direction: +// Lab (0, 0, 0) -> [Perceptual] Profile -> CMYK -> [Rel. colorimetric] Profile -> Lab + +static +int BlackPointUsingPerceptualBlack(LPcmsCIEXYZ BlackPoint, + cmsHPROFILE hProfile, + DWORD dwFlags) +{ + cmsHTRANSFORM hPercLab2CMYK, hRelColCMYK2Lab; + cmsHPROFILE hLab; + cmsCIELab LabIn, LabOut; + WORD CMYK[MAXCHANNELS]; + cmsCIEXYZ BlackXYZ, MediaWhite; + + + if (!cmsIsIntentSupported(hProfile, INTENT_PERCEPTUAL, LCMS_USED_AS_INPUT)) { + + BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; + return 0; + } + + hLab = cmsCreateLabProfile(NULL); + + hPercLab2CMYK = cmsCreateTransform(hLab, TYPE_Lab_DBL, + hProfile, TYPE_CMYK_16, + INTENT_PERCEPTUAL, cmsFLAGS_NOTPRECALC); + + hRelColCMYK2Lab = cmsCreateTransform(hProfile, TYPE_CMYK_16, + hLab, TYPE_Lab_DBL, + INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOTPRECALC); + + LabIn.L = LabIn.a = LabIn.b = 0; + + cmsDoTransform(hPercLab2CMYK, &LabIn, CMYK, 1); + cmsDoTransform(hRelColCMYK2Lab, CMYK, &LabOut, 1); + + if (LabOut.L > 50) LabOut.L = 50; + LabOut.a = LabOut.b = 0; + + cmsDeleteTransform(hPercLab2CMYK); + cmsDeleteTransform(hRelColCMYK2Lab); + cmsCloseProfile(hLab); + + cmsLab2XYZ(NULL, &BlackXYZ, &LabOut); + + if (!(dwFlags & LCMS_BPFLAGS_D50_ADAPTED)){ + cmsTakeMediaWhitePoint(&MediaWhite, hProfile); + cmsAdaptToIlluminant(BlackPoint, cmsD50_XYZ(), &MediaWhite, &BlackXYZ); + } + else + *BlackPoint = BlackXYZ; + + return 1; + +} + + +// Get Perceptual black of v4 profiles. +static +int GetV4PerceptualBlack(LPcmsCIEXYZ BlackPoint, cmsHPROFILE hProfile, DWORD dwFlags) +{ + if (dwFlags & LCMS_BPFLAGS_D50_ADAPTED) { + + BlackPoint->X = PERCEPTUAL_BLACK_X; + BlackPoint->Y = PERCEPTUAL_BLACK_Y; + BlackPoint->Z = PERCEPTUAL_BLACK_Z; + } + else { + + cmsCIEXYZ D50BlackPoint, MediaWhite; + + cmsTakeMediaWhitePoint(&MediaWhite, hProfile); + D50BlackPoint.X = PERCEPTUAL_BLACK_X; + D50BlackPoint.Y = PERCEPTUAL_BLACK_Y; + D50BlackPoint.Z = PERCEPTUAL_BLACK_Z; + + // Obtain the absolute XYZ. Adapt perceptual black back from D50 to whatever media white + cmsAdaptToIlluminant(BlackPoint, cmsD50_XYZ(), &MediaWhite, &D50BlackPoint); + } + + + return 1; +} + + +// This function shouldn't exist at all -- there is such quantity of broken +// profiles on black point tag, that we must somehow fix chromaticity to +// avoid huge tint when doing Black point compensation. This function does +// just that. There is a special flag for using black point tag, but turned +// off by default because it is bogus on most profiles. The detection algorithm +// involves to turn BP to neutral and to use only L component. + +int cmsDetectBlackPoint(LPcmsCIEXYZ BlackPoint, cmsHPROFILE hProfile, int Intent, DWORD dwFlags) +{ + + // v4 + perceptual & saturation intents does have its own black point, and it is + // well specified enough to use it. + + if ((cmsGetProfileICCversion(hProfile) >= 0x4000000) && + (Intent == INTENT_PERCEPTUAL || Intent == INTENT_SATURATION)) { + + // Matrix shaper share MRC & perceptual intents + if (_cmsIsMatrixShaper(hProfile)) + return BlackPointAsDarkerColorant(hProfile, INTENT_RELATIVE_COLORIMETRIC, BlackPoint, cmsFLAGS_NOTPRECALC); + + // CLUT based - Get perceptual black point (fixed value) + return GetV4PerceptualBlack(BlackPoint, hProfile, dwFlags); + } + + +#ifdef HONOR_BLACK_POINT_TAG + + // v2, v4 rel/abs colorimetric + if (cmsIsTag(hProfile, icSigMediaBlackPointTag) && + Intent == INTENT_RELATIVE_COLORIMETRIC) { + + cmsCIEXYZ BlackXYZ, UntrustedBlackPoint, TrustedBlackPoint, MediaWhite; + cmsCIELab Lab; + + // If black point is specified, then use it, + + cmsTakeMediaBlackPoint(&BlackXYZ, hProfile); + cmsTakeMediaWhitePoint(&MediaWhite, hProfile); + + // Black point is absolute XYZ, so adapt to D50 to get PCS value + cmsAdaptToIlluminant(&UntrustedBlackPoint, &MediaWhite, cmsD50_XYZ(), &BlackXYZ); + + // Force a=b=0 to get rid of any chroma + + cmsXYZ2Lab(NULL, &Lab, &UntrustedBlackPoint); + Lab.a = Lab.b = 0; + if (Lab.L > 50) Lab.L = 50; // Clip to L* <= 50 + + cmsLab2XYZ(NULL, &TrustedBlackPoint, &Lab); + + // Return BP as D50 relative or absolute XYZ (depends on flags) + if (!(dwFlags & LCMS_BPFLAGS_D50_ADAPTED)) + cmsAdaptToIlluminant(BlackPoint, cmsD50_XYZ(), &MediaWhite, &TrustedBlackPoint); + else + *BlackPoint = TrustedBlackPoint; + + return 1; + } + +#endif + + // That is about v2 profiles. + + // If output profile, discount ink-limiting and that's all + if (Intent == INTENT_RELATIVE_COLORIMETRIC && + (cmsGetDeviceClass(hProfile) == icSigOutputClass) && + (cmsGetColorSpace(hProfile) == icSigCmykData)) + return BlackPointUsingPerceptualBlack(BlackPoint, hProfile, dwFlags); + + // Nope, compute BP using current intent. + return BlackPointAsDarkerColorant(hProfile, Intent, BlackPoint, dwFlags); + +} diff --git a/icc2ps/cmsxform.c b/icc2ps/cmsxform.c new file mode 100644 index 0000000..0d31b9b --- /dev/null +++ b/icc2ps/cmsxform.c @@ -0,0 +1,2014 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "lcms.h" + + +// Transformations stuff +// ----------------------------------------------------------------------- + + +// Interface + +cmsHTRANSFORM LCMSEXPORT cmsCreateTransform(cmsHPROFILE Input, + DWORD InputFormat, + cmsHPROFILE Output, + DWORD OutputFormat, + int Intent, + DWORD dwFlags); + +cmsHTRANSFORM LCMSEXPORT cmsCreateProofingTransform(cmsHPROFILE Input, + DWORD InputFormat, + cmsHPROFILE Output, + DWORD OutputFormat, + cmsHPROFILE Proofing, + int Intent, + int ProofingIntent, + DWORD dwFlags); + + +void LCMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform); + +void LCMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, + LPVOID InputBuffer, + LPVOID OutputBuffer, unsigned int Size); + +void LCMSEXPORT cmsGetAlarmCodes(int *r, int *g, int *b); +void LCMSEXPORT cmsSetAlarmCodes(int r, int g, int b); +LCMSBOOL LCMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, + int Intent, int UsedDirection); + +// ------------------------------------------------------------------------- + + +// Alarm RGB codes + +static WORD AlarmR = 0x8fff, AlarmG = 0x8fff, AlarmB = 0x8fff; + +// Tag tables, soted by intents + +static icTagSignature Device2PCS[] = {icSigAToB0Tag, // Perceptual + icSigAToB1Tag, // Relative colorimetric + icSigAToB2Tag, // Saturation + icSigAToB1Tag }; // Absolute colorimetric + // (Relative/WhitePoint) + +static icTagSignature PCS2Device[] = {icSigBToA0Tag, // Perceptual + icSigBToA1Tag, // Relative colorimetric + icSigBToA2Tag, // Saturation + icSigBToA1Tag }; // Absolute colorimetric + // (Relative/WhitePoint) + + +static icTagSignature Preview[] = {icSigPreview0Tag, + icSigPreview1Tag, + icSigPreview2Tag, + icSigPreview1Tag }; + + + +static volatile double GlobalAdaptationState = 0; + +// --------------------------------Stages-------------------------------------- + +// Following routines does implement several kind of steps inside +// transform. On building the transform, code chooses adequate. + + +// From Shaper-Matrix to PCS + +static +void ShaperMatrixToPCS(struct _cmstransform_struct *p, + WORD In[3], WORD Out[3]) +{ + cmsEvalMatShaper(p -> InMatShaper, In, Out); +} + +// From LUT to PCS + +static +void LUTtoPCS(struct _cmstransform_struct *p, + WORD In[], WORD Out[3]) +{ + cmsEvalLUT(p -> Device2PCS, In, Out); +} + +// From indexed named color to PCS + +static +void NC2toPCS(struct _cmstransform_struct *p, + WORD In[], WORD Out[3]) +{ + int index = In[0]; + + if (index >= p ->NamedColorList-> nColors) + cmsSignalError(LCMS_ERRC_WARNING, "Color %d out of range", index); + else + CopyMemory(Out, p ->NamedColorList->List[index].PCS, 3 * sizeof(WORD)); +} + +// From PCS to Shaper-Matrix + +static +void PCStoShaperMatrix(struct _cmstransform_struct *p, + WORD In[3], WORD Out[3]) +{ + cmsEvalMatShaper(p -> OutMatShaper, In, Out); +} + +// From PCS to LUT + +static +void PCStoLUT(struct _cmstransform_struct *p, + WORD In[3], WORD Out[]) +{ + cmsEvalLUT(p -> PCS2Device, In, Out); +} + + + + +// ----------------------- TRANSFORMATIONS -------------------------- + + +// Inlining some assignations + +#define COPY_3CHANS(to, from) { to[0]=from[0]; to[1]=from[1]; to[2]=from[2]; } + + +// Null transformation, only hold channels + +static +void NullXFORM(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS]; + register unsigned int i, n; + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + n = Size; // Buffer len + + for (i=0; i < n; i++) + { + accum = p -> FromInput(p, wIn, accum); + output = p -> ToOutput(p, wIn, output); + } + +} + + +// This is the "normal" proofing transform + +static +void NormalXFORM(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS], wOut[MAXCHANNELS]; + WORD wStageABC[3], wPCS[3], wStageLMN[MAXCHANNELS]; + WORD wGamut[1]; + register unsigned int i, n; + + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + n = Size; // Buffer len + + for (i=0; i < n; i++) + { + + accum = p -> FromInput(p, wIn, accum); + + p -> FromDevice(p, wIn, wStageABC); + + if (p -> Stage1) { + + p -> Stage1(wStageABC, wPCS, &p->m1, &p->of1); + + if (wPCS[0] == 0xFFFF && + wPCS[1] == 0xFFFF && + wPCS[2] == 0xFFFF) { + + // White cutoff + + output = p -> ToOutput((_LPcmsTRANSFORM) p, + _cmsWhiteBySpace(cmsGetColorSpace(p -> OutputProfile)), + output); + continue; + } + } + else + COPY_3CHANS(wPCS, wStageABC); + + + if (p->Gamut) { + + // Gamut check, enabled across CLUT + + cmsEvalLUT(p -> Gamut, wPCS, wGamut); + + if (wGamut[0] >= 1) { + + wOut[0] = AlarmR; // Gamut alarm + wOut[1] = AlarmG; + wOut[2] = AlarmB; + wOut[3] = 0; + + output = p -> ToOutput((_LPcmsTRANSFORM)p, wOut, output); + continue; + } + } + + if (p -> Preview) + { + WORD wPreview[3]; // PCS + + cmsEvalLUT(p -> Preview, wPCS, wPreview); + COPY_3CHANS(wPCS, wPreview); + } + + if (p -> Stage2) { + + p -> Stage2(wPCS, wStageLMN, &p->m2, &p->of2); + + if (wPCS[0] == 0xFFFF && + wPCS[1] == 0xFFFF && + wPCS[2] == 0xFFFF) { + + // White cutoff + + output = p -> ToOutput((_LPcmsTRANSFORM)p, + _cmsWhiteBySpace(cmsGetColorSpace(p -> OutputProfile)), + output); + + continue; + } + + } + else + COPY_3CHANS(wStageLMN, wPCS); + + // Here wOut may come as MAXCHANNELS channels + + p -> ToDevice(p, wStageLMN, wOut); + + output = p -> ToOutput((_LPcmsTRANSFORM)p, wOut, output); + } +} + +// Using precalculated LUT + +static +void PrecalculatedXFORM(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS], wOut[MAXCHANNELS]; + unsigned int i, n; + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + n = Size; // Buffer len + + + for (i=0; i < n; i++) { + + accum = p -> FromInput(p, wIn, accum); + + // Try to speedup things on plain devicelinks + + if (p ->DeviceLink ->wFlags == LUT_HAS3DGRID) { + + p ->DeviceLink ->CLut16params.Interp3D(wIn, wOut, + p ->DeviceLink -> T, + &p ->DeviceLink -> CLut16params); + } + else + cmsEvalLUT(p -> DeviceLink, wIn, wOut); + + + output = p -> ToOutput(p, wOut, output); + } +} + +// Auxiliar: Handle precalculated gamut check + +static +void TransformOnePixelWithGamutCheck(_LPcmsTRANSFORM p, WORD wIn[], WORD wOut[]) +{ + WORD wOutOfGamut; + + cmsEvalLUT(p ->GamutCheck, wIn, &wOutOfGamut); + + if (wOutOfGamut >= 1) { + + ZeroMemory(wOut, sizeof(WORD) * MAXCHANNELS); + + wOut[0] = AlarmR; + wOut[1] = AlarmG; + wOut[2] = AlarmB; + + } + else + cmsEvalLUT(p -> DeviceLink, wIn, wOut); + +} + + +static +void PrecalculatedXFORMGamutCheck(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS], wOut[MAXCHANNELS]; + register unsigned int i, n; + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + n = Size; // Buffer len + + for (i=0; i < n; i++) { + + accum = p -> FromInput(p, wIn, accum); + + TransformOnePixelWithGamutCheck(p, wIn, wOut); + + output = p -> ToOutput(p, wOut, output); + } +} + + + +// Using precalculated LUT + Cache + +static +void CachedXFORM(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS], wOut[MAXCHANNELS]; + register unsigned int i, n; + WORD CacheIn[MAXCHANNELS], CacheOut[MAXCHANNELS]; + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + n = Size; // Buffer len + + // Empty buffers for quick memcmp + + ZeroMemory(wIn, sizeof(WORD) * MAXCHANNELS); + ZeroMemory(wOut, sizeof(WORD) * MAXCHANNELS); + + + LCMS_READ_LOCK(&p ->rwlock); + CopyMemory(CacheIn, p ->CacheIn, sizeof(WORD) * MAXCHANNELS); + CopyMemory(CacheOut, p ->CacheOut, sizeof(WORD) * MAXCHANNELS); + LCMS_UNLOCK(&p ->rwlock); + + for (i=0; i < n; i++) { + + accum = p -> FromInput(p, wIn, accum); + + + if (memcmp(wIn, CacheIn, sizeof(WORD) * MAXCHANNELS) == 0) { + + CopyMemory(wOut, CacheOut, sizeof(WORD) * MAXCHANNELS); + } + else { + + // Try to speedup things on plain devicelinks + + if (p ->DeviceLink ->wFlags == LUT_HAS3DGRID) { + + p ->DeviceLink ->CLut16params.Interp3D(wIn, wOut, + p ->DeviceLink -> T, + &p ->DeviceLink -> CLut16params); + } + else + cmsEvalLUT(p -> DeviceLink, wIn, wOut); + + + CopyMemory(CacheIn, wIn, sizeof(WORD) * MAXCHANNELS); + CopyMemory(CacheOut, wOut, sizeof(WORD) * MAXCHANNELS); + } + + output = p -> ToOutput(p, wOut, output); + } + + + LCMS_WRITE_LOCK(&p ->rwlock); + CopyMemory(p->CacheIn, CacheIn, sizeof(WORD) * MAXCHANNELS); + CopyMemory(p->CacheOut, CacheOut, sizeof(WORD) * MAXCHANNELS); + LCMS_UNLOCK(&p ->rwlock); + +} + + + +// Using precalculated LUT + Cache + +static +void CachedXFORMGamutCheck(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS], wOut[MAXCHANNELS]; + register unsigned int i, n; + WORD CacheIn[MAXCHANNELS], CacheOut[MAXCHANNELS]; + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + n = Size; // Buffer len + + // Empty buffers for quick memcmp + + ZeroMemory(wIn, sizeof(WORD) * MAXCHANNELS); + ZeroMemory(wOut, sizeof(WORD) * MAXCHANNELS); + + LCMS_READ_LOCK(&p ->rwlock); + CopyMemory(CacheIn, p ->CacheIn, sizeof(WORD) * MAXCHANNELS); + CopyMemory(CacheOut, p ->CacheOut, sizeof(WORD) * MAXCHANNELS); + LCMS_UNLOCK(&p ->rwlock); + + + for (i=0; i < n; i++) { + + accum = p -> FromInput(p, wIn, accum); + + if (memcmp(wIn, CacheIn, sizeof(WORD) * MAXCHANNELS) == 0) { + + CopyMemory(wOut, CacheOut, sizeof(WORD) * MAXCHANNELS); + } + else { + + TransformOnePixelWithGamutCheck(p, wIn, wOut); + + CopyMemory(CacheIn, wIn, sizeof(WORD) * MAXCHANNELS); + CopyMemory(CacheOut, wOut, sizeof(WORD) * MAXCHANNELS); + } + + output = p -> ToOutput(p, wOut, output); + } + + LCMS_WRITE_LOCK(&p ->rwlock); + CopyMemory(p->CacheIn, CacheIn, sizeof(WORD) * MAXCHANNELS); + CopyMemory(p->CacheOut, CacheOut, sizeof(WORD) * MAXCHANNELS); + LCMS_UNLOCK(&p ->rwlock); +} + + +// Using smelted Matrix/Shaper + +static +void MatrixShaperXFORM(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS], wOut[MAXCHANNELS]; + register unsigned int i, n; + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + n = Size; // Buffer len + + for (i=0; i < n; i++) + { + accum = p -> FromInput(p, wIn, accum); + cmsEvalMatShaper(p -> SmeltMatShaper, wIn, wOut); + output = p -> ToOutput(p, wOut, output); + } +} + + +// Using Named color input table + +static +void NC2deviceXform(_LPcmsTRANSFORM p, + LPVOID in, + LPVOID out, unsigned int Size) +{ + + register LPBYTE accum; + register LPBYTE output; + WORD wIn[MAXCHANNELS], wOut[MAXCHANNELS]; + register unsigned int i; + + + accum = (LPBYTE) in; + output = (LPBYTE) out; + + for (i=0; i < Size; i++) { + + accum = p -> FromInput(p, wIn, accum); + CopyMemory(wOut, p ->NamedColorList->List[wIn[0]].DeviceColorant, sizeof(WORD) * MAXCHANNELS); + output = p -> ToOutput(p, wOut, output); + } + +} + + + +// -------------------------------------------------------------------------- +// Build a LUT based on shape-matrix method. + + +// Some non-conformant gray profiles are using kTCR as L*, +// this function converts the curve to XYZ PCS. + +static +void FromLstarToXYZ(LPGAMMATABLE g, LPGAMMATABLE gxyz[3]) +{ + int i; + int nPoints = 4096; + cmsCIELab Lab; + cmsCIEXYZ XYZ; + L16PARAMS L16; + + // Setup interpolation across origin + cmsCalcL16Params(g ->nEntries, &L16); + + // Allocate curves + gxyz[0] = cmsAllocGamma(nPoints); + gxyz[1] = cmsAllocGamma(nPoints); + gxyz[2] = cmsAllocGamma(nPoints); + + // Transport from Lab to XYZ + + for (i=0; i < nPoints; i++) { + + WORD val = _cmsQuantizeVal(i, nPoints); + WORD w = cmsLinearInterpLUT16(val, g->GammaTable, &L16); + + Lab.L = ((double) 100.0 * w ) / 65535.0; + Lab.a = Lab.b = 0; + + cmsLab2XYZ(NULL, &XYZ, &Lab); + + // Should be same curve + gxyz[0] ->GammaTable[i] = (WORD) floor((65535.0 * XYZ.X) / D50X + 0.5); + gxyz[1] ->GammaTable[i] = (WORD) floor((65535.0 * XYZ.Y) / D50Y + 0.5); + gxyz[2] ->GammaTable[i] = (WORD) floor((65535.0 * XYZ.Z) / D50Z + 0.5); + } +} + +// Monochrome version + +static +LPMATSHAPER cmsBuildGrayInputMatrixShaper(cmsHPROFILE hProfile) +{ + cmsCIEXYZ Illuminant; + LPGAMMATABLE GrayTRC, Shapes[3]; + LPMATSHAPER MatShaper; + MAT3 Scale; + + GrayTRC = cmsReadICCGamma(hProfile, icSigGrayTRCTag); // Y + if (GrayTRC == NULL) return NULL; + + cmsTakeIluminant(&Illuminant, hProfile); + + if (cmsGetPCS(hProfile) == icSigLabData) { + + // Fixup for Lab monochrome + FromLstarToXYZ(GrayTRC, Shapes); + } + else { + Shapes[0] = cmsDupGamma(GrayTRC); + Shapes[1] = cmsDupGamma(GrayTRC); + Shapes[2] = cmsDupGamma(GrayTRC); + } + + if (!Shapes[0] || !Shapes[1] || !Shapes[2]) + return NULL; + + cmsFreeGamma(GrayTRC); + + // R=G=B as precondition + + VEC3init(&Scale.v[0], Illuminant.X/3, Illuminant.X/3, Illuminant.X/3); + VEC3init(&Scale.v[1], Illuminant.Y/3, Illuminant.Y/3, Illuminant.Y/3); + VEC3init(&Scale.v[2], Illuminant.Z/3, Illuminant.Z/3, Illuminant.Z/3); + + + MatShaper = cmsAllocMatShaper(&Scale, Shapes, MATSHAPER_INPUT); + cmsFreeGammaTriple(Shapes); + return MatShaper; + +} + + +// Monochrome as output + +static +LPMATSHAPER cmsBuildGrayOutputMatrixShaper(cmsHPROFILE hProfile) +{ + cmsCIEXYZ Illuminant; + LPGAMMATABLE GrayTRC, Shapes[3]; + LPMATSHAPER MatShaper; + MAT3 Scale; + + cmsTakeIluminant(&Illuminant, hProfile); + + // That is a special case for non-compliant profiles. + + if (cmsGetPCS(hProfile) == icSigLabData) { + + LPGAMMATABLE Shapes1[3]; + + GrayTRC = cmsReadICCGamma(hProfile, icSigGrayTRCTag); + FromLstarToXYZ(GrayTRC, Shapes1); + + // Reversing must be done after curve translation + + Shapes[0] = cmsReverseGamma(Shapes1[0]->nEntries, Shapes1[0]); + Shapes[1] = cmsReverseGamma(Shapes1[1]->nEntries, Shapes1[1]); + Shapes[2] = cmsReverseGamma(Shapes1[2]->nEntries, Shapes1[2]); + + cmsFreeGammaTriple(Shapes1); + + } + else { + + // Normal case + + GrayTRC = cmsReadICCGammaReversed(hProfile, icSigGrayTRCTag); // Y + + Shapes[0] = cmsDupGamma(GrayTRC); + Shapes[1] = cmsDupGamma(GrayTRC); + Shapes[2] = cmsDupGamma(GrayTRC); + } + + if (!Shapes[0] || !Shapes[1] || !Shapes[2]) + return NULL; + + cmsFreeGamma(GrayTRC); + + VEC3init(&Scale.v[0], 0, 1.0/Illuminant.Y, 0); + VEC3init(&Scale.v[1], 0, 1.0/Illuminant.Y, 0); + VEC3init(&Scale.v[2], 0, 1.0/Illuminant.Y, 0); + + + MatShaper = cmsAllocMatShaper(&Scale, Shapes, MATSHAPER_OUTPUT); + cmsFreeGammaTriple(Shapes); + return MatShaper; + +} + + + +// Input matrix, only in XYZ + +LPMATSHAPER cmsBuildInputMatrixShaper(cmsHPROFILE InputProfile) +{ + MAT3 DoubleMat; + LPGAMMATABLE Shapes[3]; + LPMATSHAPER InMatSh; + + // Check if this is a grayscale profile. If so, build + // appropiate conversion tables. The tables are the PCS + // iluminant, scaled across GrayTRC + + if (cmsGetColorSpace(InputProfile) == icSigGrayData) + { + return cmsBuildGrayInputMatrixShaper(InputProfile); + } + + if (!cmsReadICCMatrixRGB2XYZ(&DoubleMat, InputProfile)) + return NULL; + + Shapes[0] = cmsReadICCGamma(InputProfile, icSigRedTRCTag); + Shapes[1] = cmsReadICCGamma(InputProfile, icSigGreenTRCTag); + Shapes[2] = cmsReadICCGamma(InputProfile, icSigBlueTRCTag); + + if (!Shapes[0] || !Shapes[1] || !Shapes[2]) + return NULL; + + InMatSh = cmsAllocMatShaper(&DoubleMat, Shapes, MATSHAPER_INPUT); + + cmsFreeGammaTriple(Shapes); + + return InMatSh; +} + + +// Output style matrix-shaper + + +LPMATSHAPER cmsBuildOutputMatrixShaper(cmsHPROFILE OutputProfile) +{ + MAT3 DoubleMat, DoubleInv; + LPGAMMATABLE InverseShapes[3]; + LPMATSHAPER OutMatSh; + + + + if (cmsGetColorSpace(OutputProfile) == icSigGrayData) + { + return cmsBuildGrayOutputMatrixShaper(OutputProfile); + } + + + if (!cmsReadICCMatrixRGB2XYZ(&DoubleMat, OutputProfile)) + return NULL; + + if (MAT3inverse(&DoubleMat, &DoubleInv) < 0) + return NULL; + + + InverseShapes[0] = cmsReadICCGammaReversed(OutputProfile, icSigRedTRCTag); + InverseShapes[1] = cmsReadICCGammaReversed(OutputProfile, icSigGreenTRCTag); + InverseShapes[2] = cmsReadICCGammaReversed(OutputProfile, icSigBlueTRCTag); + + if (InverseShapes[0] == NULL || + InverseShapes[1] == NULL || + InverseShapes[2] == NULL) return NULL; + + OutMatSh = cmsAllocMatShaper(&DoubleInv, InverseShapes, MATSHAPER_OUTPUT); + + cmsFreeGammaTriple(InverseShapes); + + return OutMatSh; +} + + + +// This function builds a transform matrix chaining parameters + +static +LCMSBOOL cmsBuildSmeltMatShaper(_LPcmsTRANSFORM p) +{ + MAT3 From, To, ToInv, Transfer; + LPGAMMATABLE In[3], InverseOut[3]; + + + if (!cmsReadICCMatrixRGB2XYZ(&From, p -> InputProfile)) + return FALSE; + + + if (!cmsReadICCMatrixRGB2XYZ(&To, p -> OutputProfile)) + return FALSE; + + // invert dest + + if (MAT3inverse(&To, &ToInv) < 0) + return FALSE; + + // Multiply + MAT3per(&Transfer, &ToInv, &From); + + + // Read gamma curves + + In[0] = cmsReadICCGamma(p -> InputProfile, icSigRedTRCTag); + In[1] = cmsReadICCGamma(p -> InputProfile, icSigGreenTRCTag); + In[2] = cmsReadICCGamma(p -> InputProfile, icSigBlueTRCTag); + + if (!In[0] || !In[1] || !In[2]) + return FALSE; + + + InverseOut[0] = cmsReadICCGammaReversed(p -> OutputProfile, icSigRedTRCTag); + InverseOut[1] = cmsReadICCGammaReversed(p -> OutputProfile, icSigGreenTRCTag); + InverseOut[2] = cmsReadICCGammaReversed(p -> OutputProfile, icSigBlueTRCTag); + + if (!InverseOut[0] || !InverseOut[1] || !InverseOut[2]) { + cmsFreeGammaTriple(In); + return FALSE; + } + + p -> SmeltMatShaper = cmsAllocMatShaper2(&Transfer, In, InverseOut, MATSHAPER_ALLSMELTED); + + cmsFreeGammaTriple(In); + cmsFreeGammaTriple(InverseOut); + + return (p -> SmeltMatShaper != NULL); +} + + + + +// Conversion between PCS ------------------------------------------ + +// Identifies intent archieved by LUT + +static +int GetPhase(cmsHPROFILE hProfile) +{ + switch (cmsGetPCS(hProfile)) { + + case icSigXYZData: return XYZRel; + + case icSigLabData: return LabRel; + + default: cmsSignalError(LCMS_ERRC_ABORTED, "Invalid PCS"); + } + + return XYZRel; +} + + + + +static +void TakeConversionRoutines(_LPcmsTRANSFORM p, int DoBPC) +{ + cmsCIEXYZ BlackPointIn, WhitePointIn, IlluminantIn; + cmsCIEXYZ BlackPointOut, WhitePointOut, IlluminantOut; + cmsCIEXYZ BlackPointProof, WhitePointProof, IlluminantProof; + MAT3 ChromaticAdaptationMatrixIn, ChromaticAdaptationMatrixOut; + MAT3 ChromaticAdaptationMatrixProof; + + + cmsTakeIluminant(&IlluminantIn, p -> InputProfile); + cmsTakeMediaWhitePoint(&WhitePointIn, p -> InputProfile); + cmsTakeMediaBlackPoint(&BlackPointIn, p -> InputProfile); + cmsReadChromaticAdaptationMatrix(&ChromaticAdaptationMatrixIn, p -> InputProfile); + + cmsTakeIluminant(&IlluminantOut, p -> OutputProfile); + cmsTakeMediaWhitePoint(&WhitePointOut, p -> OutputProfile); + cmsTakeMediaBlackPoint(&BlackPointOut, p -> OutputProfile); + cmsReadChromaticAdaptationMatrix(&ChromaticAdaptationMatrixOut, p -> OutputProfile); + + + if (p -> Preview == NULL && p ->Gamut == NULL) // Non-proofing + { + if (p ->Intent == INTENT_PERCEPTUAL || + p ->Intent == INTENT_SATURATION) { + + + // For v4 profiles, Perceptual PCS has a reference black point + // which v2 profiles should scale to. + + if ((cmsGetProfileICCversion(p ->InputProfile) >= 0x4000000) || + (cmsGetProfileICCversion(p ->OutputProfile) >= 0x4000000)) { + + DoBPC = TRUE; + } + } + + // Black point compensation does not apply to absolute intent + + if (p ->Intent == INTENT_ABSOLUTE_COLORIMETRIC) + DoBPC = FALSE; + + // Black point compensation does not apply to devicelink profiles + + if (cmsGetDeviceClass(p ->InputProfile) == icSigLinkClass) + DoBPC = FALSE; + + if (cmsGetDeviceClass(p ->OutputProfile) == icSigLinkClass) + DoBPC = FALSE; + + if (DoBPC) { + + // Detect Black points + + cmsDetectBlackPoint(&BlackPointIn, p->InputProfile, p->Intent, 0); + cmsDetectBlackPoint(&BlackPointOut, p->OutputProfile, p->Intent, 0); + + // If equal black points, then do nothing. This often applies to BP=0 + + if (BlackPointIn.X == BlackPointOut.X && + BlackPointIn.Y == BlackPointOut.Y && + BlackPointIn.Z == BlackPointOut.Z) + DoBPC = FALSE; + + + } + + cmsChooseCnvrt(p -> Intent == INTENT_ABSOLUTE_COLORIMETRIC, + + p -> Phase1, + &BlackPointIn, + &WhitePointIn, + &IlluminantIn, + &ChromaticAdaptationMatrixIn, + + p -> Phase3, + &BlackPointOut, + &WhitePointOut, + &IlluminantOut, + &ChromaticAdaptationMatrixOut, + + DoBPC, + p ->AdaptationState, + &p->Stage1, + &p->m1, &p->of1); + + } + else // Proofing + { + + + cmsTakeIluminant(&IlluminantProof, p -> PreviewProfile); + cmsTakeMediaWhitePoint(&WhitePointProof, p -> PreviewProfile); + cmsTakeMediaBlackPoint(&BlackPointProof, p -> PreviewProfile); + cmsReadChromaticAdaptationMatrix(&ChromaticAdaptationMatrixProof, p -> PreviewProfile); + + if (DoBPC) { + + cmsDetectBlackPoint(&BlackPointProof, p->PreviewProfile, p->Intent, 0); + cmsDetectBlackPoint(&BlackPointIn, p->InputProfile, p->Intent, 0); + cmsDetectBlackPoint(&BlackPointOut, p->OutputProfile, p->Intent, 0); + + // Reality check + + if (BlackPointIn.X == BlackPointProof.X && + BlackPointIn.Y == BlackPointProof.Y && + BlackPointIn.Z == BlackPointProof.Z) + DoBPC = FALSE; + + + } + + + + cmsChooseCnvrt(p -> Intent == INTENT_ABSOLUTE_COLORIMETRIC, + + p -> Phase1, + &BlackPointIn, + &WhitePointIn, + &IlluminantIn, + &ChromaticAdaptationMatrixIn, + + p -> Phase2, + &BlackPointProof, + &WhitePointProof, + &IlluminantProof, + &ChromaticAdaptationMatrixProof, + DoBPC, + p ->AdaptationState, + &p->Stage1, + &p->m1, &p->of1); + + cmsChooseCnvrt(p -> ProofIntent == INTENT_ABSOLUTE_COLORIMETRIC, + + p -> Phase2, + &BlackPointProof, + &WhitePointProof, + &IlluminantProof, + &ChromaticAdaptationMatrixProof, + + p -> Phase3, + &BlackPointOut, + &WhitePointOut, + &IlluminantOut, + &ChromaticAdaptationMatrixOut, + 0, + 0.0, + &p->Stage2, + &p->m2, &p->of2); + } + +} + + +// Check colorspace + +static +LCMSBOOL IsProperColorSpace(cmsHPROFILE hProfile, DWORD dwFormat, LCMSBOOL lUsePCS) +{ + int Space = T_COLORSPACE(dwFormat); + + if (Space == PT_ANY) return TRUE; + + if (lUsePCS) + return (Space == _cmsLCMScolorSpace(cmsGetPCS(hProfile))); + else + return (Space == _cmsLCMScolorSpace(cmsGetColorSpace(hProfile))); +} + + +// Auxiliary: allocate transform struct and set to defaults + +static +_LPcmsTRANSFORM AllocEmptyTransform(void) +{ + // Allocate needed memory + + _LPcmsTRANSFORM p = (_LPcmsTRANSFORM) _cmsMalloc(sizeof(_cmsTRANSFORM)); + if (!p) { + + cmsSignalError(LCMS_ERRC_ABORTED, "cmsCreateTransform: _cmsMalloc() failed"); + return NULL; + } + + ZeroMemory(p, sizeof(_cmsTRANSFORM)); + + // Initialize default methods + + p -> xform = NULL; + p -> Intent = INTENT_PERCEPTUAL; + p -> ProofIntent = INTENT_ABSOLUTE_COLORIMETRIC; + p -> DoGamutCheck = FALSE; + p -> InputProfile = NULL; + p -> OutputProfile = NULL; + p -> PreviewProfile = NULL; + p -> Preview = NULL; + p -> Gamut = NULL; + p -> DeviceLink = NULL; + p -> InMatShaper = NULL; + p -> OutMatShaper = NULL; + p -> SmeltMatShaper = NULL; + p -> NamedColorList = NULL; + p -> EntryColorSpace = (icColorSpaceSignature) 0; + p -> ExitColorSpace = (icColorSpaceSignature) 0; + p -> AdaptationState = GlobalAdaptationState; + + LCMS_CREATE_LOCK(&p->rwlock); + + return p; +} + + +// Identify whatever a transform is to be cached + +static +void SetPrecalculatedTransform(_LPcmsTRANSFORM p) +{ + if ((p->dwOriginalFlags & cmsFLAGS_GAMUTCHECK) && p ->GamutCheck != NULL) { + + p -> xform = PrecalculatedXFORMGamutCheck; + + if (!(p->dwOriginalFlags & cmsFLAGS_NOTCACHE)) { + + ZeroMemory(p ->CacheIn, sizeof(WORD) * MAXCHANNELS); + TransformOnePixelWithGamutCheck(p, p->CacheIn, p ->CacheOut); + p ->xform = CachedXFORMGamutCheck; + } + + } + else { + + p -> xform = PrecalculatedXFORM; + + if (!(p->dwOriginalFlags & cmsFLAGS_NOTCACHE)) { + + ZeroMemory(p ->CacheIn, sizeof(WORD) * MAXCHANNELS); + cmsEvalLUT(p ->DeviceLink, p->CacheIn, p ->CacheOut); + p ->xform = CachedXFORM; + } + } +} + + +// Transform is identified as device-link +static +cmsHPROFILE CreateDeviceLinkTransform(_LPcmsTRANSFORM p) +{ + + if (!IsProperColorSpace(p->InputProfile, p->InputFormat, FALSE)) { + cmsSignalError(LCMS_ERRC_ABORTED, "Device link is operating on wrong colorspace on input"); + return NULL; + } + + if (!IsProperColorSpace(p->InputProfile, p->OutputFormat, TRUE)) { + cmsSignalError(LCMS_ERRC_ABORTED, "Device link is operating on wrong colorspace on output"); + return NULL; + } + + // Device link does only have AToB0Tag (ICC-Spec 1998/09) + + p->DeviceLink = cmsReadICCLut(p->InputProfile, icSigAToB0Tag); + + if (!p->DeviceLink) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Noncompliant device-link profile"); + cmsDeleteTransform((cmsHTRANSFORM) p); + return NULL; + } + + if (p ->PreviewProfile != NULL) { + cmsSignalError(LCMS_ERRC_WARNING, "Proofing not supported on device link transforms"); + } + + if (p ->OutputProfile != NULL) { + cmsSignalError(LCMS_ERRC_WARNING, "Output profile should be NULL, since this is a device-link transform"); + } + + p -> Phase1 = -1; + p -> Phase2 = -1; + p -> Phase3 = -1; + + SetPrecalculatedTransform(p); + + p -> EntryColorSpace = cmsGetColorSpace(p -> InputProfile); + p -> ExitColorSpace = cmsGetPCS(p -> InputProfile); + + if (p ->EntryColorSpace == icSigRgbData || + p ->EntryColorSpace == icSigCmyData) { + + p->DeviceLink -> CLut16params.Interp3D = cmsTetrahedralInterp16; + } + + // Precalculated device-link profile is ready + return (cmsHTRANSFORM) p; +} + + +// Transform that includes proofing +static +void CreateProof(_LPcmsTRANSFORM p, icTagSignature *ToTagPtr) + +{ + icTagSignature ProofTag; + + if (p -> dwOriginalFlags & cmsFLAGS_SOFTPROOFING) { + + // Apr-15, 2002 - Too much profiles does have bogus content + // on preview tag, so I do compute it by my own. + + p -> Preview = _cmsComputeSoftProofLUT(p ->PreviewProfile, p ->Intent); + p -> Phase2 = LabRel; + + // That's a proofing transfor, so use second intent for output. + + *ToTagPtr = PCS2Device[p->ProofIntent]; + + if (p -> Preview == NULL) { + + ProofTag = Preview[p -> Intent]; + + if (!cmsIsTag(p ->PreviewProfile, ProofTag)) { + + ProofTag = Preview[0]; + if (!cmsIsTag(p ->PreviewProfile, ProofTag)) + ProofTag = (icTagSignature)0; + } + + if (ProofTag) { + + p -> Preview = cmsReadICCLut(p ->PreviewProfile, ProofTag); + p -> Phase2 = GetPhase(p ->PreviewProfile); + + } + else + { + p -> Preview = NULL; + p ->PreviewProfile = NULL; + cmsSignalError(LCMS_ERRC_WARNING, "Sorry, the proof profile has not previewing capabilities"); + } + } + + } + + + // Aug-31, 2001 - Too much profiles does have bogus content + // on gamut tag, so I do compute it by my own. + + if ((p -> dwOriginalFlags & cmsFLAGS_GAMUTCHECK) && (p -> dwOriginalFlags & cmsFLAGS_NOTPRECALC)) { + + + p -> Gamut = _cmsComputeGamutLUT(p->PreviewProfile, p ->Intent); + p -> Phase2 = LabRel; + + if (p -> Gamut == NULL) { + + // Profile goes only in one direction... try to see + // if profile has the tag, and use it, no matter it + // could be bogus. This is the last chance! + + if (cmsIsTag(p ->PreviewProfile, icSigGamutTag)) { + + p -> Gamut = cmsReadICCLut(p ->PreviewProfile, icSigGamutTag); + + } + else { + + // Nope, cannot be done. + + cmsSignalError(LCMS_ERRC_WARNING, "Sorry, the proof profile has not gamut checking capabilities"); + p -> Gamut = NULL; + } + } + + } + +} + +// Choose the adequate transform routine + +static +_LPcmsTRANSFORM PickTransformRoutine(_LPcmsTRANSFORM p, + icTagSignature *FromTagPtr, + icTagSignature *ToTagPtr) +{ + + + + + // Is a named color profile? + if (cmsGetDeviceClass(p->InputProfile) == icSigNamedColorClass) { + + // Yes, and used as input + p ->FromDevice = NC2toPCS; + } + else { + // Can we optimize matrix-shaper only transform? + + if ((*FromTagPtr == 0) && + (*ToTagPtr == 0) && + (!p->PreviewProfile) && + (p -> Intent != INTENT_ABSOLUTE_COLORIMETRIC) && + (p -> EntryColorSpace == icSigRgbData) && + (p -> ExitColorSpace == icSigRgbData) && + !(p -> dwOriginalFlags & cmsFLAGS_BLACKPOINTCOMPENSATION)) { + + // Yes... try to smelt matrix-shapers + p -> xform = MatrixShaperXFORM; + p -> dwOriginalFlags |= cmsFLAGS_NOTPRECALC; + + if (!cmsBuildSmeltMatShaper(p)) + { + cmsSignalError(LCMS_ERRC_ABORTED, "unable to smelt shaper-matrix, required tags missing"); + return NULL; + } + + p -> Phase1 = p -> Phase3 = XYZRel; + return p; + + } + + // No, is a transform involving LUT + + if (*FromTagPtr != 0) { + + p -> FromDevice = LUTtoPCS; + p -> Device2PCS = cmsReadICCLut(p -> InputProfile, *FromTagPtr); + if (!p -> Device2PCS) { + + cmsSignalError(LCMS_ERRC_ABORTED, "profile is unsuitable for input"); + return NULL; + } + + } + else + { + p -> FromDevice = ShaperMatrixToPCS; + p -> InMatShaper = cmsBuildInputMatrixShaper(p -> InputProfile); + + if (!p ->InMatShaper) { + cmsSignalError(LCMS_ERRC_ABORTED, "profile is unsuitable for input"); + return NULL; + } + + p -> Phase1 = XYZRel; + + } + } + + if (*ToTagPtr != 0) { + + p -> ToDevice = PCStoLUT; + p -> PCS2Device = cmsReadICCLut(p -> OutputProfile, *ToTagPtr); + if (!p -> PCS2Device) { + cmsSignalError(LCMS_ERRC_ABORTED, "profile is unsuitable for output"); + return NULL; + } + + } + else + { + p -> ToDevice = PCStoShaperMatrix; + p -> OutMatShaper = cmsBuildOutputMatrixShaper(p->OutputProfile); + + if (!p -> OutMatShaper) { + cmsSignalError(LCMS_ERRC_ABORTED, "profile is unsuitable for output"); + return NULL; + } + p -> Phase3 = XYZRel; + + } + + + return p; +} + + + + +// Create a transform. + +cmsHTRANSFORM LCMSEXPORT cmsCreateProofingTransform(cmsHPROFILE InputProfile, + DWORD InputFormat, + cmsHPROFILE OutputProfile, + DWORD OutputFormat, + cmsHPROFILE ProofingProfile, + int nIntent, + int ProofingIntent, + DWORD dwFlags) + +{ + _LPcmsTRANSFORM p; + icTagSignature FromTag; + icTagSignature ToTag; + + if (nIntent < 0 || nIntent > 3 || + ProofingIntent < 0 || ProofingIntent > 3) { + + cmsSignalError(LCMS_ERRC_ABORTED, "cmsCreateTransform: intent mismatch"); + return NULL; + } + + p = AllocEmptyTransform(); + if (p == NULL) return NULL; + + p -> xform = NormalXFORM; + p -> Intent = nIntent; + p -> ProofIntent = ProofingIntent; + p -> DoGamutCheck = FALSE; + p -> InputProfile = InputProfile; + p -> OutputProfile = OutputProfile; + p -> PreviewProfile = ProofingProfile; + p -> InputFormat = InputFormat; + p -> OutputFormat = OutputFormat; + p -> dwOriginalFlags = dwFlags; + + p -> lInputV4Lab = p ->lOutputV4Lab = FALSE; + + + p -> FromInput = _cmsIdentifyInputFormat(p, InputFormat); + p -> ToOutput = _cmsIdentifyOutputFormat(p, OutputFormat); + + // Null transform can be done without profiles + if ((p->dwOriginalFlags & cmsFLAGS_NULLTRANSFORM) || + ((InputProfile == NULL) && + (OutputProfile == NULL))) { + + p -> xform = NullXFORM; + return (cmsHTRANSFORM) p; + } + + // From here we need at least one input profile + if (InputProfile == NULL) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Input profile cannot be NULL!"); + cmsDeleteTransform((cmsHTRANSFORM) p); + return NULL; + } + + + // Device link are means to store precalculated transform grids. + if (cmsGetDeviceClass(InputProfile) == icSigLinkClass) { + + return CreateDeviceLinkTransform(p); + } + + if (!IsProperColorSpace(InputProfile, InputFormat, FALSE)) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Input profile is operating on wrong colorspace"); + cmsDeleteTransform((cmsHTRANSFORM) p); + return NULL; + } + + p ->EntryColorSpace = cmsGetColorSpace(InputProfile); + + // Oct-21-2002: Added named color transforms + if (cmsGetDeviceClass(InputProfile) == icSigNamedColorClass) { + + if (p ->NamedColorList == NULL) + p ->NamedColorList = cmsAllocNamedColorList(0); + + cmsReadICCnamedColorList(p, InputProfile, icSigNamedColor2Tag); + + // Special case. If output profile == NULL, then the transform gives + // device values from named colors. + + if (OutputProfile == NULL) { + + p ->ExitColorSpace = p -> EntryColorSpace; + p ->xform = NC2deviceXform; + return (cmsHTRANSFORM) p; + } + + // Named color doesn't precalc anything + p -> dwOriginalFlags |= cmsFLAGS_NOTPRECALC; + } + + + // From here we need also output profile. + if (OutputProfile == NULL) { + cmsSignalError(LCMS_ERRC_ABORTED, "Output profile cannot be NULL!"); + cmsDeleteTransform((cmsHTRANSFORM) p); + return NULL; + } + + + if (!IsProperColorSpace(OutputProfile, OutputFormat, FALSE)) { + cmsSignalError(LCMS_ERRC_ABORTED, "Output profile is operating on wrong colorspace"); + cmsDeleteTransform((cmsHTRANSFORM) p); + return NULL; + } + + p -> ExitColorSpace = cmsGetColorSpace(OutputProfile); + + // Named color only on input + if (cmsGetDeviceClass(OutputProfile) == icSigNamedColorClass) { + + cmsSignalError(LCMS_ERRC_ABORTED, "Named color profiles are not supported as output"); + cmsDeleteTransform((cmsHTRANSFORM) p); + return NULL; + } + + p -> Phase1 = GetPhase(InputProfile); + p -> Phase2 = -1; + p -> Phase3 = GetPhase(OutputProfile); + + // Try to locate a LUT + + FromTag = Device2PCS[nIntent]; + ToTag = PCS2Device[nIntent]; + + if (!cmsIsTag(InputProfile, FromTag)) { + + FromTag = Device2PCS[0]; + + if (!cmsIsTag(InputProfile, FromTag)) { + FromTag = (icTagSignature)0; + } + } + + // If proofing is needed, add required tags/parameters + if (ProofingProfile) + CreateProof(p, &ToTag); + + + if (!cmsIsTag(OutputProfile, ToTag)) { + + ToTag = PCS2Device[0]; + + // 12-Dec-2003, Abstract profiles can be placed as output and still using AToB0 + if (cmsGetDeviceClass(OutputProfile) == icSigAbstractClass) { + + if (!cmsIsTag(OutputProfile, ToTag)) { + ToTag = (icTagSignature) icSigAToB0Tag; + } + } + + if (!cmsIsTag(OutputProfile, ToTag)) + ToTag = (icTagSignature)0; + } + + + if (p-> dwOriginalFlags & cmsFLAGS_MATRIXINPUT) + FromTag = (icTagSignature)0; + + if (p -> dwOriginalFlags & cmsFLAGS_MATRIXOUTPUT) + ToTag = (icTagSignature)0; + + + + if (PickTransformRoutine(p, &FromTag, &ToTag) == NULL) { + + cmsDeleteTransform((cmsHTRANSFORM) p); + return NULL; + + } + + TakeConversionRoutines(p, dwFlags & cmsFLAGS_BLACKPOINTCOMPENSATION); + + if (!(p -> dwOriginalFlags & cmsFLAGS_NOTPRECALC)) { + + LPLUT DeviceLink; + LPLUT GamutCheck = NULL; + + + if (p ->EntryColorSpace == icSigCmykData && + p ->ExitColorSpace == icSigCmykData && + (dwFlags & cmsFLAGS_PRESERVEBLACK)) { + + DeviceLink = _cmsPrecalculateBlackPreservingDeviceLink((cmsHTRANSFORM) p, dwFlags); + + // Cannot be done at all? + if (DeviceLink == NULL) + DeviceLink = _cmsPrecalculateDeviceLink((cmsHTRANSFORM) p, dwFlags); + + } + else { + + DeviceLink = _cmsPrecalculateDeviceLink((cmsHTRANSFORM) p, dwFlags); + } + + // Allow to specify cmsFLAGS_GAMUTCHECK, even if no proofing profile is given + if ((p ->PreviewProfile != NULL) && (p -> dwOriginalFlags & cmsFLAGS_GAMUTCHECK)) { + + GamutCheck = _cmsPrecalculateGamutCheck((cmsHTRANSFORM) p); + } + + // If input colorspace is Rgb, Cmy, then use tetrahedral interpolation + // for speed reasons (it only works well on spaces on Luma is diagonal, and + // not if luma is in separate channel) + if (p ->EntryColorSpace == icSigRgbData || + p ->EntryColorSpace == icSigCmyData) { + + + cmsCalcCLUT16ParamsEx(DeviceLink->CLut16params.nSamples, + DeviceLink->CLut16params.nInputs, + DeviceLink->CLut16params.nOutputs, + TRUE, &DeviceLink->CLut16params); + + } + + // If this is a 8-bit transform, optimize LUT further. + + if ((T_BYTES(InputFormat) == 1) && (T_CHANNELS(InputFormat) == 3)) { + + DeviceLink = _cmsBlessLUT8(DeviceLink); + if (DeviceLink == NULL) return NULL; + + } + + + p ->GamutCheck = GamutCheck; + + if (DeviceLink) { + + p ->DeviceLink = DeviceLink; + + if ((nIntent != INTENT_ABSOLUTE_COLORIMETRIC) && + !(p -> dwOriginalFlags & cmsFLAGS_NOWHITEONWHITEFIXUP)) + + _cmsFixWhiteMisalignment(p); + + } + else + { + + cmsSignalError(LCMS_ERRC_ABORTED, + "Cannot precalculate %d->%d channels transform!", + T_CHANNELS(InputFormat), T_CHANNELS(OutputFormat)); + + cmsDeleteTransform(p); + return NULL; + } + + + SetPrecalculatedTransform(p); + + + } + + // Re-Identify formats + p -> FromInput = _cmsIdentifyInputFormat(p, InputFormat); + p -> ToOutput = _cmsIdentifyOutputFormat(p, OutputFormat); + + + return p; +} + + +// Wrapper por simpler non-proofing transforms. + +cmsHTRANSFORM LCMSEXPORT cmsCreateTransform(cmsHPROFILE Input, + DWORD InputFormat, + cmsHPROFILE Output, + DWORD OutputFormat, + int Intent, + DWORD dwFlags) + +{ + return cmsCreateProofingTransform(Input, InputFormat, + Output, OutputFormat, + NULL, + Intent, INTENT_ABSOLUTE_COLORIMETRIC, + dwFlags); +} + + +// Profiles are *NOT* closed + +void LCMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform) +{ + _LPcmsTRANSFORM p = (_LPcmsTRANSFORM) (LPSTR) hTransform; + + if (p -> Device2PCS) + cmsFreeLUT(p -> Device2PCS); + if (p -> PCS2Device) + cmsFreeLUT(p -> PCS2Device); + if (p -> Gamut) + cmsFreeLUT(p -> Gamut); + if (p -> Preview) + cmsFreeLUT(p -> Preview); + if (p -> DeviceLink) + cmsFreeLUT(p -> DeviceLink); + if (p -> InMatShaper) + cmsFreeMatShaper(p -> InMatShaper); + if (p -> OutMatShaper) + cmsFreeMatShaper(p -> OutMatShaper); + if (p -> SmeltMatShaper) + cmsFreeMatShaper(p -> SmeltMatShaper); + if (p ->NamedColorList) + cmsFreeNamedColorList(p ->NamedColorList); + if (p -> GamutCheck) + cmsFreeLUT(p -> GamutCheck); + + LCMS_FREE_LOCK(&p->rwlock); + + _cmsFree((void *) p); +} + + +// Apply transform code +void LCMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, + LPVOID InputBuffer, + LPVOID OutputBuffer, unsigned int Size) + +{ + + _LPcmsTRANSFORM p = (_LPcmsTRANSFORM) (LPSTR) Transform; + + p -> StrideIn = p -> StrideOut = Size; + + p -> xform(p, InputBuffer, OutputBuffer, Size); + +} + + +void LCMSEXPORT cmsSetAlarmCodes(int r, int g, int b) +{ + AlarmR = RGB_8_TO_16(r); + AlarmG = RGB_8_TO_16(g); + AlarmB = RGB_8_TO_16(b); +} + +void LCMSEXPORT cmsGetAlarmCodes(int *r, int *g, int *b) +{ + *r = RGB_16_TO_8(AlarmR); + *g = RGB_16_TO_8(AlarmG); + *b = RGB_16_TO_8(AlarmB); +} + +// Returns TRUE if the profile is implemented as matrix-shaper + +LCMSBOOL LCMSEXPORT _cmsIsMatrixShaper(cmsHPROFILE hProfile) +{ + switch (cmsGetColorSpace(hProfile)) { + + case icSigGrayData: + + return cmsIsTag(hProfile, icSigGrayTRCTag); + + case icSigRgbData: + + return (cmsIsTag(hProfile, icSigRedColorantTag) && + cmsIsTag(hProfile, icSigGreenColorantTag) && + cmsIsTag(hProfile, icSigBlueColorantTag) && + cmsIsTag(hProfile, icSigRedTRCTag) && + cmsIsTag(hProfile, icSigGreenTRCTag) && + cmsIsTag(hProfile, icSigBlueTRCTag)); + + default: + + return FALSE; + } +} + + +LCMSBOOL LCMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, + int Intent, int UsedDirection) +{ + + icTagSignature* TagTable; + + // Device link profiles only implements the intent in header + + if (cmsGetDeviceClass(hProfile) != icSigLinkClass) { + + switch (UsedDirection) { + + case LCMS_USED_AS_INPUT: TagTable = Device2PCS; break; + case LCMS_USED_AS_OUTPUT:TagTable = PCS2Device; break; + case LCMS_USED_AS_PROOF: TagTable = Preview; break; + + default: + cmsSignalError(LCMS_ERRC_ABORTED, "Unexpected direction (%d)", UsedDirection); + return FALSE; + } + + if (cmsIsTag(hProfile, TagTable[Intent])) return TRUE; + return _cmsIsMatrixShaper(hProfile); + } + + return (cmsTakeRenderingIntent(hProfile) == Intent); +} + +// Multiple profile transform. +static +int MultiprofileSampler(register WORD In[], register WORD Out[], register LPVOID Cargo) +{ + cmsHTRANSFORM* Transforms = (cmsHTRANSFORM*) Cargo; + int i; + + cmsDoTransform(Transforms[0], In, Out, 1); + + for (i=1; Transforms[i]; i++) + cmsDoTransform(Transforms[i], Out, Out, 1); + + + + return TRUE; +} + + +static +int IsAllowedInSingleXform(icProfileClassSignature aClass) +{ + return (aClass == icSigInputClass) || + (aClass == icSigDisplayClass) || + (aClass == icSigOutputClass) || + (aClass == icSigColorSpaceClass); +} + + +// A multiprofile transform does chain several profiles into a single +// devicelink. It couls also be used to merge named color profiles into +// a single database. + + +cmsHTRANSFORM LCMSEXPORT cmsCreateMultiprofileTransform(cmsHPROFILE hProfiles[], + int nProfiles, + DWORD dwInput, + DWORD dwOutput, + int Intent, + DWORD dwFlags) +{ + cmsHTRANSFORM Transforms[257]; + DWORD dwPrecalcFlags = (dwFlags|cmsFLAGS_NOTPRECALC|cmsFLAGS_NOTCACHE); + DWORD FormatInput, FormatOutput; + cmsHPROFILE hLab, hXYZ, hProfile; + icColorSpaceSignature ColorSpace, CurrentColorSpace; + icColorSpaceSignature ColorSpaceIn, ColorSpaceOut; + LPLUT Grid; + int nGridPoints, ChannelsInput, ChannelsOutput = 3, i; + _LPcmsTRANSFORM p; + int nNamedColor; + + if (nProfiles > 255) { + cmsSignalError(LCMS_ERRC_ABORTED, "What are you trying to do with more that 255 profiles?!?, of course aborted"); + return NULL; + } + + // There is a simple case with just two profiles, try to catch it in order of getting + // black preservation to work on this function, at least with two profiles. + + + if (nProfiles == 2) { + + icProfileClassSignature Class1 = cmsGetDeviceClass(hProfiles[0]); + icProfileClassSignature Class2 = cmsGetDeviceClass(hProfiles[1]); + + // Only input, output and display are allowed + + if (IsAllowedInSingleXform(Class1) && + IsAllowedInSingleXform(Class2)) + return cmsCreateTransform(hProfiles[0], dwInput, hProfiles[1], dwOutput, Intent, dwFlags); + } + + + // Creates a phantom transform for latter filling + p = (_LPcmsTRANSFORM) cmsCreateTransform(NULL, dwInput, + NULL, dwOutput, Intent, cmsFLAGS_NULLTRANSFORM); + + // If user wants null one, give it + if (dwFlags & cmsFLAGS_NULLTRANSFORM) return (cmsHPROFILE) p; + + // Is a bunch of named color profiles? + nNamedColor = 0; + for (i=0; i < nProfiles; i++) { + if (cmsGetDeviceClass(hProfiles[i]) == icSigNamedColorClass) + nNamedColor++; + } + + + if (nNamedColor == nProfiles) { + + // Yes, only named color. Create a named color-device + // and append to named color table + + cmsDeleteTransform((cmsHTRANSFORM) p); + + p = (_LPcmsTRANSFORM) cmsCreateTransform(hProfiles[0], dwInput, NULL, dwOutput, Intent, dwFlags); + for (i=1; i < nProfiles; i++) { + cmsReadICCnamedColorList(p, hProfiles[i], icSigNamedColor2Tag); + } + + return p; // Ok, done so far + } + else + if (nNamedColor > 0) { + + cmsDeleteTransform((cmsHTRANSFORM) p); + cmsSignalError(LCMS_ERRC_ABORTED, "Could not mix named color profiles with other types in multiprofile transform"); + return NULL; + } + + + // We will need a 3DCLUT for device link + Grid = cmsAllocLUT(); + if (!Grid) return NULL; + + // This one is our PCS (Always Lab) + hLab = cmsCreateLabProfile(NULL); + hXYZ = cmsCreateXYZProfile(); + + if (!hLab || !hXYZ) goto ErrorCleanup; + + // Take some info.... + + p ->EntryColorSpace = CurrentColorSpace = cmsGetColorSpace(hProfiles[0]); + + + for (i=0; i < nProfiles; i++) { + + int lIsDeviceLink, lIsInput; + + // Check colorspace + + hProfile = hProfiles[i]; + lIsDeviceLink = (cmsGetDeviceClass(hProfile) == icSigLinkClass); + lIsInput = (CurrentColorSpace != icSigXYZData) && + (CurrentColorSpace != icSigLabData); + + if (lIsInput) { + + ColorSpaceIn = cmsGetColorSpace(hProfile); + ColorSpaceOut = cmsGetPCS(hProfile); + + } + else { + + ColorSpaceIn = cmsGetPCS(hProfile); + ColorSpaceOut = cmsGetColorSpace(hProfile); + } + + ChannelsInput = _cmsChannelsOf(ColorSpaceIn); + ChannelsOutput = _cmsChannelsOf(ColorSpaceOut); + + FormatInput = BYTES_SH(2)|CHANNELS_SH(ChannelsInput); + FormatOutput = BYTES_SH(2)|CHANNELS_SH(ChannelsOutput); + + ColorSpace = ColorSpaceIn; + + + if (ColorSpace == CurrentColorSpace) { + + if (lIsDeviceLink) { + + Transforms[i] = cmsCreateTransform(hProfile, FormatInput, + NULL, FormatOutput, + Intent, dwPrecalcFlags); + } + + else { + + if (lIsInput) { + + Transforms[i] = cmsCreateTransform(hProfile, FormatInput, + (ColorSpaceOut == icSigLabData ? hLab : hXYZ), FormatOutput, + Intent, dwPrecalcFlags); + } + else { + Transforms[i] = cmsCreateTransform((ColorSpaceIn == icSigLabData ? hLab : hXYZ), FormatInput, + hProfile, FormatOutput, + Intent, dwPrecalcFlags); + + } + } + + + } + else // Can come from pcs? + if (CurrentColorSpace == icSigXYZData) { + + Transforms[i] = cmsCreateTransform(hXYZ, FormatInput, + hProfile, FormatOutput, + Intent, dwPrecalcFlags); + + } + else + if (CurrentColorSpace == icSigLabData) { + + Transforms[i] = cmsCreateTransform(hLab, FormatInput, + hProfile, FormatOutput, + Intent, dwPrecalcFlags); + + } + else { + cmsSignalError(LCMS_ERRC_ABORTED, "cmsCreateMultiprofileTransform: ColorSpace mismatch"); + goto ErrorCleanup; + } + + CurrentColorSpace = ColorSpaceOut; + + } + + p ->ExitColorSpace = CurrentColorSpace; + Transforms[i] = NULL; // End marker + + p ->InputProfile = hProfiles[0]; + p ->OutputProfile = hProfiles[nProfiles - 1]; + + nGridPoints = _cmsReasonableGridpointsByColorspace(p ->EntryColorSpace, dwFlags); + + ChannelsInput = _cmsChannelsOf(cmsGetColorSpace(p ->InputProfile)); + + Grid = cmsAlloc3DGrid(Grid, nGridPoints, ChannelsInput, ChannelsOutput); + + if (!(dwFlags & cmsFLAGS_NOPRELINEARIZATION)) + _cmsComputePrelinearizationTablesFromXFORM(Transforms, nProfiles, Grid); + + // Compute device link on 16-bit basis + if (!cmsSample3DGrid(Grid, MultiprofileSampler, (LPVOID) Transforms, Grid -> wFlags)) { + + cmsFreeLUT(Grid); + goto ErrorCleanup; + } + + // All ok, store the newly created LUT + p -> DeviceLink = Grid; + + SetPrecalculatedTransform(p); + + for (i=nProfiles-1; i >= 0; --i) + cmsDeleteTransform(Transforms[i]); + + + if (hLab) cmsCloseProfile(hLab); + if (hXYZ) cmsCloseProfile(hXYZ); + + + if (p ->EntryColorSpace == icSigRgbData || + p ->EntryColorSpace == icSigCmyData) { + + p->DeviceLink -> CLut16params.Interp3D = cmsTetrahedralInterp16; + } + + + if ((Intent != INTENT_ABSOLUTE_COLORIMETRIC) && + !(dwFlags & cmsFLAGS_NOWHITEONWHITEFIXUP)) + _cmsFixWhiteMisalignment(p); + + return (cmsHTRANSFORM) p; + + +ErrorCleanup: + + if (hLab) cmsCloseProfile(hLab); + if (hXYZ) cmsCloseProfile(hXYZ); + return NULL; +} + + + +double LCMSEXPORT cmsSetAdaptationState(double d) +{ + double OldVal = GlobalAdaptationState; + + if (d >= 0) + GlobalAdaptationState = d; + + return OldVal; + +} diff --git a/icc2ps/foo2zjs-icc2ps.1in b/icc2ps/foo2zjs-icc2ps.1in new file mode 100644 index 0000000..bbccb50 --- /dev/null +++ b/icc2ps/foo2zjs-icc2ps.1in @@ -0,0 +1,54 @@ +.TH foo2zjs-icc2ps 1 "Sun Jun 20 04:33:46 2010" "foo2zjs-icc2ps 0.0" +#ifndef OLDGROFF +#include "../macros.man" +#endif +.SH NAME +foo2zjs-icc2ps - little cms PostScript converter. +.SH SYNOPSIS +.B foo2zjs-icc2ps +.RI [ options ] +.SH DESCRIPTION +lcms is a standalone CMM engine, which deals with the color management. +It implements a fast transformation between ICC profiles. +.B foo2zjs-icc2ps +is little cms PostScript converter. +.SH COMMAND LINE OPTIONS +.TP +.B \-b +Black point compensation (CRD only). +.TP +.B \-c <0,1,2> +Precision (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only) +.TP +.BI \-i\ profile +Input profile: Generates Color Space Array (CSA). +.TP +.B \-n +Alternate way to set precision, number of CLUT points (CRD only) +.TP +.BI \-o\ profile +.p +Output profile: Generates Color Rendering Dictionary(CRD). +.TP +.B \-t <0,1,2,3> +Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute). +.TP +.B \-u +Do NOT generate resource name on CRD. +.SH FILES +.BR /usr/share/foo2*/icm/* +.SH SEE ALSO +.BR foo2hiperc-wrapper (1), +.BR foo2hp2600-wrapper (1), +.BR foo2lava-wrapper (1), +.BR foo2oak-wrapper (1), +.BR foo2qpdl-wrapper (1), +.BR foo2zjs-wrapper (1), +.SH "AUTHOR" +Rick Richardson +.br +http://foo2zjs.rkkda.com/ +'/" +'/" +'/" +.em pdf_outline diff --git a/icc2ps/icc2ps.c b/icc2ps/icc2ps.c new file mode 100644 index 0000000..7c7df2b --- /dev/null +++ b/icc2ps/icc2ps.c @@ -0,0 +1,264 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THIS SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, +// EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY +// WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +// +// IN NO EVENT SHALL MARTI MARIA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, +// INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, +// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +// WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF +// LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +// OF THIS SOFTWARE. +// +// Version 1.12 + +#include "lcms.h" +#include + +// xgetopt() interface ----------------------------------------------------- + +extern int xoptind; +extern char *xoptarg; +extern int xopterr; +extern char SW; +int cdecl xgetopt(int argc, char *argv[], char *optionS); + +// ------------------------------------------------------------------------ + +static char *cInProf = NULL; +static char *cOutProf = NULL; +static int Intent = INTENT_PERCEPTUAL; +static FILE* OutFile; +static int BlackPointCompensation = FALSE; +static int Undecorated = FALSE; +static int PrecalcMode = 1; +static int NumOfGridPoints = 0; + +static +void FatalError(const char *frm, ...) +{ + va_list args; + + va_start(args, frm); + vfprintf(stderr, frm, args); + va_end(args); + + exit(1); +} + + + +// The toggles stuff + +static +void HandleSwitches(int argc, char *argv[]) +{ + int s; + + while ((s = xgetopt(argc,argv,"uUbBI:i:O:o:T:t:c:C:n:N:")) != EOF) { + + switch (s){ + + + case 'i': + case 'I': + cInProf = xoptarg; + break; + + case 'o': + case 'O': + cOutProf = xoptarg; + break; + + case 'b': + case 'B': BlackPointCompensation =TRUE; + break; + + + case 't': + case 'T': + Intent = atoi(xoptarg); + if (Intent > 3) Intent = 3; + if (Intent < 0) Intent = 0; + break; + + case 'U': + case 'u': + Undecorated = TRUE; + break; + + case 'c': + case 'C': + PrecalcMode = atoi(xoptarg); + if (PrecalcMode < 0 || PrecalcMode > 2) + FatalError("ERROR: Unknown precalc mode '%d'", PrecalcMode); + break; + + + case 'n': + case 'N': + if (PrecalcMode != 1) + FatalError("Precalc mode already specified"); + NumOfGridPoints = atoi(xoptarg); + break; + + + default: + + FatalError("Unknown option - run without args to see valid ones.\n"); + } + } +} + +static +void Help(void) +{ + + + fprintf(stderr, "usage: icc2ps [flags]\n\n"); + + fprintf(stderr, "flags:\n\n"); + + fprintf(stderr, "%ci - Input profile: Generates Color Space Array (CSA)\n", SW); + fprintf(stderr, "%co - Output profile: Generates Color Rendering Dictionary(CRD)\n", SW); + + fprintf(stderr, "%ct<0,1,2,3> - Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute)\n", SW); + + fprintf(stderr, "%cb - Black point compensation (CRD only)\n", SW); + fprintf(stderr, "%cu - Do NOT generate resource name on CRD\n", SW); + fprintf(stderr, "%cc<0,1,2> - Precission (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only)\n", SW); + fprintf(stderr, "%cn - Alternate way to set precission, number of CLUT points (CRD only)\n", SW); + + fprintf(stderr, "\n"); + fprintf(stderr, "This program is intended to be a demo of the little cms\n" + "engine. Both lcms and this program are freeware. You can\n" + "obtain both in source code at http://www.littlecms.com\n" + "For suggestions, comments, bug reports etc. send mail to\n" + "info@littlecms.com\n\n"); + exit(0); +} + + +static +void GenerateCSA(void) +{ + cmsHPROFILE hProfile = cmsOpenProfileFromFile(cInProf, "r"); + size_t n; + char* Buffer; + + n = cmsGetPostScriptCSA(hProfile, Intent, NULL, 0); + if (n == 0) return; + + Buffer = (char*) _cmsMalloc(n + 1); + cmsGetPostScriptCSA(hProfile, Intent, Buffer, n); + Buffer[n] = 0; + + fprintf(OutFile, "%s", Buffer); + + _cmsFree(Buffer); + cmsCloseProfile(hProfile); +} + + +static +void GenerateCRD(void) +{ + cmsHPROFILE hProfile = cmsOpenProfileFromFile(cOutProf, "r"); + size_t n; + char* Buffer; + DWORD dwFlags = 0; + + if (BlackPointCompensation) dwFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; + if (Undecorated) dwFlags |= cmsFLAGS_NODEFAULTRESOURCEDEF; + + switch (PrecalcMode) { + + case 0: dwFlags |= cmsFLAGS_LOWRESPRECALC; break; + case 2: dwFlags |= cmsFLAGS_HIGHRESPRECALC; break; + case 1: + if (NumOfGridPoints > 0) + dwFlags |= cmsFLAGS_GRIDPOINTS(NumOfGridPoints); + break; + + default: FatalError("ERROR: Unknown precalculation mode '%d'", PrecalcMode); + } + + + + n = cmsGetPostScriptCRDEx(hProfile, Intent, dwFlags, NULL, 0); + if (n == 0) return; + + Buffer = (char*) _cmsMalloc(n + 1); + cmsGetPostScriptCRDEx(hProfile, Intent, dwFlags, Buffer, n); + Buffer[n] = 0; + + fprintf(OutFile, "%s", Buffer); + _cmsFree(Buffer); + cmsCloseProfile(hProfile); +} + + +static +int MyErrorHandler(int ErrorCode, const char *ErrorText) +{ + FatalError("icc2ps: %s", ErrorText); + return 0; +} + + + +int main(int argc, char *argv[]) +{ + int nargs; + + //fprintf(stderr, "little cms PostScript converter - v1.5+foo2zjs\n\n"); + + HandleSwitches(argc, argv); + + cmsSetErrorHandler(MyErrorHandler); + + nargs = (argc - xoptind); + if (nargs != 0 && nargs != 1) + { + fprintf(stderr, + "little cms PostScript converter - v1.5+v1.18+foo2zjs\n\n"); + Help(); + } + + if (nargs == 0) + OutFile = stdout; + else + OutFile = fopen(argv[xoptind], "wt"); + + + if (cInProf == NULL && cOutProf == NULL) + Help(); + + + if (cInProf != NULL) + GenerateCSA(); + + if (cOutProf != NULL) + GenerateCRD(); + + if (nargs == 1) { + fclose(OutFile); + } + + return 0; +} + + diff --git a/icc2ps/icc34.h b/icc2ps/icc34.h new file mode 100644 index 0000000..735d96a --- /dev/null +++ b/icc2ps/icc34.h @@ -0,0 +1,1029 @@ +/* Header file guard bands */ +#ifndef ICC_H +#define ICC_H + +/***************************************************************** + Copyright (c) 1994-1996 SunSoft, Inc. + + Rights Reserved + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without restrict- +ion, including without limitation the rights to use, copy, modify, +merge, publish distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON- +INFRINGEMENT. IN NO EVENT SHALL SUNSOFT, INC. OR ITS PARENT +COMPANY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of SunSoft, Inc. +shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without written +authorization from SunSoft Inc. +******************************************************************/ + +/* + * This version of the header file corresponds to the profile + * specification version 3.4. + * + * All header file entries are pre-fixed with "ic" to help + * avoid name space collisions. Signatures are pre-fixed with + * icSig. + * + * The structures defined in this header file were created to + * represent a description of an ICC profile on disk. Rather + * than use pointers a technique is used where a single byte array + * was placed at the end of each structure. This allows us in "C" + * to extend the structure by allocating more data than is needed + * to account for variable length structures. + * + * This also ensures that data following is allocated + * contiguously and makes it easier to write and read data from + * the file. + * + * For example to allocate space for a 256 count length UCR + * and BG array, and fill the allocated data. Note strlen + 1 + * to remember NULL terminator. + * + icUcrBgCurve *ucrCurve, *bgCurve; + int ucr_nbytes, bg_nbytes, string_bytes; + icUcrBg *ucrBgWrite; + char ucr_string[100], *ucr_char; + + strcpy(ucr_string, "Example ucrBG curves"); + ucr_nbytes = sizeof(icUInt32Number) + + (UCR_CURVE_SIZE * sizeof(icUInt16Number)); + bg_nbytes = sizeof(icUInt32Number) + + (BG_CURVE_SIZE * sizeof(icUInt16Number)); + string_bytes = strlen(ucr_string) + 1; + + ucrBgWrite = (icUcrBg *)malloc( + (ucr_nbytes + bg_nbytes + string_bytes)); + + ucrCurve = (icUcrBgCurve *)ucrBgWrite->data; + ucrCurve->count = UCR_CURVE_SIZE; + for (i=0; icount; i++) + ucrCurve->curve[i] = (icUInt16Number)i; + + bgCurve = (icUcrBgCurve *)((char *)ucrCurve + ucr_nbytes); + bgCurve->count = BG_CURVE_SIZE; + for (i=0; icount; i++) + bgCurve->curve[i] = 255 - (icUInt16Number)i; + + ucr_char = (char *)((char *)bgCurve + bg_nbytes); + memcpy(ucr_char, ucr_string, string_bytes); + * + */ + +/* + * Many of the structures contain variable length arrays. This + * is represented by the use of the convention. + * + * type data[icAny]; + */ + +/*------------------------------------------------------------------------*/ +/* + * Defines used in the specification + */ +#define icMagicNumber 0x61637370L /* 'acsp' */ +#define icVersionNumber 0x02100000L /* 2.1.0, BCD */ + +/* Screening Encodings */ +#define icPrtrDefaultScreensFalse 0x00000000L /* Bit pos 0 */ +#define icPrtrDefaultScreensTrue 0x00000001L /* Bit pos 0 */ +#define icLinesPerInch 0x00000002L /* Bit pos 1 */ +#define icLinesPerCm 0x00000000L /* Bit pos 1 */ + +/* + * Device attributes, currently defined values correspond + * to the low 4 bytes of the 8 byte attribute quantity, see + * the header for their location. + */ +#define icReflective 0x00000000L /* Bit pos 0 */ +#define icTransparency 0x00000001L /* Bit pos 0 */ +#define icGlossy 0x00000000L /* Bit pos 1 */ +#define icMatte 0x00000002L /* Bit pos 1 */ + +/* + * Profile header flags, the low 16 bits are reserved for consortium + * use. + */ +#define icEmbeddedProfileFalse 0x00000000L /* Bit pos 0 */ +#define icEmbeddedProfileTrue 0x00000001L /* Bit pos 0 */ +#define icUseAnywhere 0x00000000L /* Bit pos 1 */ +#define icUseWithEmbeddedDataOnly 0x00000002L /* Bit pos 1 */ + +/* Ascii or Binary data */ +#define icAsciiData 0x00000000L +#define icBinaryData 0x00000001L + +/* + * Define used to indicate that this is a variable length array + */ +#define icAny 1 + + +/*------------------------------------------------------------------------*/ +/* + * Use this area to translate platform definitions of long + * etc into icXXX form. The rest of the header uses the icXXX + * typedefs. Signatures are 4 byte quantities. + * + */ + + +#ifdef PACKAGE_NAME +/* + June 9, 2003, Adapted for use with configure by Bob Friesenhahn + Added the stupid check for autoconf by Marti Maria. + PACKAGE_NAME is defined if autoconf is being used +*/ + +typedef @UINT8_T@ icUInt8Number; +typedef @UINT16_T@ icUInt16Number; +typedef @UINT32_T@ icUInt32Number; +typedef @UINT32_T@ icUInt64Number[2]; + +typedef @INT8_T@ icInt8Number; +typedef @INT16_T@ icInt16Number; +typedef @INT32_T@ icInt32Number; +typedef @INT32_T@ icInt64Number[2]; + +#else + +/* + *Apr-17-2002: Modified by Marti Maria in order to provide wider portability. + */ + +#if defined (__digital__) && defined (__unix__) + +/* Tru64 */ + +#include + +typedef uint8_t icUInt8Number; +typedef uint16_t icUInt16Number; +typedef uint32_t icUInt32Number; +typedef uint32_t icUInt64Number[2]; + +typedef int8_t icInt8Number; +typedef int16_t icInt16Number; +typedef int32_t icInt32Number; +typedef int32_t icInt64Number[2]; + +#else +#ifdef __sgi +#include "sgidefs.h" + + +/* + * Number definitions + */ + +/* Unsigned integer numbers */ +typedef unsigned char icUInt8Number; +typedef unsigned short icUInt16Number; +typedef __uint32_t icUInt32Number; +typedef __uint32_t icUInt64Number[2]; + +/* Signed numbers */ +typedef char icInt8Number; +typedef short icInt16Number; +typedef __int32_t icInt32Number; +typedef __int32_t icInt64Number[2]; + + +#else +#if defined(__GNUC__) || defined(__unix__) || defined(__unix) + +#include + +#if defined(__sun) || defined(__hpux) || defined (__MINGW) || defined(__MINGW32__) + +#if defined (__MINGW) || defined(__MINGW32__) +#include +#endif + + +typedef uint8_t icUInt8Number; +typedef uint16_t icUInt16Number; +typedef uint32_t icUInt32Number; +typedef uint32_t icUInt64Number[2]; + +#else + +/* Unsigned integer numbers */ +typedef u_int8_t icUInt8Number; +typedef u_int16_t icUInt16Number; +typedef u_int32_t icUInt32Number; +typedef u_int32_t icUInt64Number[2]; + +#endif + + +/* Signed numbers */ +typedef int8_t icInt8Number; +typedef int16_t icInt16Number; +typedef int32_t icInt32Number; +typedef int32_t icInt64Number[2]; + + +#else /* default definitions */ + +/* + * Number definitions + */ + +/* Unsigned integer numbers */ +typedef unsigned char icUInt8Number; +typedef unsigned short icUInt16Number; +typedef unsigned long icUInt32Number; +typedef unsigned long icUInt64Number[2]; + +/* Signed numbers */ +typedef char icInt8Number; +typedef short icInt16Number; +typedef long icInt32Number; +typedef long icInt64Number[2]; + + +#endif /* default defs */ +#endif +#endif +#endif + +/* Base types */ + +typedef icInt32Number icSignature; +typedef icInt32Number icS15Fixed16Number; +typedef icUInt32Number icU16Fixed16Number; + + +/*------------------------------------------------------------------------*/ +/* public tags and sizes */ +typedef enum { + icSigAToB0Tag = 0x41324230L, /* 'A2B0' */ + icSigAToB1Tag = 0x41324231L, /* 'A2B1' */ + icSigAToB2Tag = 0x41324232L, /* 'A2B2' */ + icSigBlueColorantTag = 0x6258595AL, /* 'bXYZ' */ + icSigBlueTRCTag = 0x62545243L, /* 'bTRC' */ + icSigBToA0Tag = 0x42324130L, /* 'B2A0' */ + icSigBToA1Tag = 0x42324131L, /* 'B2A1' */ + icSigBToA2Tag = 0x42324132L, /* 'B2A2' */ + icSigCalibrationDateTimeTag = 0x63616C74L, /* 'calt' */ + icSigCharTargetTag = 0x74617267L, /* 'targ' */ + icSigCopyrightTag = 0x63707274L, /* 'cprt' */ + icSigCrdInfoTag = 0x63726469L, /* 'crdi' */ + icSigDeviceMfgDescTag = 0x646D6E64L, /* 'dmnd' */ + icSigDeviceModelDescTag = 0x646D6464L, /* 'dmdd' */ + icSigGamutTag = 0x67616D74L, /* 'gamt ' */ + icSigGrayTRCTag = 0x6b545243L, /* 'kTRC' */ + icSigGreenColorantTag = 0x6758595AL, /* 'gXYZ' */ + icSigGreenTRCTag = 0x67545243L, /* 'gTRC' */ + icSigLuminanceTag = 0x6C756d69L, /* 'lumi' */ + icSigMeasurementTag = 0x6D656173L, /* 'meas' */ + icSigMediaBlackPointTag = 0x626B7074L, /* 'bkpt' */ + icSigMediaWhitePointTag = 0x77747074L, /* 'wtpt' */ + icSigNamedColorTag = 0x6E636f6CL, /* 'ncol' + * OBSOLETE, use ncl2 */ + icSigNamedColor2Tag = 0x6E636C32L, /* 'ncl2' */ + icSigPreview0Tag = 0x70726530L, /* 'pre0' */ + icSigPreview1Tag = 0x70726531L, /* 'pre1' */ + icSigPreview2Tag = 0x70726532L, /* 'pre2' */ + icSigProfileDescriptionTag = 0x64657363L, /* 'desc' */ + icSigProfileSequenceDescTag = 0x70736571L, /* 'pseq' */ + icSigPs2CRD0Tag = 0x70736430L, /* 'psd0' */ + icSigPs2CRD1Tag = 0x70736431L, /* 'psd1' */ + icSigPs2CRD2Tag = 0x70736432L, /* 'psd2' */ + icSigPs2CRD3Tag = 0x70736433L, /* 'psd3' */ + icSigPs2CSATag = 0x70733273L, /* 'ps2s' */ + icSigPs2RenderingIntentTag = 0x70733269L, /* 'ps2i' */ + icSigRedColorantTag = 0x7258595AL, /* 'rXYZ' */ + icSigRedTRCTag = 0x72545243L, /* 'rTRC' */ + icSigScreeningDescTag = 0x73637264L, /* 'scrd' */ + icSigScreeningTag = 0x7363726EL, /* 'scrn' */ + icSigTechnologyTag = 0x74656368L, /* 'tech' */ + icSigUcrBgTag = 0x62666420L, /* 'bfd ' */ + icSigViewingCondDescTag = 0x76756564L, /* 'vued' */ + icSigViewingConditionsTag = 0x76696577L, /* 'view' */ + icMaxEnumTag = 0xFFFFFFFFL +} icTagSignature; + +/* technology signature descriptions */ +typedef enum { + icSigDigitalCamera = 0x6463616DL, /* 'dcam' */ + icSigFilmScanner = 0x6673636EL, /* 'fscn' */ + icSigReflectiveScanner = 0x7273636EL, /* 'rscn' */ + icSigInkJetPrinter = 0x696A6574L, /* 'ijet' */ + icSigThermalWaxPrinter = 0x74776178L, /* 'twax' */ + icSigElectrophotographicPrinter = 0x6570686FL, /* 'epho' */ + icSigElectrostaticPrinter = 0x65737461L, /* 'esta' */ + icSigDyeSublimationPrinter = 0x64737562L, /* 'dsub' */ + icSigPhotographicPaperPrinter = 0x7270686FL, /* 'rpho' */ + icSigFilmWriter = 0x6670726EL, /* 'fprn' */ + icSigVideoMonitor = 0x7669646DL, /* 'vidm' */ + icSigVideoCamera = 0x76696463L, /* 'vidc' */ + icSigProjectionTelevision = 0x706A7476L, /* 'pjtv' */ + icSigCRTDisplay = 0x43525420L, /* 'CRT ' */ + icSigPMDisplay = 0x504D4420L, /* 'PMD ' */ + icSigAMDisplay = 0x414D4420L, /* 'AMD ' */ + icSigPhotoCD = 0x4B504344L, /* 'KPCD' */ + icSigPhotoImageSetter = 0x696D6773L, /* 'imgs' */ + icSigGravure = 0x67726176L, /* 'grav' */ + icSigOffsetLithography = 0x6F666673L, /* 'offs' */ + icSigSilkscreen = 0x73696C6BL, /* 'silk' */ + icSigFlexography = 0x666C6578L, /* 'flex' */ + icMaxEnumTechnology = 0xFFFFFFFFL +} icTechnologySignature; + +/* type signatures */ +typedef enum { + icSigCurveType = 0x63757276L, /* 'curv' */ + icSigDataType = 0x64617461L, /* 'data' */ + icSigDateTimeType = 0x6474696DL, /* 'dtim' */ + icSigLut16Type = 0x6d667432L, /* 'mft2' */ + icSigLut8Type = 0x6d667431L, /* 'mft1' */ + icSigMeasurementType = 0x6D656173L, /* 'meas' */ + icSigNamedColorType = 0x6E636f6CL, /* 'ncol' + * OBSOLETE, use ncl2 */ + icSigProfileSequenceDescType = 0x70736571L, /* 'pseq' */ + icSigS15Fixed16ArrayType = 0x73663332L, /* 'sf32' */ + icSigScreeningType = 0x7363726EL, /* 'scrn' */ + icSigSignatureType = 0x73696720L, /* 'sig ' */ + icSigTextType = 0x74657874L, /* 'text' */ + icSigTextDescriptionType = 0x64657363L, /* 'desc' */ + icSigU16Fixed16ArrayType = 0x75663332L, /* 'uf32' */ + icSigUcrBgType = 0x62666420L, /* 'bfd ' */ + icSigUInt16ArrayType = 0x75693136L, /* 'ui16' */ + icSigUInt32ArrayType = 0x75693332L, /* 'ui32' */ + icSigUInt64ArrayType = 0x75693634L, /* 'ui64' */ + icSigUInt8ArrayType = 0x75693038L, /* 'ui08' */ + icSigViewingConditionsType = 0x76696577L, /* 'view' */ + icSigXYZType = 0x58595A20L, /* 'XYZ ' */ + icSigXYZArrayType = 0x58595A20L, /* 'XYZ ' */ + icSigNamedColor2Type = 0x6E636C32L, /* 'ncl2' */ + icSigCrdInfoType = 0x63726469L, /* 'crdi' */ + icMaxEnumType = 0xFFFFFFFFL +} icTagTypeSignature; + +/* + * Color Space Signatures + * Note that only icSigXYZData and icSigLabData are valid + * Profile Connection Spaces (PCSs) + */ +typedef enum { + icSigXYZData = 0x58595A20L, /* 'XYZ ' */ + icSigLabData = 0x4C616220L, /* 'Lab ' */ + icSigLuvData = 0x4C757620L, /* 'Luv ' */ + icSigYCbCrData = 0x59436272L, /* 'YCbr' */ + icSigYxyData = 0x59787920L, /* 'Yxy ' */ + icSigRgbData = 0x52474220L, /* 'RGB ' */ + icSigGrayData = 0x47524159L, /* 'GRAY' */ + icSigHsvData = 0x48535620L, /* 'HSV ' */ + icSigHlsData = 0x484C5320L, /* 'HLS ' */ + icSigCmykData = 0x434D594BL, /* 'CMYK' */ + icSigCmyData = 0x434D5920L, /* 'CMY ' */ + icSig2colorData = 0x32434C52L, /* '2CLR' */ + icSig3colorData = 0x33434C52L, /* '3CLR' */ + icSig4colorData = 0x34434C52L, /* '4CLR' */ + icSig5colorData = 0x35434C52L, /* '5CLR' */ + icSig6colorData = 0x36434C52L, /* '6CLR' */ + icSig7colorData = 0x37434C52L, /* '7CLR' */ + icSig8colorData = 0x38434C52L, /* '8CLR' */ + icSig9colorData = 0x39434C52L, /* '9CLR' */ + icSig10colorData = 0x41434C52L, /* 'ACLR' */ + icSig11colorData = 0x42434C52L, /* 'BCLR' */ + icSig12colorData = 0x43434C52L, /* 'CCLR' */ + icSig13colorData = 0x44434C52L, /* 'DCLR' */ + icSig14colorData = 0x45434C52L, /* 'ECLR' */ + icSig15colorData = 0x46434C52L, /* 'FCLR' */ + icMaxEnumData = 0xFFFFFFFFL +} icColorSpaceSignature; + +/* profileClass enumerations */ +typedef enum { + icSigInputClass = 0x73636E72L, /* 'scnr' */ + icSigDisplayClass = 0x6D6E7472L, /* 'mntr' */ + icSigOutputClass = 0x70727472L, /* 'prtr' */ + icSigLinkClass = 0x6C696E6BL, /* 'link' */ + icSigAbstractClass = 0x61627374L, /* 'abst' */ + icSigColorSpaceClass = 0x73706163L, /* 'spac' */ + icSigNamedColorClass = 0x6e6d636cL, /* 'nmcl' */ + icMaxEnumClass = 0xFFFFFFFFL +} icProfileClassSignature; + +/* Platform Signatures */ +typedef enum { + icSigMacintosh = 0x4150504CL, /* 'APPL' */ + icSigMicrosoft = 0x4D534654L, /* 'MSFT' */ + icSigSolaris = 0x53554E57L, /* 'SUNW' */ + icSigSGI = 0x53474920L, /* 'SGI ' */ + icSigTaligent = 0x54474E54L, /* 'TGNT' */ + icMaxEnumPlatform = 0xFFFFFFFFL +} icPlatformSignature; + +/*------------------------------------------------------------------------*/ +/* + * Other enums + */ + +/* Measurement Flare, used in the measurmentType tag */ +typedef enum { + icFlare0 = 0x00000000L, /* 0% flare */ + icFlare100 = 0x00000001L, /* 100% flare */ + icMaxFlare = 0xFFFFFFFFL +} icMeasurementFlare; + +/* Measurement Geometry, used in the measurmentType tag */ +typedef enum { + icGeometryUnknown = 0x00000000L, /* Unknown */ + icGeometry045or450 = 0x00000001L, /* 0/45, 45/0 */ + icGeometry0dord0 = 0x00000002L, /* 0/d or d/0 */ + icMaxGeometry = 0xFFFFFFFFL +} icMeasurementGeometry; + +/* Rendering Intents, used in the profile header */ +typedef enum { + icPerceptual = 0, + icRelativeColorimetric = 1, + icSaturation = 2, + icAbsoluteColorimetric = 3, + icMaxEnumIntent = 0xFFFFFFFFL +} icRenderingIntent; + +/* Different Spot Shapes currently defined, used for screeningType */ +typedef enum { + icSpotShapeUnknown = 0, + icSpotShapePrinterDefault = 1, + icSpotShapeRound = 2, + icSpotShapeDiamond = 3, + icSpotShapeEllipse = 4, + icSpotShapeLine = 5, + icSpotShapeSquare = 6, + icSpotShapeCross = 7, + icMaxEnumSpot = 0xFFFFFFFFL +} icSpotShape; + +/* Standard Observer, used in the measurmentType tag */ +typedef enum { + icStdObsUnknown = 0x00000000L, /* Unknown */ + icStdObs1931TwoDegrees = 0x00000001L, /* 2 deg */ + icStdObs1964TenDegrees = 0x00000002L, /* 10 deg */ + icMaxStdObs = 0xFFFFFFFFL +} icStandardObserver; + +/* Pre-defined illuminants, used in measurement and viewing conditions type */ +typedef enum { + icIlluminantUnknown = 0x00000000L, + icIlluminantD50 = 0x00000001L, + icIlluminantD65 = 0x00000002L, + icIlluminantD93 = 0x00000003L, + icIlluminantF2 = 0x00000004L, + icIlluminantD55 = 0x00000005L, + icIlluminantA = 0x00000006L, + icIlluminantEquiPowerE = 0x00000007L, + icIlluminantF8 = 0x00000008L, + icMaxEnumIluminant = 0xFFFFFFFFL +} icIlluminant; + + +/*------------------------------------------------------------------------*/ +/* + * Arrays of numbers + */ + +/* Int8 Array */ +typedef struct { + icInt8Number data[icAny]; /* Variable array of values */ +} icInt8Array; + +/* UInt8 Array */ +typedef struct { + icUInt8Number data[icAny]; /* Variable array of values */ +} icUInt8Array; + +/* uInt16 Array */ +typedef struct { + icUInt16Number data[icAny]; /* Variable array of values */ +} icUInt16Array; + +/* Int16 Array */ +typedef struct { + icInt16Number data[icAny]; /* Variable array of values */ +} icInt16Array; + +/* uInt32 Array */ +typedef struct { + icUInt32Number data[icAny]; /* Variable array of values */ +} icUInt32Array; + +/* Int32 Array */ +typedef struct { + icInt32Number data[icAny]; /* Variable array of values */ +} icInt32Array; + +/* UInt64 Array */ +typedef struct { + icUInt64Number data[icAny]; /* Variable array of values */ +} icUInt64Array; + +/* Int64 Array */ +typedef struct { + icInt64Number data[icAny]; /* Variable array of values */ +} icInt64Array; + +/* u16Fixed16 Array */ +typedef struct { + icU16Fixed16Number data[icAny]; /* Variable array of values */ +} icU16Fixed16Array; + +/* s15Fixed16 Array */ +typedef struct { + icS15Fixed16Number data[icAny]; /* Variable array of values */ +} icS15Fixed16Array; + +/* The base date time number */ +typedef struct { + icUInt16Number year; + icUInt16Number month; + icUInt16Number day; + icUInt16Number hours; + icUInt16Number minutes; + icUInt16Number seconds; +} icDateTimeNumber; + +/* XYZ Number */ +typedef struct { + icS15Fixed16Number X; + icS15Fixed16Number Y; + icS15Fixed16Number Z; +} icXYZNumber; + +/* XYZ Array */ +typedef struct { + icXYZNumber data[icAny]; /* Variable array of XYZ numbers */ +} icXYZArray; + +/* Curve */ +typedef struct { + icUInt32Number count; /* Number of entries */ + icUInt16Number data[icAny]; /* The actual table data, real + * number is determined by count + * Interpretation depends on how + * data is used with a given tag + */ +} icCurve; + +/* Data */ +typedef struct { + icUInt32Number dataFlag; /* 0 = ascii, 1 = binary */ + icInt8Number data[icAny]; /* Data, size from tag */ +} icData; + +/* lut16 */ +typedef struct { + icUInt8Number inputChan; /* Number of input channels */ + icUInt8Number outputChan; /* Number of output channels */ + icUInt8Number clutPoints; /* Number of grid points */ + icInt8Number pad; /* Padding for byte alignment */ + icS15Fixed16Number e00; /* e00 in the 3 * 3 */ + icS15Fixed16Number e01; /* e01 in the 3 * 3 */ + icS15Fixed16Number e02; /* e02 in the 3 * 3 */ + icS15Fixed16Number e10; /* e10 in the 3 * 3 */ + icS15Fixed16Number e11; /* e11 in the 3 * 3 */ + icS15Fixed16Number e12; /* e12 in the 3 * 3 */ + icS15Fixed16Number e20; /* e20 in the 3 * 3 */ + icS15Fixed16Number e21; /* e21 in the 3 * 3 */ + icS15Fixed16Number e22; /* e22 in the 3 * 3 */ + icUInt16Number inputEnt; /* Num of in-table entries */ + icUInt16Number outputEnt; /* Num of out-table entries */ + icUInt16Number data[icAny]; /* Data follows see spec */ +/* + * Data that follows is of this form + * + * icUInt16Number inputTable[inputChan][icAny]; * The in-table + * icUInt16Number clutTable[icAny]; * The clut + * icUInt16Number outputTable[outputChan][icAny]; * The out-table + */ +} icLut16; + +/* lut8, input & output tables are always 256 bytes in length */ +typedef struct { + icUInt8Number inputChan; /* Num of input channels */ + icUInt8Number outputChan; /* Num of output channels */ + icUInt8Number clutPoints; /* Num of grid points */ + icInt8Number pad; + icS15Fixed16Number e00; /* e00 in the 3 * 3 */ + icS15Fixed16Number e01; /* e01 in the 3 * 3 */ + icS15Fixed16Number e02; /* e02 in the 3 * 3 */ + icS15Fixed16Number e10; /* e10 in the 3 * 3 */ + icS15Fixed16Number e11; /* e11 in the 3 * 3 */ + icS15Fixed16Number e12; /* e12 in the 3 * 3 */ + icS15Fixed16Number e20; /* e20 in the 3 * 3 */ + icS15Fixed16Number e21; /* e21 in the 3 * 3 */ + icS15Fixed16Number e22; /* e22 in the 3 * 3 */ + icUInt8Number data[icAny]; /* Data follows see spec */ +/* + * Data that follows is of this form + * + * icUInt8Number inputTable[inputChan][256]; * The in-table + * icUInt8Number clutTable[icAny]; * The clut + * icUInt8Number outputTable[outputChan][256]; * The out-table + */ +} icLut8; + +/* Measurement Data */ +typedef struct { + icStandardObserver stdObserver; /* Standard observer */ + icXYZNumber backing; /* XYZ for backing */ + icMeasurementGeometry geometry; /* Meas. geometry */ + icMeasurementFlare flare; /* Measurement flare */ + icIlluminant illuminant; /* Illuminant */ +} icMeasurement; + +/* Named color */ + +/* + * icNamedColor2 takes the place of icNamedColor + */ +typedef struct { + icUInt32Number vendorFlag; /* Bottom 16 bits for IC use */ + icUInt32Number count; /* Count of named colors */ + icUInt32Number nDeviceCoords; /* Num of device coordinates */ + icInt8Number prefix[32]; /* Prefix for each color name */ + icInt8Number suffix[32]; /* Suffix for each color name */ + icInt8Number data[icAny]; /* Named color data follows */ +/* + * Data that follows is of this form + * + * icInt8Number root1[32]; * Root name for 1st color + * icUInt16Number pcsCoords1[icAny]; * PCS coords of 1st color + * icUInt16Number deviceCoords1[icAny]; * Dev coords of 1st color + * icInt8Number root2[32]; * Root name for 2nd color + * icUInt16Number pcsCoords2[icAny]; * PCS coords of 2nd color + * icUInt16Number deviceCoords2[icAny]; * Dev coords of 2nd color + * : + * : + * Repeat for name and PCS and device color coordinates up to (count-1) + * + * NOTES: + * PCS and device space can be determined from the header. + * + * PCS coordinates are icUInt16 numbers and are described in Annex A of + * the ICC spec. Only 16 bit L*a*b* and XYZ are allowed. The number of + * coordinates is consistent with the headers PCS. + * + * Device coordinates are icUInt16 numbers where 0x0000 represents + * the minimum value and 0xFFFF represents the maximum value. + * If the nDeviceCoords value is 0 this field is not given. + */ +} icNamedColor2; + +/* Profile sequence structure */ +typedef struct { + icSignature deviceMfg; /* Dev Manufacturer */ + icSignature deviceModel; /* Dev Model */ + icUInt64Number attributes; /* Dev attributes */ + icTechnologySignature technology; /* Technology sig */ + icInt8Number data[icAny]; /* Desc text follows */ +/* + * Data that follows is of this form, this is an icInt8Number + * to avoid problems with a compiler generating bad code as + * these arrays are variable in length. + * + * icTextDescription deviceMfgDesc; * Manufacturer text + * icTextDescription modelDesc; * Model text + */ +} icDescStruct; + +/* Profile sequence description */ +typedef struct { + icUInt32Number count; /* Number of descriptions */ + icUInt8Number data[icAny]; /* Array of desc structs */ +} icProfileSequenceDesc; + +/* textDescription */ +typedef struct { + icUInt32Number count; /* Description length */ + icInt8Number data[icAny]; /* Descriptions follow */ +/* + * Data that follows is of this form + * + * icInt8Number desc[count] * NULL terminated ascii string + * icUInt32Number ucLangCode; * UniCode language code + * icUInt32Number ucCount; * UniCode description length + * icInt16Number ucDesc[ucCount];* The UniCode description + * icUInt16Number scCode; * ScriptCode code + * icUInt8Number scCount; * ScriptCode count + * icInt8Number scDesc[67]; * ScriptCode Description + */ +} icTextDescription; + +/* Screening Data */ +typedef struct { + icS15Fixed16Number frequency; /* Frequency */ + icS15Fixed16Number angle; /* Screen angle */ + icSpotShape spotShape; /* Spot Shape encodings below */ +} icScreeningData; + +typedef struct { + icUInt32Number screeningFlag; /* Screening flag */ + icUInt32Number channels; /* Number of channels */ + icScreeningData data[icAny]; /* Array of screening data */ +} icScreening; + +/* Text Data */ +typedef struct { + icInt8Number data[icAny]; /* Variable array of chars */ +} icText; + +/* Structure describing either a UCR or BG curve */ +typedef struct { + icUInt32Number count; /* Curve length */ + icUInt16Number curve[icAny]; /* The array of curve values */ +} icUcrBgCurve; + +/* Under color removal, black generation */ +typedef struct { + icInt8Number data[icAny]; /* The Ucr BG data */ +/* + * Data that follows is of this form, this is a icInt8Number + * to avoid problems with a compiler generating bad code as + * these arrays are variable in length. + * + * icUcrBgCurve ucr; * Ucr curve + * icUcrBgCurve bg; * Bg curve + * icInt8Number string; * UcrBg description + */ +} icUcrBg; + +/* viewingConditionsType */ +typedef struct { + icXYZNumber illuminant; /* In candelas per sq. meter */ + icXYZNumber surround; /* In candelas per sq. meter */ + icIlluminant stdIluminant; /* See icIlluminant defines */ +} icViewingCondition; + +/* CrdInfo type */ +typedef struct { + icUInt32Number count; /* Char count includes NULL */ + icInt8Number desc[icAny]; /* Null terminated string */ +} icCrdInfo; + +/*------------------------------------------------------------------------*/ +/* + * Tag Type definitions + */ + +/* + * Many of the structures contain variable length arrays. This + * is represented by the use of the convention. + * + * type data[icAny]; + */ + +/* The base part of each tag */ +typedef struct { + icTagTypeSignature sig; /* Signature */ + icInt8Number reserved[4]; /* Reserved, set to 0 */ +} icTagBase; + +/* curveType */ +typedef struct { + icTagBase base; /* Signature, "curv" */ + icCurve curve; /* The curve data */ +} icCurveType; + +/* dataType */ +typedef struct { + icTagBase base; /* Signature, "data" */ + icData data; /* The data structure */ +} icDataType; + +/* dateTimeType */ +typedef struct { + icTagBase base; /* Signature, "dtim" */ + icDateTimeNumber date; /* The date */ +} icDateTimeType; + +/* lut16Type */ +typedef struct { + icTagBase base; /* Signature, "mft2" */ + icLut16 lut; /* Lut16 data */ +} icLut16Type; + +/* lut8Type, input & output tables are always 256 bytes in length */ +typedef struct { + icTagBase base; /* Signature, "mft1" */ + icLut8 lut; /* Lut8 data */ +} icLut8Type; + +/* Measurement Type */ +typedef struct { + icTagBase base; /* Signature, "meas" */ + icMeasurement measurement; /* Measurement data */ +} icMeasurementType; + +/* Named color type */ +/* icNamedColor2Type, replaces icNamedColorType */ +typedef struct { + icTagBase base; /* Signature, "ncl2" */ + icNamedColor2 ncolor; /* Named color data */ +} icNamedColor2Type; + +/* Profile sequence description type */ +typedef struct { + icTagBase base; /* Signature, "pseq" */ + icProfileSequenceDesc desc; /* The seq description */ +} icProfileSequenceDescType; + +/* textDescriptionType */ +typedef struct { + icTagBase base; /* Signature, "desc" */ + icTextDescription desc; /* The description */ +} icTextDescriptionType; + +/* s15Fixed16Type */ +typedef struct { + icTagBase base; /* Signature, "sf32" */ + icS15Fixed16Array data; /* Array of values */ +} icS15Fixed16ArrayType; + +typedef struct { + icTagBase base; /* Signature, "scrn" */ + icScreening screen; /* Screening structure */ +} icScreeningType; + +/* sigType */ +typedef struct { + icTagBase base; /* Signature, "sig" */ + icSignature signature; /* The signature data */ +} icSignatureType; + +/* textType */ +typedef struct { + icTagBase base; /* Signature, "text" */ + icText data; /* Variable array of chars */ +} icTextType; + +/* u16Fixed16Type */ +typedef struct { + icTagBase base; /* Signature, "uf32" */ + icU16Fixed16Array data; /* Variable array of values */ +} icU16Fixed16ArrayType; + +/* Under color removal, black generation type */ +typedef struct { + icTagBase base; /* Signature, "bfd " */ + icUcrBg data; /* ucrBg structure */ +} icUcrBgType; + +/* uInt16Type */ +typedef struct { + icTagBase base; /* Signature, "ui16" */ + icUInt16Array data; /* Variable array of values */ +} icUInt16ArrayType; + +/* uInt32Type */ +typedef struct { + icTagBase base; /* Signature, "ui32" */ + icUInt32Array data; /* Variable array of values */ +} icUInt32ArrayType; + +/* uInt64Type */ +typedef struct { + icTagBase base; /* Signature, "ui64" */ + icUInt64Array data; /* Variable array of values */ +} icUInt64ArrayType; + +/* uInt8Type */ +typedef struct { + icTagBase base; /* Signature, "ui08" */ + icUInt8Array data; /* Variable array of values */ +} icUInt8ArrayType; + +/* viewingConditionsType */ +typedef struct { + icTagBase base; /* Signature, "view" */ + icViewingCondition view; /* Viewing conditions */ +} icViewingConditionType; + +/* XYZ Type */ +typedef struct { + icTagBase base; /* Signature, "XYZ" */ + icXYZArray data; /* Variable array of XYZ nums */ +} icXYZType; + +/* CRDInfoType where [0] is the CRD product name count and string and + * [1] -[5] are the rendering intents 0-4 counts and strings + */ +typedef struct { + icTagBase base; /* Signature, "crdi" */ + icCrdInfo info; /* 5 sets of counts & strings */ +}icCrdInfoType; + /* icCrdInfo productName; PS product count/string */ + /* icCrdInfo CRDName0; CRD name for intent 0 */ + /* icCrdInfo CRDName1; CRD name for intent 1 */ + /* icCrdInfo CRDName2; CRD name for intent 2 */ + /* icCrdInfo CRDName3; CRD name for intent 3 */ + +/*------------------------------------------------------------------------*/ + +/* + * Lists of tags, tags, profile header and profile structure + */ + +/* A tag */ +typedef struct { + icTagSignature sig; /* The tag signature */ + icUInt32Number offset; /* Start of tag relative to + * start of header, Spec + * Clause 5 */ + icUInt32Number size; /* Size in bytes */ +} icTag; + +/* A Structure that may be used independently for a list of tags */ +typedef struct { + icUInt32Number count; /* Num tags in the profile */ + icTag tags[icAny]; /* Variable array of tags */ +} icTagList; + +/* The Profile header */ +typedef struct { + icUInt32Number size; /* Prof size in bytes */ + icSignature cmmId; /* CMM for profile */ + icUInt32Number version; /* Format version */ + icProfileClassSignature deviceClass; /* Type of profile */ + icColorSpaceSignature colorSpace; /* Clr space of data */ + icColorSpaceSignature pcs; /* PCS, XYZ or Lab */ + icDateTimeNumber date; /* Creation Date */ + icSignature magic; /* icMagicNumber */ + icPlatformSignature platform; /* Primary Platform */ + icUInt32Number flags; /* Various bits */ + icSignature manufacturer; /* Dev manufacturer */ + icUInt32Number model; /* Dev model number */ + icUInt64Number attributes; /* Device attributes */ + icUInt32Number renderingIntent;/* Rendering intent */ + icXYZNumber illuminant; /* Profile illuminant */ + icSignature creator; /* Profile creator */ + icInt8Number reserved[44]; /* Reserved */ +} icHeader; + +/* + * A profile, + * we can't use icTagList here because its not at the end of the structure + */ +typedef struct { + icHeader header; /* The header */ + icUInt32Number count; /* Num tags in the profile */ + icInt8Number data[icAny]; /* The tagTable and tagData */ +/* + * Data that follows is of the form + * + * icTag tagTable[icAny]; * The tag table + * icInt8Number tagData[icAny]; * The tag data + */ +} icProfile; + +/*------------------------------------------------------------------------*/ +/* Obsolete entries */ + +/* icNamedColor was replaced with icNamedColor2 */ +typedef struct { + icUInt32Number vendorFlag; /* Bottom 16 bits for IC use */ + icUInt32Number count; /* Count of named colors */ + icInt8Number data[icAny]; /* Named color data follows */ +/* + * Data that follows is of this form + * + * icInt8Number prefix[icAny]; * Prefix + * icInt8Number suffix[icAny]; * Suffix + * icInt8Number root1[icAny]; * Root name + * icInt8Number coords1[icAny]; * Color coordinates + * icInt8Number root2[icAny]; * Root name + * icInt8Number coords2[icAny]; * Color coordinates + * : + * : + * Repeat for root name and color coordinates up to (count-1) + */ +} icNamedColor; + +/* icNamedColorType was replaced by icNamedColor2Type */ +typedef struct { + icTagBase base; /* Signature, "ncol" */ + icNamedColor ncolor; /* Named color data */ +} icNamedColorType; + +#endif /* ICC_H */ diff --git a/icc2ps/lcms.h b/icc2ps/lcms.h new file mode 100644 index 0000000..9637c97 --- /dev/null +++ b/icc2ps/lcms.h @@ -0,0 +1,2069 @@ +// +// Little cms +// Copyright (C) 1998-2007 Marti Maria +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// Version 1.18 + +#ifndef __cms_H + +// ********** Configuration toggles **************************************** + +// Optimization mode. +// +// Note that USE_ASSEMBLER Is fastest by far, but it is limited to Pentium. +// USE_FLOAT are the generic floating-point routines. USE_C should work on +// virtually any machine. + +//#define USE_FLOAT 1 +// #define USE_C 1 +#define USE_ASSEMBLER 1 + +// Define this if you are using this package as a DLL (windows only) + +// #define LCMS_DLL 1 +// #define LCMS_DLL_BUILD 1 + +// Uncomment if you are trying the engine in a non-windows environment +// like linux, SGI, VAX, FreeBSD, BeOS, etc. +#define NON_WINDOWS 1 + +// Uncomment this one if you are using big endian machines (only meaningful +// when NON_WINDOWS is used) +// #define USE_BIG_ENDIAN 1 + +// Uncomment this one if your compiler/machine does support the +// "long long" type This will speedup fixed point math. (USE_C only) +#define USE_INT64 1 + +// Some machines does not have a reliable 'swab' function. Usually +// leave commented unless the testbed diagnoses the contrary. +#define USE_CUSTOM_SWAB 1 + +// Uncomment this if your compiler supports inline +#define USE_INLINE 1 + +// Uncomment this if your compiler doesn't work with fast floor function +// #define USE_DEFAULT_FLOOR_CONVERSION 1 + +// Uncomment this line on multithreading environments +// #define USE_PTHREADS 1 + +// Uncomment this line if you want lcms to use the black point tag in profile, +// if commented, lcms will compute the black point by its own. +// It is safer to leve it commented out +// #define HONOR_BLACK_POINT_TAG 1 + +// ********** End of configuration toggles ****************************** + +#define LCMS_VERSION 118 + +// Microsoft VisualC++ + +// Deal with Microsoft's attempt at deprecating C standard runtime functions +#ifdef _MSC_VER +# undef NON_WINDOWS +# if (_MSC_VER >= 1400) +# ifndef _CRT_SECURE_NO_DEPRECATE +# define _CRT_SECURE_NO_DEPRECATE 1 +# endif +# endif +#endif + +// Borland C + +#ifdef __BORLANDC__ +# undef NON_WINDOWS +#endif + +#include +#include +#include +#include +#include +#include + +// Metroworks CodeWarrior +#ifdef __MWERKS__ +# define unlink remove +# if WIN32 +# define USE_CUSTOM_SWAB 1 +# undef NON_WINDOWS +# else +# define NON_WINDOWS 1 +# endif +#endif + + +// Here comes the Non-Windows settings + +#ifdef NON_WINDOWS + +// Non windows environments. Also avoid indentation on includes. + +#ifdef USE_PTHREADS +# include +typedef pthread_rwlock_t LCMS_RWLOCK_T; +# define LCMS_CREATE_LOCK(x) pthread_rwlock_init((x), NULL) +# define LCMS_FREE_LOCK(x) pthread_rwlock_destroy((x)) +# define LCMS_READ_LOCK(x) pthread_rwlock_rdlock((x)) +# define LCMS_WRITE_LOCK(x) pthread_rwlock_wrlock((x)) +# define LCMS_UNLOCK(x) pthread_rwlock_unlock((x)) +#endif + +#undef LCMS_DLL + +#ifdef USE_ASSEMBLER +# undef USE_ASSEMBLER +# define USE_C 1 +#endif + +#ifdef _HOST_BIG_ENDIAN +# define USE_BIG_ENDIAN 1 +#endif + +#if defined(__sgi__) || defined(__sgi) || defined(__powerpc__) || defined(sparc) || defined(__ppc__) || defined(__s390__) || defined(__s390x__) +# define USE_BIG_ENDIAN 1 +#endif + +#if TARGET_CPU_PPC +# define USE_BIG_ENDIAN 1 +#endif + +#if macintosh +# ifndef __LITTLE_ENDIAN__ +# define USE_BIG_ENDIAN 1 +# endif +#endif + +#ifdef __BIG_ENDIAN__ +# define USE_BIG_ENDIAN 1 +#endif + +#ifdef WORDS_BIGENDIAN +# define USE_BIG_ENDIAN 1 +#endif + +#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) +# include +# define USE_INT64 1 +# define LCMSSLONGLONG int64_t +# define LCMSULONGLONG u_int64_t +#endif + +#ifdef USE_INT64 +# ifndef LCMSULONGLONG +# define LCMSULONGLONG unsigned long long +# define LCMSSLONGLONG long long +# endif +#endif + +#if !defined(__INTEGRITY) +# include +#endif + +#include + +#if defined(__GNUC__) || defined(__FreeBSD__) +# include +#endif + +#ifndef LCMS_WIN_TYPES_ALREADY_DEFINED + +typedef unsigned char BYTE, *LPBYTE; +typedef unsigned short WORD, *LPWORD; +typedef unsigned long DWORD, *LPDWORD; +typedef char *LPSTR; +typedef void *LPVOID; + +#define ZeroMemory(p,l) memset((p),0,(l)) +#define CopyMemory(d,s,l) memcpy((d),(s),(l)) +#define FAR + +#ifndef stricmp +# define stricmp strcasecmp +#endif + + +#ifndef FALSE +# define FALSE 0 +#endif +#ifndef TRUE +# define TRUE 1 +#endif + +#define LOWORD(l) ((WORD)(l)) +#define HIWORD(l) ((WORD)((DWORD)(l) >> 16)) + +#ifndef MAX_PATH +# define MAX_PATH (256) +#endif + +#define cdecl +#endif + +// The specification for "inline" is section 6.7.4 of the C99 standard (ISO/IEC 9899:1999). + +#define LCMS_INLINE static inline + +#else + +// Win32 stuff + +#ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +#endif + +#include + +#ifdef _WIN64 +# ifdef USE_ASSEMBLER +# undef USE_ASSEMBLER +# define USE_C 1 +# endif +#endif + +#ifdef USE_INT64 +# ifndef LCMSULONGLONG +# define LCMSULONGLONG unsigned __int64 +# define LCMSSLONGLONG __int64 +# endif +#endif + +// This works for both VC & BorlandC +#define LCMS_INLINE __inline + +#ifdef USE_PTHREADS +typedef CRITICAL_SECTION LCMS_RWLOCK_T; +# define LCMS_CREATE_LOCK(x) InitializeCriticalSection((x)) +# define LCMS_FREE_LOCK(x) DeleteCriticalSection((x)) +# define LCMS_READ_LOCK(x) EnterCriticalSection((x)) +# define LCMS_WRITE_LOCK(x) EnterCriticalSection((x)) +# define LCMS_UNLOCK(x) LeaveCriticalSection((x)) +#endif + +#endif + +#ifndef USE_PTHREADS +typedef int LCMS_RWLOCK_T; +# define LCMS_CREATE_LOCK(x) +# define LCMS_FREE_LOCK(x) +# define LCMS_READ_LOCK(x) +# define LCMS_WRITE_LOCK(x) +# define LCMS_UNLOCK(x) +#endif + +// Base types + +typedef int LCMSBOOL; +typedef void* LCMSHANDLE; + +#include "icc34.h" // ICC header file + + +// Some tag & type additions + +#define lcmsSignature ((icSignature) 0x6c636d73L) + +#define icSigLuvKData ((icColorSpaceSignature) 0x4C75764BL) // 'LuvK' + +#define icSigHexachromeData ((icColorSpaceSignature) 0x4d434836L) // MCH6 +#define icSigHeptachromeData ((icColorSpaceSignature) 0x4d434837L) // MCH7 +#define icSigOctachromeData ((icColorSpaceSignature) 0x4d434838L) // MCH8 + +#define icSigMCH5Data ((icColorSpaceSignature) 0x4d434835L) // MCH5 +#define icSigMCH6Data ((icColorSpaceSignature) 0x4d434836L) // MCH6 +#define icSigMCH7Data ((icColorSpaceSignature) 0x4d434837L) // MCH7 +#define icSigMCH8Data ((icColorSpaceSignature) 0x4d434838L) // MCH8 +#define icSigMCH9Data ((icColorSpaceSignature) 0x4d434839L) // MCH9 +#define icSigMCHAData ((icColorSpaceSignature) 0x4d434841L) // MCHA +#define icSigMCHBData ((icColorSpaceSignature) 0x4d434842L) // MCHB +#define icSigMCHCData ((icColorSpaceSignature) 0x4d434843L) // MCHC +#define icSigMCHDData ((icColorSpaceSignature) 0x4d434844L) // MCHD +#define icSigMCHEData ((icColorSpaceSignature) 0x4d434845L) // MCHE +#define icSigMCHFData ((icColorSpaceSignature) 0x4d434846L) // MCHF + +#define icSigChromaticityTag ((icTagSignature) 0x6368726dL) // As per Addendum 2 to Spec. ICC.1:1998-09 +#define icSigChromaticAdaptationTag ((icTagSignature) 0x63686164L) // 'chad' +#define icSigColorantTableTag ((icTagSignature) 0x636c7274L) // 'clrt' +#define icSigColorantTableOutTag ((icTagSignature) 0x636c6f74L) // 'clot' + +#define icSigParametricCurveType ((icTagTypeSignature) 0x70617261L) // parametric (ICC 4.0) +#define icSigMultiLocalizedUnicodeType ((icTagTypeSignature) 0x6D6C7563L) +#define icSigS15Fixed16ArrayType ((icTagTypeSignature) 0x73663332L) +#define icSigChromaticityType ((icTagTypeSignature) 0x6368726dL) +#define icSiglutAtoBType ((icTagTypeSignature) 0x6d414220L) // mAB +#define icSiglutBtoAType ((icTagTypeSignature) 0x6d424120L) // mBA +#define icSigColorantTableType ((icTagTypeSignature) 0x636c7274L) // clrt + + +typedef struct { + icUInt8Number gridPoints[16]; // Number of grid points in each dimension. + icUInt8Number prec; // Precision of data elements in bytes. + icUInt8Number pad1; + icUInt8Number pad2; + icUInt8Number pad3; + /*icUInt8Number data[icAny]; Data follows see spec for size */ +} icCLutStruct; + +// icLutAtoB +typedef struct { + icUInt8Number inputChan; // Number of input channels + icUInt8Number outputChan; // Number of output channels + icUInt8Number pad1; + icUInt8Number pad2; + icUInt32Number offsetB; // Offset to first "B" curve + icUInt32Number offsetMat; // Offset to matrix + icUInt32Number offsetM; // Offset to first "M" curve + icUInt32Number offsetC; // Offset to CLUT + icUInt32Number offsetA; // Offset to first "A" curve + /*icUInt8Number data[icAny]; Data follows see spec for size */ +} icLutAtoB; + +// icLutBtoA +typedef struct { + icUInt8Number inputChan; // Number of input channels + icUInt8Number outputChan; // Number of output channels + icUInt8Number pad1; + icUInt8Number pad2; + icUInt32Number offsetB; // Offset to first "B" curve + icUInt32Number offsetMat; // Offset to matrix + icUInt32Number offsetM; // Offset to first "M" curve + icUInt32Number offsetC; // Offset to CLUT + icUInt32Number offsetA; // Offset to first "A" curve + /*icUInt8Number data[icAny]; Data follows see spec for size */ +} icLutBtoA; + + + + + +#ifdef __cplusplus +extern "C" { +#endif + +// Calling convention + +#ifdef NON_WINDOWS +# define LCMSEXPORT +# define LCMSAPI +#else +# ifdef LCMS_DLL +# ifdef __BORLANDC__ +# define LCMSEXPORT __stdcall _export +# define LCMSAPI +# else + // VC++ +# define LCMSEXPORT _stdcall +# ifdef LCMS_DLL_BUILD +# define LCMSAPI __declspec(dllexport) +# else +# define LCMSAPI __declspec(dllimport) +# endif +# endif +# else +# define LCMSEXPORT cdecl +# define LCMSAPI +# endif +#endif + +#ifdef USE_ASSEMBLER +#ifdef __BORLANDC__ + +# define ASM asm +# define RET(v) return(v) +#else + // VC++ +# define ASM __asm +# define RET(v) return +#endif +#endif + +#ifdef _MSC_VER +#ifndef stricmp +# define stricmp _stricmp +#endif +#ifndef unlink +# define unlink _unlink +#endif +#ifndef swab +# define swab _swab +#endif +#ifndef itoa +# define itoa _itoa +#endif +#ifndef fileno +# define fileno _fileno +#endif +#ifndef strupr +# define strupr _strupr +#endif +#ifndef hypot +# define hypot _hypot +#endif +#ifndef snprintf +# define snprintf _snprintf +#endif +#ifndef vsnprintf +# define vsnprintf _vsnprintf +#endif + + +#endif + + +#ifndef M_PI +# define M_PI 3.14159265358979323846 +#endif + +#ifndef LOGE +# define LOGE 0.4342944819 +#endif + +// ********** Little cms API *************************************************** + +typedef LCMSHANDLE cmsHPROFILE; // Opaque typedefs to hide internals +typedef LCMSHANDLE cmsHTRANSFORM; + +#define MAXCHANNELS 16 // Maximum number of channels + +// Format of pixel is defined by one DWORD, using bit fields as follows +// +// D TTTTT U Y F P X S EEE CCCC BBB +// +// D: Use dither (8 bits only) +// T: Pixeltype +// F: Flavor 0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla) +// P: Planar? 0=Chunky, 1=Planar +// X: swap 16 bps endianess? +// S: Do swap? ie, BGR, KYMC +// E: Extra samples +// C: Channels (Samples per pixel) +// B: Bytes per sample +// Y: Swap first - changes ABGR to BGRA and KCMY to CMYK + + +#define DITHER_SH(s) ((s) << 22) +#define COLORSPACE_SH(s) ((s) << 16) +#define SWAPFIRST_SH(s) ((s) << 14) +#define FLAVOR_SH(s) ((s) << 13) +#define PLANAR_SH(p) ((p) << 12) +#define ENDIAN16_SH(e) ((e) << 11) +#define DOSWAP_SH(e) ((e) << 10) +#define EXTRA_SH(e) ((e) << 7) +#define CHANNELS_SH(c) ((c) << 3) +#define BYTES_SH(b) (b) + +// Pixel types + +#define PT_ANY 0 // Don't check colorspace + // 1 & 2 are reserved +#define PT_GRAY 3 +#define PT_RGB 4 +#define PT_CMY 5 +#define PT_CMYK 6 +#define PT_YCbCr 7 +#define PT_YUV 8 // Lu'v' +#define PT_XYZ 9 +#define PT_Lab 10 +#define PT_YUVK 11 // Lu'v'K +#define PT_HSV 12 +#define PT_HLS 13 +#define PT_Yxy 14 +#define PT_HiFi 15 +#define PT_HiFi7 16 +#define PT_HiFi8 17 +#define PT_HiFi9 18 +#define PT_HiFi10 19 +#define PT_HiFi11 20 +#define PT_HiFi12 21 +#define PT_HiFi13 22 +#define PT_HiFi14 23 +#define PT_HiFi15 24 + +#define NOCOLORSPACECHECK(x) ((x) & 0xFFFF) + +// Some (not all!) representations + +#ifndef TYPE_RGB_8 // TYPE_RGB_8 is a very common identifier, so don't include ours + // if user has it already defined. + +#define TYPE_GRAY_8 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)) +#define TYPE_GRAY_8_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)|FLAVOR_SH(1)) +#define TYPE_GRAY_16 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)) +#define TYPE_GRAY_16_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|FLAVOR_SH(1)) +#define TYPE_GRAY_16_SE (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_GRAYA_8 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)) +#define TYPE_GRAYA_16 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)) +#define TYPE_GRAYA_16_SE (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_GRAYA_8_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_GRAYA_16_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PLANAR_SH(1)) + +#define TYPE_RGB_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_RGB_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_BGR_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_BGR_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1)) +#define TYPE_RGB_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_RGB_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_RGB_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_BGR_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_BGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) +#define TYPE_BGR_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +#define TYPE_RGBA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_RGBA_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_RGBA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_RGBA_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_RGBA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +#define TYPE_ARGB_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_ARGB_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)) + +#define TYPE_ABGR_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_ABGR_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_ABGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) +#define TYPE_ABGR_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +#define TYPE_BGRA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_BGRA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_BGRA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)|SWAPFIRST_SH(1)) + +#define TYPE_CMY_8 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_CMY_8_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_CMY_16 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_CMY_16_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_CMY_16_SE (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +#define TYPE_CMYK_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)) +#define TYPE_CMYKA_8 (COLORSPACE_SH(PT_CMYK)|EXTRA_SH(1)|CHANNELS_SH(4)|BYTES_SH(1)) +#define TYPE_CMYK_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)) +#define TYPE_YUVK_8 TYPE_CMYK_8_REV +#define TYPE_CMYK_8_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_CMYK_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)) +#define TYPE_CMYK_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)) +#define TYPE_YUVK_16 TYPE_CMYK_16_REV +#define TYPE_CMYK_16_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_CMYK_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)) + +#define TYPE_KYMC_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +#define TYPE_KCMY_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) +#define TYPE_KCMY_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)|SWAPFIRST_SH(1)) + + +// HiFi separations, Thanks to Steven Greaves for providing the code, +// the colorspace is not checked +#define TYPE_CMYK5_8 (CHANNELS_SH(5)|BYTES_SH(1)) +#define TYPE_CMYK5_16 (CHANNELS_SH(5)|BYTES_SH(2)) +#define TYPE_CMYK5_16_SE (CHANNELS_SH(5)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC5_8 (CHANNELS_SH(5)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC5_16 (CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC5_16_SE (CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +#define TYPE_CMYKcm_8 (CHANNELS_SH(6)|BYTES_SH(1)) +#define TYPE_CMYKcm_8_PLANAR (CHANNELS_SH(6)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_CMYKcm_16 (CHANNELS_SH(6)|BYTES_SH(2)) +#define TYPE_CMYKcm_16_PLANAR (CHANNELS_SH(6)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_CMYKcm_16_SE (CHANNELS_SH(6)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// Separations with more than 6 channels aren't very standarized, +// Except most start with CMYK and add other colors, so I just used +// then total number of channels after CMYK i.e CMYK8_8 + +#define TYPE_CMYK7_8 (CHANNELS_SH(7)|BYTES_SH(1)) +#define TYPE_CMYK7_16 (CHANNELS_SH(7)|BYTES_SH(2)) +#define TYPE_CMYK7_16_SE (CHANNELS_SH(7)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC7_8 (CHANNELS_SH(7)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC7_16 (CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC7_16_SE (CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK8_8 (CHANNELS_SH(8)|BYTES_SH(1)) +#define TYPE_CMYK8_16 (CHANNELS_SH(8)|BYTES_SH(2)) +#define TYPE_CMYK8_16_SE (CHANNELS_SH(8)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC8_8 (CHANNELS_SH(8)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC8_16 (CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC8_16_SE (CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK9_8 (CHANNELS_SH(9)|BYTES_SH(1)) +#define TYPE_CMYK9_16 (CHANNELS_SH(9)|BYTES_SH(2)) +#define TYPE_CMYK9_16_SE (CHANNELS_SH(9)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC9_8 (CHANNELS_SH(9)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC9_16 (CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC9_16_SE (CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK10_8 (CHANNELS_SH(10)|BYTES_SH(1)) +#define TYPE_CMYK10_16 (CHANNELS_SH(10)|BYTES_SH(2)) +#define TYPE_CMYK10_16_SE (CHANNELS_SH(10)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC10_8 (CHANNELS_SH(10)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC10_16 (CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC10_16_SE (CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK11_8 (CHANNELS_SH(11)|BYTES_SH(1)) +#define TYPE_CMYK11_16 (CHANNELS_SH(11)|BYTES_SH(2)) +#define TYPE_CMYK11_16_SE (CHANNELS_SH(11)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC11_8 (CHANNELS_SH(11)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC11_16 (CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC11_16_SE (CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) +#define TYPE_CMYK12_8 (CHANNELS_SH(12)|BYTES_SH(1)) +#define TYPE_CMYK12_16 (CHANNELS_SH(12)|BYTES_SH(2)) +#define TYPE_CMYK12_16_SE (CHANNELS_SH(12)|BYTES_SH(2)|ENDIAN16_SH(1)) +#define TYPE_KYMC12_8 (CHANNELS_SH(12)|BYTES_SH(1)|DOSWAP_SH(1)) +#define TYPE_KYMC12_16 (CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)) +#define TYPE_KYMC12_16_SE (CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) + +// Colorimetric + +#define TYPE_XYZ_16 (COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_Lab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_ALab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|DOSWAP_SH(1)) +#define TYPE_Lab_16 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_Yxy_16 (COLORSPACE_SH(PT_Yxy)|CHANNELS_SH(3)|BYTES_SH(2)) + +// YCbCr + +#define TYPE_YCbCr_8 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_YCbCr_8_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_YCbCr_16 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_YCbCr_16_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_YCbCr_16_SE (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// YUV + +#define TYPE_YUV_8 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_YUV_8_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_YUV_16 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_YUV_16_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_YUV_16_SE (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// HLS + +#define TYPE_HLS_8 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_HLS_8_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_HLS_16 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_HLS_16_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_HLS_16_SE (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + + +// HSV + +#define TYPE_HSV_8 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)) +#define TYPE_HSV_8_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) +#define TYPE_HSV_16 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)) +#define TYPE_HSV_16_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) +#define TYPE_HSV_16_SE (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) + +// Named color index. Only 16 bits allowed (don't check colorspace) + +#define TYPE_NAMED_COLOR_INDEX (CHANNELS_SH(1)|BYTES_SH(2)) + +// Double values. Painful slow, but sometimes helpful. NOTE THAT 'BYTES' FIELD IS SET TO ZERO! + +#define TYPE_XYZ_DBL (COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(0)) +#define TYPE_Lab_DBL (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(0)) +#define TYPE_GRAY_DBL (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(0)) +#define TYPE_RGB_DBL (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)) +#define TYPE_CMYK_DBL (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(0)) + +#endif + + +// Gamma table parameters + +typedef struct { + + unsigned int Crc32; // Has my table been touched? + + // Keep initial parameters for further serialization + + int Type; + double Params[10]; + + } LCMSGAMMAPARAMS, FAR* LPLCMSGAMMAPARAMS; + +// Gamma tables. + +typedef struct { + + LCMSGAMMAPARAMS Seed; // Parameters used for table creation + + // Table-based representation follows + + int nEntries; + WORD GammaTable[1]; + + } GAMMATABLE; + +typedef GAMMATABLE FAR* LPGAMMATABLE; + +// Sampled curves (1D) +typedef struct { + + int nItems; + double* Values; + + } SAMPLEDCURVE; + +typedef SAMPLEDCURVE FAR* LPSAMPLEDCURVE; + +// Vectors +typedef struct { // Float Vector + + double n[3]; + + } VEC3; + +typedef VEC3 FAR* LPVEC3; + + +typedef struct { // Matrix + + VEC3 v[3]; + + } MAT3; + +typedef MAT3 FAR* LPMAT3; + +// Colorspace values +typedef struct { + + double X; + double Y; + double Z; + + } cmsCIEXYZ; + +typedef cmsCIEXYZ FAR* LPcmsCIEXYZ; + +typedef struct { + + double x; + double y; + double Y; + + } cmsCIExyY; + +typedef cmsCIExyY FAR* LPcmsCIExyY; + +typedef struct { + + double L; + double a; + double b; + + } cmsCIELab; + +typedef cmsCIELab FAR* LPcmsCIELab; + +typedef struct { + + double L; + double C; + double h; + + } cmsCIELCh; + +typedef cmsCIELCh FAR* LPcmsCIELCh; + +typedef struct { + + double J; + double C; + double h; + + } cmsJCh; + +typedef cmsJCh FAR* LPcmsJCh; + +// Primaries +typedef struct { + + cmsCIEXYZ Red; + cmsCIEXYZ Green; + cmsCIEXYZ Blue; + + } cmsCIEXYZTRIPLE; + +typedef cmsCIEXYZTRIPLE FAR* LPcmsCIEXYZTRIPLE; + + +typedef struct { + + cmsCIExyY Red; + cmsCIExyY Green; + cmsCIExyY Blue; + + } cmsCIExyYTRIPLE; + +typedef cmsCIExyYTRIPLE FAR* LPcmsCIExyYTRIPLE; + + + +// Following ICC spec + +#define D50X (0.9642) +#define D50Y (1.0) +#define D50Z (0.8249) + +#define PERCEPTUAL_BLACK_X (0.00336) +#define PERCEPTUAL_BLACK_Y (0.0034731) +#define PERCEPTUAL_BLACK_Z (0.00287) + +// Does return pointers to constant structs + +LCMSAPI LPcmsCIEXYZ LCMSEXPORT cmsD50_XYZ(void); +LCMSAPI LPcmsCIExyY LCMSEXPORT cmsD50_xyY(void); + + +// Input/Output + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess); +LCMSAPI cmsHPROFILE LCMSEXPORT cmsOpenProfileFromMem(LPVOID MemPtr, DWORD dwSize); +LCMSAPI LCMSBOOL LCMSEXPORT cmsCloseProfile(cmsHPROFILE hProfile); + +// Predefined run-time profiles + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateRGBProfile(LPcmsCIExyY WhitePoint, + LPcmsCIExyYTRIPLE Primaries, + LPGAMMATABLE TransferFunction[3]); + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateGrayProfile(LPcmsCIExyY WhitePoint, + LPGAMMATABLE TransferFunction); + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateLinearizationDeviceLink(icColorSpaceSignature ColorSpace, + LPGAMMATABLE TransferFunctions[]); + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateInkLimitingDeviceLink(icColorSpaceSignature ColorSpace, + double Limit); + + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateLabProfile(LPcmsCIExyY WhitePoint); +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateLab4Profile(LPcmsCIExyY WhitePoint); + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateXYZProfile(void); +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreate_sRGBProfile(void); + + + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateBCHSWabstractProfile(int nLUTPoints, + double Bright, + double Contrast, + double Hue, + double Saturation, + int TempSrc, + int TempDest); + +LCMSAPI cmsHPROFILE LCMSEXPORT cmsCreateNULLProfile(void); + + +// Colorimetric space conversions + +LCMSAPI void LCMSEXPORT cmsXYZ2xyY(LPcmsCIExyY Dest, const cmsCIEXYZ* Source); +LCMSAPI void LCMSEXPORT cmsxyY2XYZ(LPcmsCIEXYZ Dest, const cmsCIExyY* Source); +LCMSAPI void LCMSEXPORT cmsXYZ2Lab(LPcmsCIEXYZ WhitePoint, LPcmsCIELab Lab, const cmsCIEXYZ* xyz); +LCMSAPI void LCMSEXPORT cmsLab2XYZ(LPcmsCIEXYZ WhitePoint, LPcmsCIEXYZ xyz, const cmsCIELab* Lab); +LCMSAPI void LCMSEXPORT cmsLab2LCh(LPcmsCIELCh LCh, const cmsCIELab* Lab); +LCMSAPI void LCMSEXPORT cmsLCh2Lab(LPcmsCIELab Lab, const cmsCIELCh* LCh); + + +// CIELab handling + +LCMSAPI double LCMSEXPORT cmsDeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2); +LCMSAPI double LCMSEXPORT cmsCIE94DeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2); +LCMSAPI double LCMSEXPORT cmsBFDdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2); +LCMSAPI double LCMSEXPORT cmsCMCdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2); +LCMSAPI double LCMSEXPORT cmsCIE2000DeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2, double Kl, double Kc, double Kh); + +LCMSAPI void LCMSEXPORT cmsClampLab(LPcmsCIELab Lab, double amax, double amin, double bmax, double bmin); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsWhitePointFromTemp(int TempK, LPcmsCIExyY WhitePoint); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsAdaptToIlluminant(LPcmsCIEXYZ Result, + LPcmsCIEXYZ SourceWhitePt, + LPcmsCIEXYZ Illuminant, + LPcmsCIEXYZ Value); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsBuildRGB2XYZtransferMatrix(LPMAT3 r, + LPcmsCIExyY WhitePoint, + LPcmsCIExyYTRIPLE Primaries); + +// Viewing conditions + +#define AVG_SURROUND_4 0 +#define AVG_SURROUND 1 +#define DIM_SURROUND 2 +#define DARK_SURROUND 3 +#define CUTSHEET_SURROUND 4 + +#define D_CALCULATE (-1) +#define D_CALCULATE_DISCOUNT (-2) + +typedef struct { + + cmsCIEXYZ whitePoint; + double Yb; + double La; + int surround; + double D_value; + + } cmsViewingConditions; + +typedef cmsViewingConditions FAR* LPcmsViewingConditions; + +// CIECAM97s + +LCMSAPI LCMSHANDLE LCMSEXPORT cmsCIECAM97sInit(LPcmsViewingConditions pVC2); +LCMSAPI void LCMSEXPORT cmsCIECAM97sDone(LCMSHANDLE hModel); +LCMSAPI void LCMSEXPORT cmsCIECAM97sForward(LCMSHANDLE hModel, LPcmsCIEXYZ pIn, LPcmsJCh pOut); +LCMSAPI void LCMSEXPORT cmsCIECAM97sReverse(LCMSHANDLE hModel, LPcmsJCh pIn, LPcmsCIEXYZ pOut); + + +// CIECAM02 + +LCMSAPI LCMSHANDLE LCMSEXPORT cmsCIECAM02Init(LPcmsViewingConditions pVC); +LCMSAPI void LCMSEXPORT cmsCIECAM02Done(LCMSHANDLE hModel); +LCMSAPI void LCMSEXPORT cmsCIECAM02Forward(LCMSHANDLE hModel, LPcmsCIEXYZ pIn, LPcmsJCh pOut); +LCMSAPI void LCMSEXPORT cmsCIECAM02Reverse(LCMSHANDLE hModel, LPcmsJCh pIn, LPcmsCIEXYZ pOut); + + +// Gamma + +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsBuildGamma(int nEntries, double Gamma); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsBuildParametricGamma(int nEntries, int Type, double Params[]); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsAllocGamma(int nEntries); +LCMSAPI void LCMSEXPORT cmsFreeGamma(LPGAMMATABLE Gamma); +LCMSAPI void LCMSEXPORT cmsFreeGammaTriple(LPGAMMATABLE Gamma[3]); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsDupGamma(LPGAMMATABLE Src); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsReverseGamma(int nResultSamples, LPGAMMATABLE InGamma); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsJoinGamma(LPGAMMATABLE InGamma, LPGAMMATABLE OutGamma); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsJoinGammaEx(LPGAMMATABLE InGamma, LPGAMMATABLE OutGamma, int nPoints); +LCMSAPI LCMSBOOL LCMSEXPORT cmsSmoothGamma(LPGAMMATABLE Tab, double lambda); +LCMSAPI double LCMSEXPORT cmsEstimateGamma(LPGAMMATABLE t); +LCMSAPI double LCMSEXPORT cmsEstimateGammaEx(LPWORD Table, int nEntries, double Thereshold); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsReadICCGamma(cmsHPROFILE hProfile, icTagSignature sig); +LCMSAPI LPGAMMATABLE LCMSEXPORT cmsReadICCGammaReversed(cmsHPROFILE hProfile, icTagSignature sig); + +// Access to Profile data. + +LCMSAPI LCMSBOOL LCMSEXPORT cmsTakeMediaWhitePoint(LPcmsCIEXYZ Dest, cmsHPROFILE hProfile); +LCMSAPI LCMSBOOL LCMSEXPORT cmsTakeMediaBlackPoint(LPcmsCIEXYZ Dest, cmsHPROFILE hProfile); +LCMSAPI LCMSBOOL LCMSEXPORT cmsTakeIluminant(LPcmsCIEXYZ Dest, cmsHPROFILE hProfile); +LCMSAPI LCMSBOOL LCMSEXPORT cmsTakeColorants(LPcmsCIEXYZTRIPLE Dest, cmsHPROFILE hProfile); +LCMSAPI DWORD LCMSEXPORT cmsTakeHeaderFlags(cmsHPROFILE hProfile); +LCMSAPI DWORD LCMSEXPORT cmsTakeHeaderAttributes(cmsHPROFILE hProfile); + +LCMSAPI void LCMSEXPORT cmsSetLanguage(const char LanguageCode[4], const char CountryCode[4]); +LCMSAPI const char* LCMSEXPORT cmsTakeProductName(cmsHPROFILE hProfile); +LCMSAPI const char* LCMSEXPORT cmsTakeProductDesc(cmsHPROFILE hProfile); +LCMSAPI const char* LCMSEXPORT cmsTakeProductInfo(cmsHPROFILE hProfile); +LCMSAPI const char* LCMSEXPORT cmsTakeManufacturer(cmsHPROFILE hProfile); +LCMSAPI const char* LCMSEXPORT cmsTakeModel(cmsHPROFILE hProfile); +LCMSAPI const char* LCMSEXPORT cmsTakeCopyright(cmsHPROFILE hProfile); +LCMSAPI const BYTE* LCMSEXPORT cmsTakeProfileID(cmsHPROFILE hProfile); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsTakeCreationDateTime(struct tm *Dest, cmsHPROFILE hProfile); +LCMSAPI LCMSBOOL LCMSEXPORT cmsTakeCalibrationDateTime(struct tm *Dest, cmsHPROFILE hProfile); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIsTag(cmsHPROFILE hProfile, icTagSignature sig); +LCMSAPI int LCMSEXPORT cmsTakeRenderingIntent(cmsHPROFILE hProfile); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsTakeCharTargetData(cmsHPROFILE hProfile, char** Data, size_t* len); + +LCMSAPI int LCMSEXPORT cmsReadICCTextEx(cmsHPROFILE hProfile, icTagSignature sig, char *Text, size_t size); +LCMSAPI int LCMSEXPORT cmsReadICCText(cmsHPROFILE hProfile, icTagSignature sig, char *Text); + + +#define LCMS_DESC_MAX 512 + +typedef struct { + + icSignature deviceMfg; + icSignature deviceModel; + icUInt32Number attributes[2]; + icTechnologySignature technology; + + char Manufacturer[LCMS_DESC_MAX]; + char Model[LCMS_DESC_MAX]; + + } cmsPSEQDESC, FAR *LPcmsPSEQDESC; + +typedef struct { + + int n; + cmsPSEQDESC seq[1]; + + } cmsSEQ, FAR *LPcmsSEQ; + + +LCMSAPI LPcmsSEQ LCMSEXPORT cmsReadProfileSequenceDescription(cmsHPROFILE hProfile); +LCMSAPI void LCMSEXPORT cmsFreeProfileSequenceDescription(LPcmsSEQ pseq); + + +// Translate form/to our notation to ICC +LCMSAPI icColorSpaceSignature LCMSEXPORT _cmsICCcolorSpace(int OurNotation); +LCMSAPI int LCMSEXPORT _cmsLCMScolorSpace(icColorSpaceSignature ProfileSpace); +LCMSAPI int LCMSEXPORT _cmsChannelsOf(icColorSpaceSignature ColorSpace); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsIsMatrixShaper(cmsHPROFILE hProfile); + +// How profiles may be used +#define LCMS_USED_AS_INPUT 0 +#define LCMS_USED_AS_OUTPUT 1 +#define LCMS_USED_AS_PROOF 2 + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, int Intent, int UsedDirection); + +LCMSAPI icColorSpaceSignature LCMSEXPORT cmsGetPCS(cmsHPROFILE hProfile); +LCMSAPI icColorSpaceSignature LCMSEXPORT cmsGetColorSpace(cmsHPROFILE hProfile); +LCMSAPI icProfileClassSignature LCMSEXPORT cmsGetDeviceClass(cmsHPROFILE hProfile); +LCMSAPI DWORD LCMSEXPORT cmsGetProfileICCversion(cmsHPROFILE hProfile); +LCMSAPI void LCMSEXPORT cmsSetProfileICCversion(cmsHPROFILE hProfile, DWORD Version); +LCMSAPI icInt32Number LCMSEXPORT cmsGetTagCount(cmsHPROFILE hProfile); +LCMSAPI icTagSignature LCMSEXPORT cmsGetTagSignature(cmsHPROFILE hProfile, icInt32Number n); + + +LCMSAPI void LCMSEXPORT cmsSetDeviceClass(cmsHPROFILE hProfile, icProfileClassSignature sig); +LCMSAPI void LCMSEXPORT cmsSetColorSpace(cmsHPROFILE hProfile, icColorSpaceSignature sig); +LCMSAPI void LCMSEXPORT cmsSetPCS(cmsHPROFILE hProfile, icColorSpaceSignature pcs); +LCMSAPI void LCMSEXPORT cmsSetRenderingIntent(cmsHPROFILE hProfile, int RenderingIntent); +LCMSAPI void LCMSEXPORT cmsSetHeaderFlags(cmsHPROFILE hProfile, DWORD Flags); +LCMSAPI void LCMSEXPORT cmsSetHeaderAttributes(cmsHPROFILE hProfile, DWORD Flags); +LCMSAPI void LCMSEXPORT cmsSetProfileID(cmsHPROFILE hProfile, LPBYTE ProfileID); + +// Intents + +#define INTENT_PERCEPTUAL 0 +#define INTENT_RELATIVE_COLORIMETRIC 1 +#define INTENT_SATURATION 2 +#define INTENT_ABSOLUTE_COLORIMETRIC 3 + +// Flags + +#define cmsFLAGS_MATRIXINPUT 0x0001 +#define cmsFLAGS_MATRIXOUTPUT 0x0002 +#define cmsFLAGS_MATRIXONLY (cmsFLAGS_MATRIXINPUT|cmsFLAGS_MATRIXOUTPUT) + +#define cmsFLAGS_NOWHITEONWHITEFIXUP 0x0004 // Don't hot fix scum dot +#define cmsFLAGS_NOPRELINEARIZATION 0x0010 // Don't create prelinearization tables + // on precalculated transforms (internal use) + +#define cmsFLAGS_GUESSDEVICECLASS 0x0020 // Guess device class (for transform2devicelink) + +#define cmsFLAGS_NOTCACHE 0x0040 // Inhibit 1-pixel cache + +#define cmsFLAGS_NOTPRECALC 0x0100 +#define cmsFLAGS_NULLTRANSFORM 0x0200 // Don't transform anyway +#define cmsFLAGS_HIGHRESPRECALC 0x0400 // Use more memory to give better accurancy +#define cmsFLAGS_LOWRESPRECALC 0x0800 // Use less memory to minimize resouces + + +#define cmsFLAGS_WHITEBLACKCOMPENSATION 0x2000 +#define cmsFLAGS_BLACKPOINTCOMPENSATION cmsFLAGS_WHITEBLACKCOMPENSATION + +// Proofing flags + +#define cmsFLAGS_GAMUTCHECK 0x1000 // Out of Gamut alarm +#define cmsFLAGS_SOFTPROOFING 0x4000 // Do softproofing + +// Black preservation + +#define cmsFLAGS_PRESERVEBLACK 0x8000 + +// CRD special + +#define cmsFLAGS_NODEFAULTRESOURCEDEF 0x01000000 + +// Gridpoints + +#define cmsFLAGS_GRIDPOINTS(n) (((n) & 0xFF) << 16) + + +// Transforms + +LCMSAPI cmsHTRANSFORM LCMSEXPORT cmsCreateTransform(cmsHPROFILE Input, + DWORD InputFormat, + cmsHPROFILE Output, + DWORD OutputFormat, + int Intent, + DWORD dwFlags); + +LCMSAPI cmsHTRANSFORM LCMSEXPORT cmsCreateProofingTransform(cmsHPROFILE Input, + DWORD InputFormat, + cmsHPROFILE Output, + DWORD OutputFormat, + cmsHPROFILE Proofing, + int Intent, + int ProofingIntent, + DWORD dwFlags); + +LCMSAPI cmsHTRANSFORM LCMSEXPORT cmsCreateMultiprofileTransform(cmsHPROFILE hProfiles[], + int nProfiles, + DWORD InputFormat, + DWORD OutputFormat, + int Intent, + DWORD dwFlags); + +LCMSAPI void LCMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform); + +LCMSAPI void LCMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, + LPVOID InputBuffer, + LPVOID OutputBuffer, + unsigned int Size); + +LCMSAPI void LCMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform, DWORD InputFormat, DWORD dwOutputFormat); + +LCMSAPI void LCMSEXPORT cmsSetAlarmCodes(int r, int g, int b); +LCMSAPI void LCMSEXPORT cmsGetAlarmCodes(int *r, int *g, int *b); + + +// Adaptation state for absolute colorimetric intent + +LCMSAPI double LCMSEXPORT cmsSetAdaptationState(double d); + + +// Primary preservation strategy + +#define LCMS_PRESERVE_PURE_K 0 +#define LCMS_PRESERVE_K_PLANE 1 + +LCMSAPI int LCMSEXPORT cmsSetCMYKPreservationStrategy(int n); + +// Named color support +typedef struct { + char Name[MAX_PATH]; + WORD PCS[3]; + WORD DeviceColorant[MAXCHANNELS]; + + + } cmsNAMEDCOLOR, FAR* LPcmsNAMEDCOLOR; + +typedef struct { + int nColors; + int Allocated; + int ColorantCount; + char Prefix[33]; + char Suffix[33]; + + cmsNAMEDCOLOR List[1]; + + } cmsNAMEDCOLORLIST, FAR* LPcmsNAMEDCOLORLIST; + +// Named color support + +LCMSAPI int LCMSEXPORT cmsNamedColorCount(cmsHTRANSFORM xform); +LCMSAPI LCMSBOOL LCMSEXPORT cmsNamedColorInfo(cmsHTRANSFORM xform, int nColor, char* Name, char* Prefix, char* Suffix); +LCMSAPI int LCMSEXPORT cmsNamedColorIndex(cmsHTRANSFORM xform, const char* Name); + +// Colorant tables + +LCMSAPI LPcmsNAMEDCOLORLIST LCMSEXPORT cmsReadColorantTable(cmsHPROFILE hProfile, icTagSignature sig); + +// Profile creation + +LCMSAPI LCMSBOOL LCMSEXPORT cmsAddTag(cmsHPROFILE hProfile, icTagSignature sig, const void* data); + +// Converts a transform to a devicelink profile +LCMSAPI cmsHPROFILE LCMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, DWORD dwFlags); + +// Set the 'save as 8-bit' flag +LCMSAPI void LCMSEXPORT _cmsSetLUTdepth(cmsHPROFILE hProfile, int depth); + + +// Save profile +LCMSAPI LCMSBOOL LCMSEXPORT _cmsSaveProfile(cmsHPROFILE hProfile, const char* FileName); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, + size_t* BytesNeeded); + + + +// PostScript ColorRenderingDictionary and ColorSpaceArray + +LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCSA(cmsHPROFILE hProfile, int Intent, LPVOID Buffer, DWORD dwBufferLen); +LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCRD(cmsHPROFILE hProfile, int Intent, LPVOID Buffer, DWORD dwBufferLen); +LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCRDEx(cmsHPROFILE hProfile, int Intent, DWORD dwFlags, LPVOID Buffer, DWORD dwBufferLen); + + +// Error handling + +#define LCMS_ERROR_ABORT 0 +#define LCMS_ERROR_SHOW 1 +#define LCMS_ERROR_IGNORE 2 + +LCMSAPI int LCMSEXPORT cmsErrorAction(int nAction); + +#define LCMS_ERRC_WARNING 0x1000 +#define LCMS_ERRC_RECOVERABLE 0x2000 +#define LCMS_ERRC_ABORTED 0x3000 + +typedef int (* cmsErrorHandlerFunction)(int ErrorCode, const char *ErrorText); + +LCMSAPI void LCMSEXPORT cmsSetErrorHandler(cmsErrorHandlerFunction Fn); + + +// LUT manipulation + + +typedef struct _lcms_LUT_struc LUT, FAR* LPLUT; // opaque pointer + +LCMSAPI LPLUT LCMSEXPORT cmsAllocLUT(void); +LCMSAPI LPLUT LCMSEXPORT cmsAllocLinearTable(LPLUT NewLUT, LPGAMMATABLE Tables[], int nTable); +LCMSAPI LPLUT LCMSEXPORT cmsAlloc3DGrid(LPLUT Lut, int clutPoints, int inputChan, int outputChan); +LCMSAPI LPLUT LCMSEXPORT cmsSetMatrixLUT(LPLUT Lut, LPMAT3 M); +LCMSAPI LPLUT LCMSEXPORT cmsSetMatrixLUT4(LPLUT Lut, LPMAT3 M, LPVEC3 off, DWORD dwFlags); +LCMSAPI void LCMSEXPORT cmsFreeLUT(LPLUT Lut); +LCMSAPI void LCMSEXPORT cmsEvalLUT(LPLUT Lut, WORD In[], WORD Out[]); +LCMSAPI double LCMSEXPORT cmsEvalLUTreverse(LPLUT Lut, WORD Target[], WORD Result[], LPWORD Hint); +LCMSAPI LPLUT LCMSEXPORT cmsReadICCLut(cmsHPROFILE hProfile, icTagSignature sig); +LCMSAPI LPLUT LCMSEXPORT cmsDupLUT(LPLUT Orig); + + +// LUT Sampling + +typedef int (* _cmsSAMPLER)(register WORD In[], + register WORD Out[], + register LPVOID Cargo); + +#define SAMPLER_HASTL1 LUT_HASTL1 +#define SAMPLER_HASTL2 LUT_HASTL2 +#define SAMPLER_INSPECT 0x01000000 + +LCMSAPI int LCMSEXPORT cmsSample3DGrid(LPLUT Lut, _cmsSAMPLER Sampler, LPVOID Cargo, DWORD dwFlags); + +// Formatters + +typedef unsigned char* (* cmsFORMATTER)(register void* CMMcargo, + register WORD ToUnroll[], + register LPBYTE Buffer); + +LCMSAPI void LCMSEXPORT cmsSetUserFormatters(cmsHTRANSFORM hTransform, DWORD dwInput, cmsFORMATTER Input, + DWORD dwOutput, cmsFORMATTER Output); + +LCMSAPI void LCMSEXPORT cmsGetUserFormatters(cmsHTRANSFORM hTransform, + LPDWORD InputFormat, cmsFORMATTER* Input, + LPDWORD OutputFormat, cmsFORMATTER* Output); + + +// IT8.7 / CGATS.17-200x handling + +LCMSAPI LCMSHANDLE LCMSEXPORT cmsIT8Alloc(void); +LCMSAPI void LCMSEXPORT cmsIT8Free(LCMSHANDLE IT8); + +// Tables + +LCMSAPI int LCMSEXPORT cmsIT8TableCount(LCMSHANDLE IT8); +LCMSAPI int LCMSEXPORT cmsIT8SetTable(LCMSHANDLE IT8, int nTable); + +// Persistence +LCMSAPI LCMSHANDLE LCMSEXPORT cmsIT8LoadFromFile(const char* cFileName); +LCMSAPI LCMSHANDLE LCMSEXPORT cmsIT8LoadFromMem(void *Ptr, size_t len); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SaveToFile(LCMSHANDLE IT8, const char* cFileName); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SaveToMem(LCMSHANDLE hIT8, void *MemPtr, size_t* BytesNeeded); + +// Properties +LCMSAPI const char* LCMSEXPORT cmsIT8GetSheetType(LCMSHANDLE hIT8); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetSheetType(LCMSHANDLE hIT8, const char* Type); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetComment(LCMSHANDLE hIT8, const char* cComment); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyStr(LCMSHANDLE hIT8, const char* cProp, const char *Str); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyDbl(LCMSHANDLE hIT8, const char* cProp, double Val); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyHex(LCMSHANDLE hIT8, const char* cProp, int Val); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyMulti(LCMSHANDLE hIT8, const char* cProp, const char* cSubProp, const char *Val); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetPropertyUncooked(LCMSHANDLE hIT8, const char* Key, const char* Buffer); + + +LCMSAPI const char* LCMSEXPORT cmsIT8GetProperty(LCMSHANDLE hIT8, const char* cProp); +LCMSAPI double LCMSEXPORT cmsIT8GetPropertyDbl(LCMSHANDLE hIT8, const char* cProp); +LCMSAPI const char* LCMSEXPORT cmsIT8GetPropertyMulti(LCMSHANDLE hIT8, const char* cProp, const char *cSubProp); +LCMSAPI int LCMSEXPORT cmsIT8EnumProperties(LCMSHANDLE hIT8, const char ***PropertyNames); +LCMSAPI int LCMSEXPORT cmsIT8EnumPropertyMulti(LCMSHANDLE hIT8, const char* cProp, const char*** SubpropertyNames); + +// Datasets + +LCMSAPI const char* LCMSEXPORT cmsIT8GetDataRowCol(LCMSHANDLE IT8, int row, int col); +LCMSAPI double LCMSEXPORT cmsIT8GetDataRowColDbl(LCMSHANDLE IT8, int row, int col); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataRowCol(LCMSHANDLE hIT8, int row, int col, + const char* Val); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataRowColDbl(LCMSHANDLE hIT8, int row, int col, + double Val); + +LCMSAPI const char* LCMSEXPORT cmsIT8GetData(LCMSHANDLE IT8, const char* cPatch, const char* cSample); + + +LCMSAPI double LCMSEXPORT cmsIT8GetDataDbl(LCMSHANDLE IT8, const char* cPatch, const char* cSample); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetData(LCMSHANDLE IT8, const char* cPatch, + const char* cSample, + const char *Val); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataDbl(LCMSHANDLE hIT8, const char* cPatch, + const char* cSample, + double Val); + +LCMSAPI int LCMSEXPORT cmsIT8GetDataFormat(LCMSHANDLE hIT8, const char* cSample); +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetDataFormat(LCMSHANDLE IT8, int n, const char *Sample); +LCMSAPI int LCMSEXPORT cmsIT8EnumDataFormat(LCMSHANDLE IT8, char ***SampleNames); + + +LCMSAPI const char* LCMSEXPORT cmsIT8GetPatchName(LCMSHANDLE hIT8, int nPatch, char* buffer); +LCMSAPI int LCMSEXPORT cmsIT8GetPatchByName(LCMSHANDLE hIT8, const char *cSample); + +// The LABEL extension + +LCMSAPI int LCMSEXPORT cmsIT8SetTableByLabel(LCMSHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType); + +LCMSAPI LCMSBOOL LCMSEXPORT cmsIT8SetIndexColumn(LCMSHANDLE hIT8, const char* cSample); + +// Formatter for double +LCMSAPI void LCMSEXPORT cmsIT8DefineDblFormat(LCMSHANDLE IT8, const char* Formatter); + + +// *************************************************************************** +// End of Little cms API From here functions are private +// You can use them only if using static libraries, and at your own risk of +// be stripped or changed at futures releases. + +#ifndef LCMS_APIONLY + + +// Compatibility with anterior versions-- not needed anymore +// -- Morge + +LCMSAPI void LCMSEXPORT cmsLabEncoded2Float(LPcmsCIELab Lab, const WORD wLab[3]); +LCMSAPI void LCMSEXPORT cmsLabEncoded2Float4(LPcmsCIELab Lab, const WORD wLab[3]); +LCMSAPI void LCMSEXPORT cmsFloat2LabEncoded(WORD wLab[3], const cmsCIELab* Lab); +LCMSAPI void LCMSEXPORT cmsFloat2LabEncoded4(WORD wLab[3], const cmsCIELab* Lab); +LCMSAPI void LCMSEXPORT cmsXYZEncoded2Float(LPcmsCIEXYZ fxyz, const WORD XYZ[3]); +LCMSAPI void LCMSEXPORT cmsFloat2XYZEncoded(WORD XYZ[3], const cmsCIEXYZ* fXYZ); + + +// Profiling Extensions --- Would be removed from API in future revisions + +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddTextTag(cmsHPROFILE hProfile, icTagSignature sig, const char* Text); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddXYZTag(cmsHPROFILE hProfile, icTagSignature sig, const cmsCIEXYZ* XYZ); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddLUTTag(cmsHPROFILE hProfile, icTagSignature sig, const void* lut); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddGammaTag(cmsHPROFILE hProfile, icTagSignature sig, LPGAMMATABLE TransferFunction); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddChromaticityTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsCIExyYTRIPLE Chrm); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddSequenceDescriptionTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsSEQ PSeq); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddNamedColorTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsNAMEDCOLORLIST nc); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddDateTimeTag(cmsHPROFILE hProfile, icTagSignature sig, struct tm *DateTime); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddColorantTableTag(cmsHPROFILE hProfile, icTagSignature sig, LPcmsNAMEDCOLORLIST nc); +LCMSAPI LCMSBOOL LCMSEXPORT _cmsAddChromaticAdaptationTag(cmsHPROFILE hProfile, icTagSignature sig, const cmsCIEXYZ* mat); + +// --------------------------------------------------------------------------------------------------- Inline functions + +// Fast floor conversion logic. Thanks to Sree Kotay and Stuart Nixon +// note than this only works in the range ..-32767...+32767 because +// mantissa is interpreted as 15.16 fixed point. +// The union is to avoid pointer aliasing overoptimization. + +LCMS_INLINE int _cmsQuickFloor(double val) +{ +#ifdef USE_DEFAULT_FLOOR_CONVERSION + return (int) floor(val); +#else + const double _lcms_double2fixmagic = 68719476736.0 * 1.5; // 2^36 * 1.5, (52-16=36) uses limited precision to floor + union { + double val; + int halves[2]; + } temp; + + temp.val = val + _lcms_double2fixmagic; + + +#ifdef USE_BIG_ENDIAN + return temp.halves[1] >> 16; +#else + return temp.halves[0] >> 16; +#endif +#endif +} + + + +// Clamp with saturation + +LCMS_INLINE WORD _cmsClampWord(int in) +{ + if (in < 0) return 0; + if (in > 0xFFFF) return 0xFFFFU; // Including marker + return (WORD) in; +} + +#ifndef LCMS_USER_ALLOC + +// Low-level alloc hook + +LCMS_INLINE void* _cmsMalloc(size_t size) +{ + if (size > ((size_t) 1024*1024*500)) return NULL; // Never allow over 500Mb + if (size < 0) return NULL; // Prevent signed size_t exploits + + return (void*) malloc(size); +} + +LCMS_INLINE void* _cmsCalloc(size_t nmemb, size_t size) +{ + size_t alloc = nmemb * size; + + if (size == 0) { + return _cmsMalloc(0); + } + if (alloc / size != nmemb) { + return NULL; + } + return _cmsMalloc(alloc); +} + +LCMS_INLINE void _cmsFree(void *Ptr) +{ + if (Ptr) free(Ptr); +} + +#endif + +// ------------------------------------------------------------------------------------------- end of inline functions + +// Signal error from inside lcms code + +void cdecl cmsSignalError(int ErrorCode, const char *ErrorText, ...); + +// Alignment handling (needed in ReadLUT16 and ReadLUT8) + +typedef struct { + icS15Fixed16Number a; + icUInt16Number b; + + } _cmsTestAlign16; + +#define SIZEOF_UINT16_ALIGNED (sizeof(_cmsTestAlign16) - sizeof(icS15Fixed16Number)) + +typedef struct { + icS15Fixed16Number a; + icUInt8Number b; + + } _cmsTestAlign8; + +#define SIZEOF_UINT8_ALIGNED (sizeof(_cmsTestAlign8) - sizeof(icS15Fixed16Number)) + + +// Fixed point + + +typedef icInt32Number Fixed32; // Fixed 15.16 whith sign + +#define INT_TO_FIXED(x) ((x)<<16) +#define DOUBLE_TO_FIXED(x) ((Fixed32) ((x)*65536.0+0.5)) +#define FIXED_TO_INT(x) ((x)>>16) +#define FIXED_REST_TO_INT(x) ((x)& 0xFFFFU) +#define FIXED_TO_DOUBLE(x) (((double)x)/65536.0) +#define ROUND_FIXED_TO_INT(x) (((x)+0x8000)>>16) + + +Fixed32 cdecl FixedMul(Fixed32 a, Fixed32 b); +Fixed32 cdecl FixedSquare(Fixed32 a); + + +#ifdef USE_INLINE + +LCMS_INLINE Fixed32 ToFixedDomain(int a) { return a + ((a + 0x7fff) / 0xffff); } +LCMS_INLINE int FromFixedDomain(Fixed32 a) { return a - ((a + 0x7fff) >> 16); } + +#else + +Fixed32 cdecl ToFixedDomain(int a); // (a * 65536.0 / 65535.0) +int cdecl FromFixedDomain(Fixed32 a); // (a * 65535.0 + .5) + +#endif + +Fixed32 cdecl FixedLERP(Fixed32 a, Fixed32 l, Fixed32 h); +WORD cdecl FixedScale(WORD a, Fixed32 s); + +// Vector & Matrix operations. I'm using the notation frequently found in +// literature. Mostly 'Graphic Gems' samples. Not to be same routines. + +// Vector members + +#define VX 0 +#define VY 1 +#define VZ 2 + +typedef struct { // Fixed 15.16 bits vector + Fixed32 n[3]; + } WVEC3, FAR* LPWVEC3; + +typedef struct { // Matrix (Fixed 15.16) + WVEC3 v[3]; + } WMAT3, FAR* LPWMAT3; + + + +void cdecl VEC3init(LPVEC3 r, double x, double y, double z); // double version +void cdecl VEC3initF(LPWVEC3 r, double x, double y, double z); // Fix32 version +void cdecl VEC3toFix(LPWVEC3 r, LPVEC3 v); +void cdecl VEC3fromFix(LPVEC3 r, LPWVEC3 v); +void cdecl VEC3scaleFix(LPWORD r, LPWVEC3 Scale); +void cdecl VEC3swap(LPVEC3 a, LPVEC3 b); +void cdecl VEC3divK(LPVEC3 r, LPVEC3 v, double d); +void cdecl VEC3perK(LPVEC3 r, LPVEC3 v, double d); +void cdecl VEC3minus(LPVEC3 r, LPVEC3 a, LPVEC3 b); +void cdecl VEC3perComp(LPVEC3 r, LPVEC3 a, LPVEC3 b); +LCMSBOOL cdecl VEC3equal(LPWVEC3 a, LPWVEC3 b, double Tolerance); +LCMSBOOL cdecl VEC3equalF(LPVEC3 a, LPVEC3 b, double Tolerance); +void cdecl VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d); +void cdecl VEC3cross(LPVEC3 r, LPVEC3 u, LPVEC3 v); +void cdecl VEC3saturate(LPVEC3 v); +double cdecl VEC3distance(LPVEC3 a, LPVEC3 b); +double cdecl VEC3length(LPVEC3 a); + +void cdecl MAT3identity(LPMAT3 a); +void cdecl MAT3per(LPMAT3 r, LPMAT3 a, LPMAT3 b); +void cdecl MAT3perK(LPMAT3 r, LPMAT3 v, double d); +int cdecl MAT3inverse(LPMAT3 a, LPMAT3 b); +LCMSBOOL cdecl MAT3solve(LPVEC3 x, LPMAT3 a, LPVEC3 b); +double cdecl MAT3det(LPMAT3 m); +void cdecl MAT3eval(LPVEC3 r, LPMAT3 a, LPVEC3 v); +void cdecl MAT3toFix(LPWMAT3 r, LPMAT3 v); +void cdecl MAT3fromFix(LPMAT3 r, LPWMAT3 v); +void cdecl MAT3evalW(LPWVEC3 r, LPWMAT3 a, LPWVEC3 v); +LCMSBOOL cdecl MAT3isIdentity(LPWMAT3 a, double Tolerance); +void cdecl MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d); + +// Is a table linear? + +int cdecl cmsIsLinear(WORD Table[], int nEntries); + +// I hold this structures describing domain +// details mainly for optimization purposes. + +struct _lcms_l16params_struc; + +typedef void (* _cms3DLERP)(WORD Input[], + WORD Output[], + WORD LutTable[], + struct _lcms_l16params_struc* p); + + + +typedef struct _lcms_l8opt_struc { // Used on 8 bit interpolations + + unsigned int X0[256], Y0[256], Z0[256]; + WORD rx[256], ry[256], rz[256]; + + } L8PARAMS, FAR* LPL8PARAMS; + +typedef struct _lcms_l16params_struc { // Used on 16 bits interpolations + + int nSamples; // Valid on all kinds of tables + int nInputs; // != 1 only in 3D interpolation + int nOutputs; // != 1 only in 3D interpolation + + WORD Domain; + + int opta1, opta2; + int opta3, opta4; // Optimization for 3D LUT + int opta5, opta6; + int opta7, opta8; + + _cms3DLERP Interp3D; // The interpolation routine + + LPL8PARAMS p8; // Points to some tables for 8-bit speedup + + } L16PARAMS, *LPL16PARAMS; + + +void cdecl cmsCalcL16Params(int nSamples, LPL16PARAMS p); +void cdecl cmsCalcCLUT16Params(int nSamples, int InputChan, int OutputChan, LPL16PARAMS p); +void cdecl cmsCalcCLUT16ParamsEx(int nSamples, int InputChan, int OutputChan, + LCMSBOOL lUseTetrahedral, LPL16PARAMS p); + +WORD cdecl cmsLinearInterpLUT16(WORD Value, WORD LutTable[], LPL16PARAMS p); +Fixed32 cdecl cmsLinearInterpFixed(WORD Value1, WORD LutTable[], LPL16PARAMS p); +WORD cdecl cmsReverseLinearInterpLUT16(WORD Value, WORD LutTable[], LPL16PARAMS p); + +void cdecl cmsTrilinearInterp16(WORD Input[], + WORD Output[], + WORD LutTable[], + LPL16PARAMS p); + +void cdecl cmsTetrahedralInterp16(WORD Input[], + WORD Output[], + WORD LutTable[], LPL16PARAMS p); + +void cdecl cmsTetrahedralInterp8(WORD Input[], + WORD Output[], + WORD LutTable[], LPL16PARAMS p); + +// LUT handling + +#define LUT_HASMATRIX 0x0001 // Do-op Flags +#define LUT_HASTL1 0x0002 +#define LUT_HASTL2 0x0008 +#define LUT_HAS3DGRID 0x0010 + +// New in rev 4.0 of ICC spec + +#define LUT_HASMATRIX3 0x0020 // Matrix + offset for LutAToB +#define LUT_HASMATRIX4 0x0040 // Matrix + offset for LutBToA + +#define LUT_HASTL3 0x0100 // '3' curves for LutAToB +#define LUT_HASTL4 0x0200 // '4' curves for LutBToA + +// V4 emulation + +#define LUT_V4_OUTPUT_EMULATE_V2 0x10000 // Is a V4 output LUT, emulating V2 +#define LUT_V4_INPUT_EMULATE_V2 0x20000 // Is a V4 input LUT, emulating V2 +#define LUT_V2_OUTPUT_EMULATE_V4 0x40000 // Is a V2 output LUT, emulating V4 +#define LUT_V2_INPUT_EMULATE_V4 0x80000 // Is a V2 input LUT, emulating V4 + + +struct _lcms_LUT_struc { + + DWORD wFlags; + WMAT3 Matrix; // 15fixed16 matrix + + unsigned int InputChan; + unsigned int OutputChan; + unsigned int InputEntries; + unsigned int OutputEntries; + unsigned int cLutPoints; + + + LPWORD L1[MAXCHANNELS]; // First linearization + LPWORD L2[MAXCHANNELS]; // Last linearization + + LPWORD T; // 3D CLUT + unsigned int Tsize; // CLUT size in bytes + + // Parameters & Optimizations + + L16PARAMS In16params; + L16PARAMS Out16params; + L16PARAMS CLut16params; + + int Intent; // Accomplished intent + + // New for Rev 4.0 of spec (reserved) + + WMAT3 Mat3; + WVEC3 Ofs3; + LPWORD L3[MAXCHANNELS]; + L16PARAMS L3params; + unsigned int L3Entries; + + WMAT3 Mat4; + WVEC3 Ofs4; + LPWORD L4[MAXCHANNELS]; + L16PARAMS L4params; + unsigned int L4Entries; + + // Gray axes fixup. Only on v2 8-bit Lab LUT + + LCMSBOOL FixGrayAxes; + + + // Parameters used for curve creation + + LCMSGAMMAPARAMS LCurvesSeed[4][MAXCHANNELS]; + + + }; // LUT, FAR* LPLUT; + + +LCMSBOOL cdecl _cmsSmoothEndpoints(LPWORD Table, int nEntries); + + +// CRC of gamma tables + +unsigned int _cmsCrc32OfGammaTable(LPGAMMATABLE Table); + +// Sampled curves + +LPSAMPLEDCURVE cdecl cmsAllocSampledCurve(int nItems); +void cdecl cmsFreeSampledCurve(LPSAMPLEDCURVE p); +LPSAMPLEDCURVE cdecl cmsDupSampledCurve(LPSAMPLEDCURVE p); + +LPSAMPLEDCURVE cdecl cmsConvertGammaToSampledCurve(LPGAMMATABLE Gamma, int nPoints); +LPGAMMATABLE cdecl cmsConvertSampledCurveToGamma(LPSAMPLEDCURVE Sampled, double Max); + +void cdecl cmsEndpointsOfSampledCurve(LPSAMPLEDCURVE p, double* Min, double* Max); +void cdecl cmsClampSampledCurve(LPSAMPLEDCURVE p, double Min, double Max); +LCMSBOOL cdecl cmsSmoothSampledCurve(LPSAMPLEDCURVE Tab, double SmoothingLambda); +void cdecl cmsRescaleSampledCurve(LPSAMPLEDCURVE p, double Min, double Max, int nPoints); + +LPSAMPLEDCURVE cdecl cmsJoinSampledCurves(LPSAMPLEDCURVE X, LPSAMPLEDCURVE Y, int nResultingPoints); + +// Shaper/Matrix handling + +#define MATSHAPER_HASMATRIX 0x0001 // Do-ops flags +#define MATSHAPER_HASSHAPER 0x0002 +#define MATSHAPER_INPUT 0x0004 // Behaviour +#define MATSHAPER_OUTPUT 0x0008 +#define MATSHAPER_HASINPSHAPER 0x0010 +#define MATSHAPER_ALLSMELTED (MATSHAPER_INPUT|MATSHAPER_OUTPUT) + + +typedef struct { + DWORD dwFlags; + + WMAT3 Matrix; + + L16PARAMS p16; // Primary curve + LPWORD L[3]; + + L16PARAMS p2_16; // Secondary curve (used as input in smelted ones) + LPWORD L2[3]; + + } MATSHAPER, FAR* LPMATSHAPER; + +LPMATSHAPER cdecl cmsAllocMatShaper(LPMAT3 matrix, LPGAMMATABLE Shaper[], DWORD Behaviour); +LPMATSHAPER cdecl cmsAllocMatShaper2(LPMAT3 matrix, LPGAMMATABLE In[], LPGAMMATABLE Out[], DWORD Behaviour); + +void cdecl cmsFreeMatShaper(LPMATSHAPER MatShaper); +void cdecl cmsEvalMatShaper(LPMATSHAPER MatShaper, WORD In[], WORD Out[]); + +LCMSBOOL cdecl cmsReadICCMatrixRGB2XYZ(LPMAT3 r, cmsHPROFILE hProfile); + +LPMATSHAPER cdecl cmsBuildInputMatrixShaper(cmsHPROFILE InputProfile); +LPMATSHAPER cdecl cmsBuildOutputMatrixShaper(cmsHPROFILE OutputProfile); + + + +// White Point & Primary chromas handling +LCMSBOOL cdecl cmsAdaptationMatrix(LPMAT3 r, LPMAT3 ConeMatrix, LPcmsCIEXYZ FromIll, LPcmsCIEXYZ ToIll); +LCMSBOOL cdecl cmsAdaptMatrixToD50(LPMAT3 r, LPcmsCIExyY SourceWhitePt); +LCMSBOOL cdecl cmsAdaptMatrixFromD50(LPMAT3 r, LPcmsCIExyY DestWhitePt); + +LCMSBOOL cdecl cmsReadChromaticAdaptationMatrix(LPMAT3 r, cmsHPROFILE hProfile); + +// Inter-PCS conversion routines. They assume D50 as white point. +void cdecl cmsXYZ2LabEncoded(WORD XYZ[3], WORD Lab[3]); +void cdecl cmsLab2XYZEncoded(WORD Lab[3], WORD XYZ[3]); + +// Retrieve text representation of WP +void cdecl _cmsIdentifyWhitePoint(char *Buffer, LPcmsCIEXYZ WhitePt); + +// Quantize to WORD in a (MaxSamples - 1) domain +WORD cdecl _cmsQuantizeVal(double i, int MaxSamples); + +LPcmsNAMEDCOLORLIST cdecl cmsAllocNamedColorList(int n); +int cdecl cmsReadICCnamedColorList(cmsHTRANSFORM xform, cmsHPROFILE hProfile, icTagSignature sig); +void cdecl cmsFreeNamedColorList(LPcmsNAMEDCOLORLIST List); +LCMSBOOL cdecl cmsAppendNamedColor(cmsHTRANSFORM xform, const char* Name, WORD PCS[3], WORD Colorant[MAXCHANNELS]); + + +// I/O + +#define MAX_TABLE_TAG 100 + +// This is the internal struct holding profile details. + +typedef struct _lcms_iccprofile_struct { + + void* stream; // Associated stream. If NULL, + // tags are supposed to be in + // memory rather than in a file. + + // Only most important items found in ICC profile + + icProfileClassSignature DeviceClass; + icColorSpaceSignature ColorSpace; + icColorSpaceSignature PCS; + icRenderingIntent RenderingIntent; + icUInt32Number flags; + icUInt32Number attributes; + cmsCIEXYZ Illuminant; + + // Additions for V4 profiles + + icUInt32Number Version; + MAT3 ChromaticAdaptation; + cmsCIEXYZ MediaWhitePoint; + cmsCIEXYZ MediaBlackPoint; + BYTE ProfileID[16]; + + + // Dictionary + + icInt32Number TagCount; + icTagSignature TagNames[MAX_TABLE_TAG]; + size_t TagSizes[MAX_TABLE_TAG]; + size_t TagOffsets[MAX_TABLE_TAG]; + LPVOID TagPtrs[MAX_TABLE_TAG]; + + char PhysicalFile[MAX_PATH]; + + LCMSBOOL IsWrite; + LCMSBOOL SaveAs8Bits; + + struct tm Created; + + // I/O handlers + + size_t (* Read)(void *buffer, size_t size, size_t count, struct _lcms_iccprofile_struct* Icc); + + LCMSBOOL (* Seek)(struct _lcms_iccprofile_struct* Icc, size_t offset); + LCMSBOOL (* Close)(struct _lcms_iccprofile_struct* Icc); + size_t (* Tell)(struct _lcms_iccprofile_struct* Icc); + + // Writting + + LCMSBOOL (* Write)(struct _lcms_iccprofile_struct* Icc, size_t size, LPVOID Ptr); + + size_t UsedSpace; + + + } LCMSICCPROFILE, FAR* LPLCMSICCPROFILE; + + +// Create an empty template for virtual profiles +cmsHPROFILE cdecl _cmsCreateProfilePlaceholder(void); + +// Search into tag dictionary +icInt32Number cdecl _cmsSearchTag(LPLCMSICCPROFILE Profile, icTagSignature sig, LCMSBOOL lSignalError); + +// Search for a particular tag, replace if found or add new one else +LPVOID _cmsInitTag(LPLCMSICCPROFILE Icc, icTagSignature sig, size_t size, const void* Init); + + +LPLCMSICCPROFILE cdecl _cmsCreateProfileFromFilePlaceholder(const char* FileName); +LPLCMSICCPROFILE cdecl _cmsCreateProfileFromMemPlaceholder(LPVOID MemPtr, DWORD dwSize); + +void _cmsSetSaveToDisk(LPLCMSICCPROFILE Icc, const char* FileName); +void _cmsSetSaveToMemory(LPLCMSICCPROFILE Icc, LPVOID MemPtr, size_t dwSize); + + + +// These macros unpack format specifiers into integers + +#define T_DITHER(s) (((s)>>22)&1) +#define T_COLORSPACE(s) (((s)>>16)&31) +#define T_SWAPFIRST(s) (((s)>>14)&1) +#define T_FLAVOR(s) (((s)>>13)&1) +#define T_PLANAR(p) (((p)>>12)&1) +#define T_ENDIAN16(e) (((e)>>11)&1) +#define T_DOSWAP(e) (((e)>>10)&1) +#define T_EXTRA(e) (((e)>>7)&7) +#define T_CHANNELS(c) (((c)>>3)&15) +#define T_BYTES(b) ((b)&7) + + + +// Internal XFORM struct +struct _cmstransform_struct; + +// Full xform +typedef void (* _cmsCOLORCALLBACKFN)(struct _cmstransform_struct *Transform, + LPVOID InputBuffer, + LPVOID OutputBuffer, unsigned int Size); + +// intermediate pass, from WORD[] to WORD[] + +typedef void (* _cmsADJFN)(WORD In[], WORD Out[], LPWMAT3 m, LPWVEC3 b); + +typedef void (* _cmsTRANSFN)(struct _cmstransform_struct *Transform, + WORD In[], WORD Out[]); + +typedef void (* _cmsCNVRT)(WORD In[], WORD Out[]); + +typedef LPBYTE (* _cmsFIXFN)(register struct _cmstransform_struct *info, + register WORD ToUnroll[], + register LPBYTE Buffer); + + + +// Transformation +typedef struct _cmstransform_struct { + + // Keep formats for further reference + DWORD InputFormat, OutputFormat; + + DWORD StrideIn, StrideOut; // Planar support + + int Intent, ProofIntent; + int DoGamutCheck; + + + cmsHPROFILE InputProfile; + cmsHPROFILE OutputProfile; + cmsHPROFILE PreviewProfile; + + icColorSpaceSignature EntryColorSpace; + icColorSpaceSignature ExitColorSpace; + + DWORD dwOriginalFlags; // Flags as specified by user + + WMAT3 m1, m2; // Matrix holding inter PCS operation + WVEC3 of1, of2; // Offset terms + + _cmsCOLORCALLBACKFN xform; + + // Steps in xFORM + + _cmsFIXFN FromInput; + _cmsTRANSFN FromDevice; + _cmsADJFN Stage1; + _cmsADJFN Stage2; + _cmsTRANSFN ToDevice; + _cmsFIXFN ToOutput; + + // LUTs + + LPLUT Device2PCS; + LPLUT PCS2Device; + LPLUT Gamut; // Gamut check + LPLUT Preview; // Preview (Proof) + + LPLUT DeviceLink; // Precalculated grid - device link profile + LPLUT GamutCheck; // Precalculated device -> gamut check + + // Matrix/Shapers + + LPMATSHAPER InMatShaper; + LPMATSHAPER OutMatShaper; + LPMATSHAPER SmeltMatShaper; + + // Phase of Lab/XYZ, Abs/Rel + + int Phase1, Phase2, Phase3; + + // Named color table + + LPcmsNAMEDCOLORLIST NamedColorList; + + // Flag for transform involving v4 profiles + + LCMSBOOL lInputV4Lab, lOutputV4Lab; + + + // 1-pixel cache + + WORD CacheIn[MAXCHANNELS]; + WORD CacheOut[MAXCHANNELS]; + + double AdaptationState; // Figure for v4 incomplete state of adaptation + + LCMS_RWLOCK_T rwlock; + + } _cmsTRANSFORM,FAR *_LPcmsTRANSFORM; + + + +// Packing & Unpacking + +_cmsFIXFN cdecl _cmsIdentifyInputFormat(_LPcmsTRANSFORM xform, DWORD dwInput); +_cmsFIXFN cdecl _cmsIdentifyOutputFormat(_LPcmsTRANSFORM xform, DWORD dwOutput); + + +// Conversion + +#define XYZRel 0 +#define LabRel 1 + + +int cdecl cmsChooseCnvrt(int Absolute, + int Phase1, LPcmsCIEXYZ BlackPointIn, + LPcmsCIEXYZ WhitePointIn, + LPcmsCIEXYZ IlluminantIn, + LPMAT3 ChromaticAdaptationMatrixIn, + + int Phase2, LPcmsCIEXYZ BlackPointOut, + LPcmsCIEXYZ WhitePointOut, + LPcmsCIEXYZ IlluminantOut, + LPMAT3 ChromaticAdaptationMatrixOut, + int DoBPC, + double AdaptationState, + _cmsADJFN *fn1, + LPWMAT3 wm, LPWVEC3 wof); + + + +// Clamping & Gamut handling + +LCMSBOOL cdecl _cmsEndPointsBySpace(icColorSpaceSignature Space, + WORD **White, WORD **Black, int *nOutputs); + +WORD * cdecl _cmsWhiteBySpace(icColorSpaceSignature Space); + + + +WORD cdecl Clamp_L(Fixed32 in); +WORD cdecl Clamp_ab(Fixed32 in); + +// Detection of black point + +#define LCMS_BPFLAGS_D50_ADAPTED 0x0001 + +int cdecl cmsDetectBlackPoint(LPcmsCIEXYZ BlackPoint, cmsHPROFILE hProfile, int Intent, DWORD dwFlags); + +// choose reasonable resolution +int cdecl _cmsReasonableGridpointsByColorspace(icColorSpaceSignature Colorspace, DWORD dwFlags); + +// Precalculate device link +LPLUT cdecl _cmsPrecalculateDeviceLink(cmsHTRANSFORM h, DWORD dwFlags); + +// Precalculate black preserving device link +LPLUT _cmsPrecalculateBlackPreservingDeviceLink(cmsHTRANSFORM hCMYK2CMYK, DWORD dwFlags); + +// Precalculate gamut check +LPLUT cdecl _cmsPrecalculateGamutCheck(cmsHTRANSFORM h); + +// Hot fixes bad profiles +LCMSBOOL cdecl _cmsFixWhiteMisalignment(_LPcmsTRANSFORM p); + +// Marks LUT as 8 bit on input +LPLUT cdecl _cmsBlessLUT8(LPLUT Lut); + +// Compute gamut boundary +LPLUT cdecl _cmsComputeGamutLUT(cmsHPROFILE hProfile, int Intent); + +// Compute softproof +LPLUT cdecl _cmsComputeSoftProofLUT(cmsHPROFILE hProfile, int nIntent); + +// Find a suitable prelinearization tables, matching the given transform +void cdecl _cmsComputePrelinearizationTablesFromXFORM(cmsHTRANSFORM h[], int nTransforms, LPLUT Grid); + + +// Build a tone curve for K->K' if possible (only works on CMYK) +LPGAMMATABLE _cmsBuildKToneCurve(cmsHTRANSFORM hCMYK2CMYK, int nPoints); + +// Validates a LUT +LCMSBOOL cdecl _cmsValidateLUT(LPLUT NewLUT); + + +// These are two VITAL macros, from converting between 8 and 16 bit +// representation. + +#define RGB_8_TO_16(rgb) (WORD) ((((WORD) (rgb)) << 8)|(rgb)) +#define RGB_16_TO_8(rgb) (BYTE) ((((rgb) * 65281 + 8388608) >> 24) & 0xFF) + + +#endif // LCMS_APIONLY + + +#define __cms_H + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/icc2ps/xgetopt.c b/icc2ps/xgetopt.c new file mode 100644 index 0000000..3eb08fe --- /dev/null +++ b/icc2ps/xgetopt.c @@ -0,0 +1,75 @@ +/* + getopt.c + +*/ + +#include +#include +#include + +int xoptind = 1; /* index of which argument is next */ +char *xoptarg; /* pointer to argument of current option */ +int xopterr = 0; /* allow error message */ + +static char *letP = NULL; /* remember next option char's location */ +char SW = '-'; /* DOS switch character, either '-' or '/' */ + +/* + Parse the command line options, System V style. + + Standard option syntax is: + + option ::= SW [optLetter]* [argLetter space* argument] + +*/ + +int xgetopt(int argc, char *argv[], char *optionS) +{ + unsigned char ch; + char *optP; + + if (SW == 0) { + SW = '/'; + } + + if (argc > xoptind) { + if (letP == NULL) { + if ((letP = argv[xoptind]) == NULL || + *(letP++) != SW) goto gopEOF; + if (*letP == SW) { + xoptind++; goto gopEOF; + } + } + if (0 == (ch = *(letP++))) { + xoptind++; goto gopEOF; + } + if (':' == ch || (optP = strchr(optionS, ch)) == NULL) + goto gopError; + if (':' == *(++optP)) { + xoptind++; + if (0 == *letP) { + if (argc <= xoptind) goto gopError; + letP = argv[xoptind++]; + } + xoptarg = letP; + letP = NULL; + } else { + if (0 == *letP) { + xoptind++; + letP = NULL; + } + xoptarg = NULL; + } + return ch; + } +gopEOF: + xoptarg = letP = NULL; + return EOF; + +gopError: + xoptarg = NULL; + errno = EINVAL; + if (xopterr) + perror ("get command line option"); + return ('?'); +} diff --git a/includer-man b/includer-man new file mode 100755 index 0000000..0f04d44 --- /dev/null +++ b/includer-man @@ -0,0 +1,131 @@ +#!/bin/sh + +PROGNAME="$0" + +usage() { + cat <&2 + exit 1 +} + +debug() { + if [ $DEBUG -ge $1 ]; then + echo "`basename $PROGNAME`: $2" >&2 + fi +} + +# +# Process the options +# +DEBUG=0 +VARS="" +while getopts "v:D:h?" opt +do + case $opt in + v) VARS="$VARS -v $OPTARG";; + D) DEBUG="$OPTARG";; + h|\?) usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# Main Program +# +if [ -x /opt/sfw/bin/gawk ]; then + AWK=/opt/sfw/bin/gawk +else + AWK=awk +fi + +$AWK $VARS ' +function do1(file, i) { + if (nfiles++ == 0) + { + print comment " t" + print comment + print comment " DO NOT EDIT! This file is generated from " file + print comment + } + while ((getline < file) > 0) + { + split($0, a) + if (a[1] == "#include") + { + gsub(/"/, "", a[2]) + print comment + do1(a[2]) + } + else if (a[1] == "#define") + { + def[a[2]] = 1 + print comment + } + else if (a[1] == "#ifdef") + { + if (!def[a[2]]) + skip = 1 + print comment + } + else if (a[1] == "#ifndef") + { + if (def[a[2]]) + skip = 1 + print comment + } + else if (a[1] == "#endif") + { + skip = 0 + print comment + } + else if (skip) + print comment + else + print $0 + } +} +BEGIN { + comment = "'"'"'\\\"" + if (DEF1) def[DEF1] = 1; + if (DEF2) def[DEF2] = 1; + if (DEF3) def[DEF3] = 1; + if (DEF4) def[DEF4] = 1; + if (DEF5) def[DEF5] = 1; + if (DEF6) def[DEF6] = 1; + if (DEF7) def[DEF7] = 1; + if (DEF8) def[DEF8] = 1; + if (DEF9) def[DEF9] = 1; + #for (i in def) + #print i, def[i] + do1(ARGV[1]) + exit +}' $* diff --git a/jbig.c b/jbig.c new file mode 100644 index 0000000..24d86ae --- /dev/null +++ b/jbig.c @@ -0,0 +1,3288 @@ +/* + * Portable JBIG image compression library + * + * Copyright 1995-2014 -- Markus Kuhn -- http://www.cl.cam.ac.uk/~mgk25/ + * + * $Id: jbig.c,v 1.7 2014/04/08 14:22:54 rick Exp $ + * + * This module implements a portable standard C encoder and decoder + * using the JBIG1 lossless bi-level image compression algorithm + * specified in International Standard ISO 11544:1993 and + * ITU-T Recommendation T.82. See the file jbig.txt for usage + * instructions and application examples. + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * If you want to use this program under different license conditions, + * then contact the author for an arrangement. + */ + +#ifdef DEBUG +#include +#else +#define NDEBUG +#endif + +#include +#include +#include + +#include "jbig.h" + +#define MX_MAX 127 /* maximal supported mx offset for + * adaptive template in the encoder */ + +#define TPB2CX 0x195 /* contexts for TP special pixels */ +#define TPB3CX 0x0e5 +#define TPDCX 0xc3f + +/* marker codes */ +#define MARKER_STUFF 0x00 +#define MARKER_RESERVE 0x01 +#define MARKER_SDNORM 0x02 +#define MARKER_SDRST 0x03 +#define MARKER_ABORT 0x04 +#define MARKER_NEWLEN 0x05 +#define MARKER_ATMOVE 0x06 +#define MARKER_COMMENT 0x07 +#define MARKER_ESC 0xff + +/* loop array indices */ +#define STRIPE 0 +#define LAYER 1 +#define PLANE 2 + +/* special jbg_buf pointers (instead of NULL) */ +#define SDE_DONE ((struct jbg_buf *) -1) +#define SDE_TODO ((struct jbg_buf *) 0) + +/* object code version id */ + +const char jbg_version[] = + "JBIG-KIT " JBG_VERSION " -- (c) 1995-2014 Markus Kuhn -- " + "Licence: " JBG_LICENCE "\n" + "$Id: jbig.c,v 1.7 2014/04/08 14:22:54 rick Exp $ "; + +/* + * The following array specifies for each combination of the 3 + * ordering bits, which ii[] variable represents which dimension + * of s->sde. + */ +static const int iindex[8][3] = { + { 2, 1, 0 }, /* no ordering bit set */ + { -1, -1, -1}, /* SMID -> illegal combination */ + { 2, 0, 1 }, /* ILEAVE */ + { 1, 0, 2 }, /* SMID + ILEAVE */ + { 0, 2, 1 }, /* SEQ */ + { 1, 2, 0 }, /* SEQ + SMID */ + { 0, 1, 2 }, /* SEQ + ILEAVE */ + { -1, -1, -1 } /* SEQ + SMID + ILEAVE -> illegal combination */ +}; + +#define _(String) String /* to mark translatable string for GNU gettext */ + +/* + * Array with English ASCII error messages that correspond + * to return values from public functions in this library. + */ +static const char *errmsg[] = { + _("All OK"), /* JBG_EOK */ + _("Reached specified image size"), /* JBG_EOK_INTR */ + _("Unexpected end of input data stream"), /* JBG_EAGAIN */ + _("Not enough memory available"), /* JBG_ENOMEM */ + _("ABORT marker segment encountered"), /* JBG_EABORT */ + _("Unknown marker segment encountered"), /* JBG_EMARKER */ + _("Input data stream contains invalid data"), /* JBG_EINVAL */ + _("Input data stream uses unimplemented JBIG features"), /* JBG_EIMPL */ + _("Incremental BIE does not continue previous one") /* JBG_ENOCONT */ +}; + + +/* + * The following three functions are the only places in this code, were + * C library memory management functions are called. The whole JBIG + * library has been designed in order to allow multi-threaded + * execution. No static or global variables are used, so all fuctions + * are fully reentrant. However if you want to use this multi-thread + * capability and your malloc, realloc and free are not reentrant, + * then simply add the necessary semaphores or mutex primitives below. + * In contrast to C's malloc() and realloc(), but like C's calloc(), + * these functions take two parameters nmemb and size that are multiplied + * before being passed on to the corresponding C function. + * This we can catch all overflows during a size_t multiplication a + * a single place. + */ + +#ifndef SIZE_MAX +#define SIZE_MAX ((size_t) -1) /* largest value of size_t */ +#endif + +static void *checked_malloc(size_t nmemb, size_t size) +{ + void *p; + + /* Full manual exception handling is ugly here for performance + * reasons. If an adequate handling of lack of memory is required, + * then use C++ and throw a C++ exception instead of abort(). */ + + /* assert that nmemb * size <= SIZE_MAX */ + if (size > SIZE_MAX / nmemb) + abort(); + + p = malloc(nmemb * size); + + if (!p) + abort(); + +#if 0 + fprintf(stderr, "%p = malloc(%lu * %lu)\n", p, + (unsigned long) nmemb, (unsigned long) size); +#endif + + return p; +} + + +static void *checked_realloc(void *ptr, size_t nmemb, size_t size) +{ + void *p; + + /* Full manual exception handling is ugly here for performance + * reasons. If an adequate handling of lack of memory is required, + * then use C++ and throw a C++ exception here instead of abort(). */ + + /* assert that nmemb * size <= SIZE_MAX */ + if (size > SIZE_MAX / nmemb) + abort(); + + p = realloc(ptr, nmemb * size); + + if (!p) + abort(); + +#if 0 + fprintf(stderr, "%p = realloc(%p, %lu * %lu)\n", p, ptr, + (unsigned long) nmemb, (unsigned long) size); +#endif + + return p; +} + + +static void checked_free(void *ptr) +{ + free(ptr); + +#if 0 + fprintf(stderr, "free(%p)\n", ptr); +#endif + +} + + + + +/* + * Memory management for buffers which are used for temporarily + * storing SDEs by the encoder. + * + * The following functions manage a set of struct jbg_buf storage + * containers were each can keep JBG_BUFSIZE bytes. The jbg_buf + * containers can be linked to form linear double-chained lists for + * which a number of operations are provided. Blocks which are + * tempoarily not used any more are returned to a freelist which each + * encoder keeps. Only the destructor of the encoder actually returns + * the block via checked_free() to the stdlib memory management. + */ + + +/* + * Allocate a new buffer block and initialize it. Try to get it from + * the free_list, and if it is empty, call checked_malloc(). + */ +static struct jbg_buf *jbg_buf_init(struct jbg_buf **free_list) +{ + struct jbg_buf *new_block; + + /* Test whether a block from the free list is available */ + if (*free_list) { + new_block = *free_list; + *free_list = new_block->next; + } else { + /* request a new memory block */ + new_block = (struct jbg_buf *) checked_malloc(1, sizeof(struct jbg_buf)); + } + new_block->len = 0; + new_block->next = NULL; + new_block->previous = NULL; + new_block->last = new_block; + new_block->free_list = free_list; + + return new_block; +} + + +/* + * Return an entire free_list to the memory management of stdlib. + * This is only done by jbg_enc_free(). + */ +static void jbg_buf_free(struct jbg_buf **free_list) +{ + struct jbg_buf *tmp; + + while (*free_list) { + tmp = (*free_list)->next; + checked_free(*free_list); + *free_list = tmp; + } + + return; +} + + +/* + * Append a single byte to a single list that starts with the block + * *(struct jbg_buf *) head. The type of *head is void here in order to + * keep the interface of the arithmetic encoder gereric, which uses this + * function as a call-back function in order to deliver single bytes + * for a PSCD. + */ +static void jbg_buf_write(int b, void *head) +{ + struct jbg_buf *now; + + now = ((struct jbg_buf *) head)->last; + if (now->len < JBG_BUFSIZE - 1) { + now->d[now->len++] = b; + return; + } + now->next = jbg_buf_init(((struct jbg_buf *) head)->free_list); + now->next->previous = now; + now->next->d[now->next->len++] = b; + ((struct jbg_buf *) head)->last = now->next; + + return; +} + + +/* + * Remove any trailing zero bytes from the end of a linked jbg_buf list, + * however make sure that no zero byte is removed which directly + * follows a 0xff byte (i.e., keep MARKER_ESC MARKER_STUFF sequences + * intact). This function is used to remove any redundant final zero + * bytes from a PSCD. + */ +static void jbg_buf_remove_zeros(struct jbg_buf *head) +{ + struct jbg_buf *last; + + while (1) { + /* remove trailing 0x00 in last block of list until this block is empty */ + last = head->last; + while (last->len && last->d[last->len - 1] == 0) + last->len--; + /* if block became really empty, remove it in case it is not the + * only remaining block and then loop to next block */ + if (last->previous && !last->len) { + head->last->next = *head->free_list; + *head->free_list = head->last; + head->last = last->previous; + head->last->next = NULL; + } else + break; + } + + /* + * If the final non-zero byte is 0xff (MARKER_ESC), then we just have + * removed a MARKER_STUFF and we will append it again now in order + * to preserve PSCD status of byte stream. + */ + if (head->last->len && head->last->d[head->last->len - 1] == MARKER_ESC) + jbg_buf_write(MARKER_STUFF, head); + + return; +} + + +/* + * The jbg_buf list which starts with block *new_prefix is concatenated + * with the list which starts with block **start and *start will then point + * to the first block of the new list. + */ +static void jbg_buf_prefix(struct jbg_buf *new_prefix, struct jbg_buf **start) +{ + new_prefix->last->next = *start; + new_prefix->last->next->previous = new_prefix->last; + new_prefix->last = new_prefix->last->next->last; + *start = new_prefix; + + return; +} + + +/* + * Send the contents of a jbg_buf list that starts with block **head to + * the call back function data_out and return the blocks of the jbg_buf + * list to the freelist from which these jbg_buf blocks have been taken. + * After the call, *head == NULL. + */ +static void jbg_buf_output(struct jbg_buf **head, + void (*data_out)(unsigned char *start, + size_t len, void *file), + void *file) +{ + struct jbg_buf *tmp; + + while (*head) { + data_out((*head)->d, (*head)->len, file); + tmp = (*head)->next; + (*head)->next = *(*head)->free_list; + *(*head)->free_list = *head; + *head = tmp; + } + + return; +} + + +/* + * Calculate y = ceil(x/2) applied n times, which is equivalent to + * y = ceil(x/(2^n)). This function is used to + * determine the number of pixels per row or column after n resolution + * reductions. E.g. X[d-1] = jbg_ceil_half(X[d], 1) and X[0] = + * jbg_ceil_half(X[d], d) as defined in clause 6.2.3 of T.82. + */ +unsigned long jbg_ceil_half(unsigned long x, int n) +{ + unsigned long mask; + + assert(n >= 0 && n < 32); + mask = (1UL << n) - 1; /* the lowest n bits are 1 here */ + return (x >> n) + ((mask & x) != 0); +} + + +/* + * Set L0 (the number of lines in a stripe at lowest resolution) + * to a default value, such that there are about 35 stripes, as + * suggested in Annex C of ITU-T T.82, without exceeding the + * limit 128/2^D suggested in Annex A. + */ +static void jbg_set_default_l0(struct jbg_enc_state *s) +{ + s->l0 = jbg_ceil_half(s->yd, s->d) / 35; /* 35 stripes/image */ + while ((s->l0 << s->d) > 128) /* but <= 128 lines/stripe */ + --s->l0; + if (s->l0 < 2) s->l0 = 2; +} + + +/* + * Calculate the number of stripes, as defined in clause 6.2.3 of T.82. + */ +unsigned long jbg_stripes(unsigned long l0, unsigned long yd, + unsigned long d) +{ + unsigned long y0 = jbg_ceil_half(yd, d); + + return y0 / l0 + (y0 % l0 != 0); +} + + +/* + * Resolution reduction table given by ITU-T T.82 Table 17 + */ + +static char jbg_resred[4096] = { + 0,0,0,1,0,0,0,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,1,1,0,0,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, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,1,1,0,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, + 0,0,1,1,0,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, + 0,1,1,1,1,1,0,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, + 0,0,1,1,0,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,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, + 0,0,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, + 0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, + 0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 1,1,0,1,1,1,1,1,0,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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,1,0,1,1, + 0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1, + 1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1, + 0,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0, + 0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1, + 0,0,0,1,0,0,0,1,0,1,1,0,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1, + 1,1,1,0,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1, + 1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1, + 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,0,1,1, + 1,0,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0, + 0,0,1,0,1,1,1,1,0,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0, + 0,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1, + 0,0,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1, + 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,0,1,0,0,1,1, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,0,1,0,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1, + 0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,1, + 0,0,1,0,0,1,1,1,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,1,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,0,1,1,1, + 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,1,1,0,1,0,0,0,1,1,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,1,1,0,0,1,1, + 0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, + 0,0,0,1,0,0,1,0,1,1,1,1,0,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,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, + 0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, + 0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,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,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,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,1, + 0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,1,0,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,0,1,1, + 1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,0,1,1,0,1,1,1, + 0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,1,0,1,0,1,0,1,1,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,1, + 1,1,1,0,1,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1, + 1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,1, + 0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1, + 1,0,0,0,1,0,0,0,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,0, + 0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, + 0,0,1,0,1,0,1,1,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1, + 0,0,1,0,1,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1, + 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1, + 0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,0,1,0,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1, + 0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1, + 0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1, + 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1, + 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1, + 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,1,0,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1, + 0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,1,1,0,0,0,1,0,1,1,1,0,1,1,1 +}; + +/* + * Deterministic prediction tables given by ITU-T T.82 tables + * 19 to 22. The table below is organized differently, the + * index bits are permutated for higher efficiency. + */ + +static char jbg_dptable[256 + 512 + 2048 + 4096] = { + /* phase 0: offset=0 */ + 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2, + 0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,2,0,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + /* phase 1: offset=256 */ + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,0,2,0,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,2,2,2,2,1,2,1,2,2,2,2,1,1,1,1,2,0,2,0,2,2,2,2,0,2,0,2,2,2,2,2, + 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,0,2,2,2,2,2,2,2, + 0,2,0,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,0,0,2,2,2,2,2,0,0,2,2,2,2,2, + 0,2,2,2,2,1,2,1,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1, + 1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2,2,0,2,2,2,2,2,2, + 2,2,2,2,2,0,2,0,2,2,2,2,0,0,0,0,0,2,0,2,2,2,2,2,0,2,2,2,2,2,2,2, + 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,2,0,2,0,2,2,2,2,2, + 2,2,2,2,2,1,1,1,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,2,0,2,0,2,2,2,2,2,0,2,0,2,2,2,2,1, + 0,2,0,2,2,1,2,1,2,2,2,2,1,1,1,1,0,0,0,0,2,2,2,2,0,2,0,2,2,2,2,1, + 2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,0,2,2,2,2,2, + 2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1, + 2,2,2,2,2,2,2,2,0,2,0,2,2,1,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,2, + /* phase 2: offset=768 */ + 2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,1,1,1,1, + 0,2,2,2,2,1,2,1,2,2,2,2,1,2,1,2,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1, + 2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,1,2,1,2,2,2,2,2,1,1,1, + 2,0,2,2,2,1,2,1,0,2,2,2,1,2,1,2,2,2,2,0,2,2,2,2,0,2,0,2,2,2,2,2, + 0,2,0,0,1,1,1,1,2,2,2,2,1,1,1,1,0,2,0,2,1,1,1,1,2,2,2,2,1,1,1,1, + 2,2,0,2,2,2,1,2,2,2,2,2,1,2,1,2,2,2,0,2,2,1,2,1,0,2,0,2,1,1,1,1, + 2,0,0,2,2,2,2,2,0,2,0,2,2,0,2,0,2,0,2,0,2,2,2,1,2,2,0,2,1,1,2,1, + 2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,1,1,1,1, + 0,0,0,0,2,2,2,2,0,0,0,0,2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,0,2,2,2,2,1,0,2,2,2,1,1,1,1,2,0,2,2,2,2,2,2,0,2,0,2,2,1,2,1, + 2,0,2,0,2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2, + 0,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2, + 2,2,0,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,2,2,1,2,1,0,2,2,2,1,1,1,1, + 2,2,2,0,2,2,2,2,2,2,0,2,2,0,2,0,2,1,2,2,2,2,2,2,1,2,1,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,1, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,1,1,1,2,2,2,2,1,1,1,1, + 2,2,2,1,2,2,2,2,2,2,1,2,0,0,0,0,2,2,0,2,2,1,2,2,2,2,2,2,1,1,1,1, + 2,0,0,0,2,2,2,2,0,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,0,0,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,0,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,1, + 0,2,0,2,2,1,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2, + 2,0,2,0,2,1,2,1,0,2,0,2,2,2,1,2,2,0,2,0,2,2,2,2,0,2,0,2,2,2,1,2, + 2,2,2,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,1,2,2,2,2,2,2,0,1,2,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 0,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2, + 2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,1,2,1,0,2,2,2,1,1,1,1, + 2,0,2,0,2,1,2,2,0,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,1,2,2, + 2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,0,2,2,2,2,0,0,0,0,2,1,2,1, + 2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,1,2,0,0,2,2,2,1,2,2,2, + 0,0,2,0,2,2,2,2,0,2,0,2,2,0,2,0,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1, + 2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,1, + 2,2,0,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,1,1,1,1, + 0,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2, + 2,0,0,2,2,2,2,2,0,2,0,2,2,2,2,2,1,0,1,2,2,2,2,1,0,2,2,2,1,1,1,1, + 2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,0,2,1,2,2,2,2,2,2,2,2,0,2,2,1,2,2, + 0,2,0,0,1,1,1,1,0,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,0,2,2,1,2,1,1, + 2,2,0,2,2,1,2,2,2,2,2,2,1,2,2,2,2,0,2,2,2,2,2,2,0,2,0,2,1,2,1,1, + 2,0,2,0,2,2,2,2,0,2,0,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1, + 2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,2,2,2,2,0,2,0,2,2,2,2,0,0,0,0,2,2,2,2,2,1,1,2,2,2,2,2,1,2,2,2, + 2,0,2,2,2,1,2,1,0,2,2,2,2,2,1,2,2,0,2,0,2,2,2,2,0,2,0,2,2,1,2,2, + 0,2,0,0,2,2,2,2,1,2,2,2,2,2,2,0,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,2, + 0,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,1,0,2,2, + 0,0,0,2,2,1,1,1,2,2,2,2,1,2,2,2,2,0,2,0,2,2,2,1,2,2,2,2,1,2,1,2, + 0,0,0,0,2,2,2,2,2,2,0,2,2,1,2,2,2,1,2,1,2,2,2,2,1,2,1,2,0,2,2,2, + 2,0,2,0,2,2,2,2,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 0,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,1,2,2,2,2,2,0,2,2,1,2,2,0,0,0,2,2,2,2,2,1,2,2,0,2,2,2,1,2,1,2, + 2,0,2,0,2,2,2,2,0,2,0,2,2,1,2,2,0,2,0,0,2,2,2,2,2,2,2,2,2,1,2,2, + 2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,1, + 1,2,0,2,2,1,2,1,2,2,2,2,1,2,2,2,2,0,2,0,2,2,2,2,2,0,2,2,1,1,1,1, + 0,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,1,2,1, + 2,2,0,0,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1, + 2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2, + 2,0,2,0,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,0,2,0,2,2,2,1,2, + 2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2, + 2,0,2,0,2,2,2,2,2,0,2,0,2,2,2,2,2,0,2,0,2,2,2,2,0,0,0,0,2,1,2,1, + 2,2,2,2,2,1,2,1,0,2,0,2,2,2,2,2,2,0,2,0,2,2,2,2,0,2,0,2,2,2,2,1, + 2,0,2,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,0, + 2,0,2,0,2,2,2,1,2,2,2,0,2,2,2,1,2,0,2,0,2,2,2,2,0,0,0,2,2,2,2,1, + 2,0,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2, + /* phase 3: offset=2816 */ + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,0,2,0,1,2,1,2,0,2,0,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,0,2,2,2,1,2,0,2,2,2,1,2,2,2,2,0,2,0,2,1,2,1,0,0,0,0,1,1,1,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,0,2,2,2,1,2, + 2,2,2,1,2,2,2,0,1,1,1,1,0,0,0,0,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,0,0,0,0,1,1,1,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1,0,0,0,0,1,1,1,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,0,2,0,2, + 2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1,2,0,2,0,2,1,2,1, + 2,0,0,0,2,1,1,1,0,0,0,0,1,1,1,1,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2, + 2,0,2,2,2,1,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,0,0,2,0,1,1,2,1, + 2,2,2,0,2,2,2,1,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1, + 0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,2,0,2,0,2,1,2,1,0,0,0,0,1,1,1,1, + 2,0,0,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,0,2,0,2,1,1,1,2,0,0,0, + 2,1,2,1,2,0,2,0,1,2,1,2,0,2,0,2,2,2,2,0,2,2,2,1,2,0,2,0,2,1,2,1, + 2,0,2,0,2,1,2,1,0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1, + 2,2,2,2,2,2,2,2,2,0,0,0,2,1,1,1,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2, + 2,0,0,0,2,1,1,1,0,0,0,0,1,1,1,1,2,0,2,0,2,1,2,1,0,0,2,0,1,1,2,1, + 2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,0,0,0,2,1,1,1, + 2,2,2,1,2,2,2,0,2,1,1,1,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,1,2,0,2,0,1,2,1,2,0,2,0,2, + 2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,1,1,1,0,0,0,0,1,1,1,1, + 2,0,2,2,2,1,2,2,0,0,2,0,1,1,2,1,2,1,2,1,2,0,2,0,2,2,2,2,2,2,2,2, + 2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,0,0,0,0,1,1,1,1, + 2,0,0,0,2,1,1,1,0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2,2,1,0,2,2,0,1,2, + 2,2,2,1,2,2,2,0,2,1,1,1,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2,2, + 2,1,2,1,2,0,2,0,1,2,1,1,0,2,0,0,0,0,2,1,1,1,2,0,0,0,0,0,1,1,1,1, + 2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,0,2,1,2,1,2,0,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,0,2,2,2,1,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,0,2,2,2,1,2,2,2,0,0,2,2,1,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2, + 2,0,2,0,2,1,2,1,0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2,0,0,0,0,1,1,1,1, + 2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,0,0,0,2,1,1,1, + 2,2,2,0,2,2,2,1,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2, + 2,0,2,2,2,1,2,2,2,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,1,2,1,2,0,2,0,1,2,1,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,1,2,1,2,0,2,0,1,2,1,1,0,2,0,0,2,0,2,2,2,1,2,2,0,2,1,2,1,2,0,2, + 2,2,2,1,2,2,2,0,2,2,1,2,2,2,0,2,2,1,2,2,2,0,2,2,2,2,0,2,2,2,1,2, + 0,0,2,0,1,1,2,1,0,0,1,0,1,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,0,2,2,2,1,1,2,2,2,0,2,2,2,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1, + 2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,0,0,2,2,1,1,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2, + 2,0,0,0,2,1,1,1,0,0,0,0,1,1,1,1,2,2,2,1,2,2,2,0,2,1,2,1,2,0,2,0, + 2,1,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,0,0,1,2,1,1,2,0,0,0,2,1,1,1, + 2,2,2,2,2,2,2,2,2,1,1,1,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,0,2,2,2,1,2,2,0,2,2,2,1,2,2,1,2,1,2,0,2,0,2,0,2,2,2,1,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,1,1,1,2,0,0,0, + 2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,0,2,0,0,1,2,1,1, + 2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,0,2,2,2,1,2,2,2, + 2,1,2,1,2,0,2,0,2,1,2,2,2,0,2,2,2,2,2,0,2,2,2,1,2,0,2,0,2,1,2,1, + 2,0,2,0,2,1,2,1,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2, + 2,2,2,2,2,2,2,2,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2,2,0,1,0,0,1,0,1,1, + 2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,2,2,1,2,2,2,0,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,2,2,1,0,2,0,2,2,2,1,2,2,2, + 2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,2,2,0,2,2,2,1,2,2,0,2,2,2,1,2, + 2,0,2,0,2,1,2,1,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2, + 0,2,0,0,1,2,1,1,2,0,0,0,2,1,1,1,2,2,2,2,2,2,2,2,1,0,1,2,0,1,0,2, + 2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,1,2,2,2,0,2,2,1,1,2,2,0,0,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,1,2,1,2,0,2,0,2,1,2,2,2,0,2,2,2,0,2,2,2,1,2,2,0,2,2,2,1,2,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,1,2,2,2,0,2,2,2, + 2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1,2, + 0,0,0,0,1,1,1,1,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,0,2,0,2,2,0,2,2,2,1,2, + 2,0,2,0,2,1,2,1,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2, + 0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,1,2,2,2,0,1,1,2,1,0,0,2,0,2,0,2,2,2,1,2,2,0,2,2,2,1,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2,2,2,0,2,2,2,1,2, + 2,0,2,0,2,1,2,1,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,0,2,2, + 0,2,0,0,1,2,1,1,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2,2,0,0,0,2,1,1,1,2, + 2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,0,0,2,1,1,1,2,0,0,2,2,2,1,2,2,2, + 2,1,2,1,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,1,2,1,1, + 0,0,2,2,1,1,2,2,0,2,1,2,1,2,0,2,2,1,2,1,2,0,2,0,1,2,1,2,0,2,0,2, + 2,2,2,2,2,2,2,2,1,2,1,2,0,2,0,2,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1, + 2,2,0,0,2,2,1,1,2,2,0,0,2,2,1,1,2,2,2,2,2,2,2,2,2,2,0,0,2,2,1,1, + 2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,1,2,1,1, + 2,2,2,0,2,2,2,1,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,0,0,0,2, + 2,2,2,2,2,2,2,2,1,1,1,2,0,0,0,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2, + 2,0,2,0,2,1,2,1,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,0,0,0,2,1,1,1, + 2,0,2,2,2,1,2,2,0,2,2,2,1,2,2,2,2,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2, + 2,0,2,0,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,0,2,0,2,1,2,1,2,1,2,0,2,0,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,0,2,0,2,1,2,1,1,2,1,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,1,2,1,2,0,2,0,2,2,1,2,1,2,0,2,0,2,2,2,2,2,2,2,2, + 2,0,2,1,2,1,2,0,0,2,1,2,1,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,0,2,0,2,1,2,1,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,0,2,0,2,1,2,1, + 2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,1,2,1,2,0,2,0,1,1,1,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1, + 2,0,2,0,2,1,2,1,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +}; + + +/* + * Initialize the status struct for the encoder. + */ +void jbg_enc_init(struct jbg_enc_state *s, unsigned long x, unsigned long y, + int planes, unsigned char **p, + void (*data_out)(unsigned char *start, size_t len, + void *file), + void *file) +{ + unsigned long l, lx; + int i; + + assert(x > 0 && y > 0 && planes > 0 && planes < 256); + s->xd = x; + s->yd = y; + s->yd1 = y; /* This is the hight initially announced in BIH. To provoke + generation of NEWLEN for T.85 compatibility tests, + overwrite with new value s->yd1 > s->yd */ + s->planes = planes; + s->data_out = data_out; + s->file = file; + + s->d = 0; + s->dl = 0; + s->dh = s->d; + jbg_set_default_l0(s); + s->mx = 8; + s->my = 0; + s->order = JBG_ILEAVE | JBG_SMID; + s->options = JBG_TPBON | JBG_TPDON | JBG_DPON; + s->comment = NULL; + s->dppriv = jbg_dptable; + s->res_tab = jbg_resred; + + s->highres = (int *) checked_malloc(planes, sizeof(int)); + s->lhp[0] = p; + s->lhp[1] = (unsigned char **) + checked_malloc(planes, sizeof(unsigned char *)); + for (i = 0; i < planes; i++) { + s->highres[i] = 0; + s->lhp[1][i] = (unsigned char *) + checked_malloc(jbg_ceil_half(y, 1), jbg_ceil_half(x, 1+3)); + } + + s->free_list = NULL; + s->s = (struct jbg_arenc_state *) + checked_malloc(s->planes, sizeof(struct jbg_arenc_state)); + s->tx = (int *) checked_malloc(s->planes, sizeof(int)); + lx = jbg_ceil_half(x, 1); + s->tp = (char *) checked_malloc(lx, sizeof(char)); + for (l = 0; l < lx; s->tp[l++] = 2) ; + s->sde = NULL; + + return; +} + + +/* + * This function selects the number of differential layers based on + * the maximum size requested for the lowest resolution layer. If + * possible, a number of differential layers is selected, which will + * keep the size of the lowest resolution layer below or equal to the + * given width x and height y. However not more than 6 differential + * resolution layers will be used. In addition, a reasonable value for + * l0 (height of one stripe in the lowest resolution layer) is + * selected, which obeys the recommended limitations for l0 in annex A + * and C of the JBIG standard. The selected number of resolution layers + * is returned. + */ +int jbg_enc_lrlmax(struct jbg_enc_state *s, unsigned long x, + unsigned long y) +{ + for (s->d = 0; s->d < 6; s->d++) + if (jbg_ceil_half(s->xd, s->d) <= x && jbg_ceil_half(s->yd, s->d) <= y) + break; + s->dl = 0; + s->dh = s->d; + jbg_set_default_l0(s); + return s->d; +} + + +/* + * As an alternative to jbg_enc_lrlmax(), the following function allows + * to specify the number of layers directly. The stripe height and layer + * range is also adjusted automatically here. + */ +void jbg_enc_layers(struct jbg_enc_state *s, int d) +{ + if (d < 0 || d > 31) + return; + s->d = d; + s->dl = 0; + s->dh = s->d; + jbg_set_default_l0(s); + return; +} + + +/* + * Specify the highest and lowest resolution layers which will be + * written to the output file. Call this function not before + * jbg_enc_layers() or jbg_enc_lrlmax(), because these two functions + * reset the lowest and highest resolution layer to default values. + * Negative values are ignored. The total number of layers is returned. + */ +int jbg_enc_lrange(struct jbg_enc_state *s, int dl, int dh) +{ + if (dl >= 0 && dl <= s->d) s->dl = dl; + if (dh >= s->dl && dh <= s->d) s->dh = dh; + + return s->d; +} + + +/* + * The following function allows to specify the bits describing the + * options of the format as well as the maximum AT movement window and + * the number of layer 0 lines per stripes. + */ +void jbg_enc_options(struct jbg_enc_state *s, int order, int options, + unsigned long l0, int mx, int my) +{ + if (order >= 0 && order <= 0x0f) s->order = order; + if (options >= 0) s->options = options; + if (l0 > 0) s->l0 = l0; + if (mx >= 0 && my < 128) s->mx = mx; + if (my >= 0 && my < 256) s->my = my; + + return; +} + + +/* + * This function actually does all the tricky work involved in producing + * a SDE, which is stored in the appropriate s->sde[][][] element + * for later output in the correct order. + */ +static void encode_sde(struct jbg_enc_state *s, + long stripe, int layer, int plane) +{ + unsigned char *hp, *lp1, *lp2, *p0, *p1, *q1, *q2; + unsigned long hl, ll, hx, hy, lx, ly, hbpl, lbpl; + unsigned long line_h0 = 0, line_h1 = 0; + unsigned long line_h2, line_h3, line_l1, line_l2, line_l3; + struct jbg_arenc_state *se; + unsigned long y; /* current line number in highres image */ + unsigned long i; /* current line number within highres stripe */ + unsigned long j; /* current column number in highres image */ + long o; + unsigned a, p, t; + int ltp, ltp_old, cx; + unsigned long c_all, c[MX_MAX + 1], cmin, cmax, clmin, clmax; + int tmax, at_determined; + int new_tx; + long new_tx_line = -1; + int reset; + struct jbg_buf *new_jbg_buf; + +#ifdef DEBUG + static long tp_lines, tp_exceptions, tp_pixels, dp_pixels; + static long encoded_pixels; +#endif + + /* return immediately if this stripe has already been encoded */ + if (s->sde[stripe][layer][plane] != SDE_TODO) + return; + +#ifdef DEBUG + if (stripe == 0) + tp_lines = tp_exceptions = tp_pixels = dp_pixels = encoded_pixels = 0; + fprintf(stderr, "encode_sde: s/d/p = %2ld/%2d/%2d\n", + stripe, layer, plane); +#endif + + /* number of lines per stripe in highres image */ + hl = s->l0 << layer; + /* number of lines per stripe in lowres image */ + ll = hl >> 1; + /* current line number in highres image */ + y = stripe * hl; + /* number of pixels in highres image */ + hx = jbg_ceil_half(s->xd, s->d - layer); + hy = jbg_ceil_half(s->yd, s->d - layer); + /* number of pixels in lowres image */ + lx = jbg_ceil_half(hx, 1); + ly = jbg_ceil_half(hy, 1); + /* bytes per line in highres and lowres image */ + hbpl = jbg_ceil_half(hx, 3); + lbpl = jbg_ceil_half(lx, 3); + /* pointer to first image byte of highres stripe */ + hp = s->lhp[s->highres[plane]][plane] + stripe * hl * hbpl; + lp2 = s->lhp[1 - s->highres[plane]][plane] + stripe * ll * lbpl; + lp1 = lp2 + lbpl; + + /* check whether we can refer to any state of a previous stripe */ + reset = (stripe == 0) || (s->options & JBG_SDRST); + + /* initialize arithmetic encoder */ + se = s->s + plane; + arith_encode_init(se, !reset); + s->sde[stripe][layer][plane] = jbg_buf_init(&s->free_list); + se->byte_out = jbg_buf_write; + se->file = s->sde[stripe][layer][plane]; + + /* initialize adaptive template movement algorithm */ + c_all = 0; + for (t = 0; t <= s->mx; t++) + c[t] = 0; + if (stripe == 0) /* the SDRST case is handled at the end */ + s->tx[plane] = 0; + new_tx = -1; + at_determined = 0; /* we haven't yet decided the template move */ + if (s->mx == 0) + at_determined = 1; + + /* initialize typical prediction */ + ltp = 0; + if (reset) + ltp_old = 0; + else { + ltp_old = 1; + p1 = hp - hbpl; + if (y > 1) { + q1 = p1 - hbpl; + while (p1 < hp && (ltp_old = (*p1++ == *q1++)) != 0) ; + } else + while (p1 < hp && (ltp_old = (*p1++ == 0)) != 0) ; + } + + if (layer == 0) { + + /* + * Encode lowest resolution layer + */ + + for (i = 0; i < hl && y < hy; i++, y++) { + + /* check whether it is worth to perform an ATMOVE */ + if (!at_determined && c_all > 2048) { + cmin = clmin = 0xffffffffL; + cmax = clmax = 0; + tmax = 0; + for (t = (s->options & JBG_LRLTWO) ? 5 : 3; t <= s->mx; t++) { + if (c[t] > cmax) cmax = c[t]; + if (c[t] < cmin) cmin = c[t]; + if (c[t] > c[tmax]) tmax = t; + } + clmin = (c[0] < cmin) ? c[0] : cmin; + clmax = (c[0] > cmax) ? c[0] : cmax; + if (c_all - cmax < (c_all >> 3) && + cmax - c[s->tx[plane]] > c_all - cmax && + cmax - c[s->tx[plane]] > (c_all >> 4) && + /* ^ T.82 said < here, fixed in Cor.1/25 */ + cmax - (c_all - c[s->tx[plane]]) > c_all - cmax && + cmax - (c_all - c[s->tx[plane]]) > (c_all >> 4) && + cmax - cmin > (c_all >> 2) && + (s->tx[plane] || clmax - clmin > (c_all >> 3))) { + /* we have decided to perform an ATMOVE */ + new_tx = tmax; + if (!(s->options & JBG_DELAY_AT)) { + new_tx_line = i; + s->tx[plane] = new_tx; + } +#ifdef DEBUG + fprintf(stderr, "ATMOVE: line=%ld, tx=%d, c_all=%ld\n", + i, new_tx, c_all); +#endif + } + at_determined = 1; + } + assert(s->tx[plane] >= 0); /* i.e., tx can safely be cast to unsigned */ + + /* typical prediction */ + if (s->options & JBG_TPBON) { + ltp = 1; + p1 = hp; + if (i > 0 || !reset) { + q1 = hp - hbpl; + while (q1 < hp && (ltp = (*p1++ == *q1++)) != 0) ; + } else + while (p1 < hp + hbpl && (ltp = (*p1++ == 0)) != 0) ; + arith_encode(se, (s->options & JBG_LRLTWO) ? TPB2CX : TPB3CX, + ltp == ltp_old); +#ifdef DEBUG + tp_lines += ltp; +#endif + ltp_old = ltp; + if (ltp) { + /* skip next line */ + hp += hbpl; + continue; + } + } + + /* + * Layout of the variables line_h1, line_h2, line_h3, which contain + * as bits the neighbour pixels of the currently coded pixel X: + * + * 76543210765432107654321076543210 line_h3 + * 76543210765432107654321076543210 line_h2 + * 76543210765432107654321X76543210 line_h1 + */ + + line_h1 = line_h2 = line_h3 = 0; + if (i > 0 || !reset) line_h2 = (long)*(hp - hbpl) << 8; + if (i > 1 || !reset) line_h3 = (long)*(hp - hbpl - hbpl) << 8; + + /* encode line */ + for (j = 0; j < hx; hp++) { + line_h1 |= *hp; + if (j < hbpl * 8 - 8 && (i > 0 || !reset)) { + line_h2 |= *(hp - hbpl + 1); + if (i > 1 || !reset) + line_h3 |= *(hp - hbpl - hbpl + 1); + } + if (s->options & JBG_LRLTWO) { + /* two line template */ + do { + line_h1 <<= 1; line_h2 <<= 1; line_h3 <<= 1; + if (s->tx[plane]) { + if ((unsigned) s->tx[plane] > j) + a = 0; + else { + o = (j - s->tx[plane]) - (j & ~7L); + a = (hp[o >> 3] >> (7 - (o & 7))) & 1; + a <<= 4; + } + assert(s->tx[plane] > 23 || + a == ((line_h1 >> (4 + s->tx[plane])) & 0x010)); + arith_encode(se, (((line_h2 >> 10) & 0x3e0) | a | + ((line_h1 >> 9) & 0x00f)), + (line_h1 >> 8) & 1); + } + else + arith_encode(se, (((line_h2 >> 10) & 0x3f0) | + ((line_h1 >> 9) & 0x00f)), + (line_h1 >> 8) & 1); +#ifdef DEBUG + encoded_pixels++; +#endif + /* statistics for adaptive template changes */ + if (!at_determined && j >= s->mx && j < hx-2) { + p = (line_h1 & 0x100) != 0; /* current pixel value */ + c[0] += ((line_h2 & 0x4000) != 0) == p; /* default position */ + assert(!(((line_h2 >> 6) ^ line_h1) & 0x100) == + (((line_h2 & 0x4000) != 0) == p)); + for (t = 5; t <= s->mx && t <= j; t++) { + o = (j - t) - (j & ~7L); + a = (hp[o >> 3] >> (7 - (o & 7))) & 1; + assert(t > 23 || + (a == p) == !(((line_h1 >> t) ^ line_h1) & 0x100)); + c[t] += a == p; + } + for (; t <= s->mx; t++) { + c[t] += 0 == p; + } + ++c_all; + } + } while (++j & 7 && j < hx); + } else { + /* three line template */ + do { + line_h1 <<= 1; line_h2 <<= 1; line_h3 <<= 1; + if (s->tx[plane]) { + if ((unsigned) s->tx[plane] > j) + a = 0; + else { + o = (j - s->tx[plane]) - (j & ~7L); + a = (hp[o >> 3] >> (7 - (o & 7))) & 1; + a <<= 2; + } + assert(s->tx[plane] > 23 || + a == ((line_h1 >> (6 + s->tx[plane])) & 0x004)); + arith_encode(se, (((line_h3 >> 8) & 0x380) | + ((line_h2 >> 12) & 0x078) | a | + ((line_h1 >> 9) & 0x003)), + (line_h1 >> 8) & 1); + } else + arith_encode(se, (((line_h3 >> 8) & 0x380) | + ((line_h2 >> 12) & 0x07c) | + ((line_h1 >> 9) & 0x003)), + (line_h1 >> 8) & 1); +#ifdef DEBUG + encoded_pixels++; +#endif + /* statistics for adaptive template changes */ + if (!at_determined && j >= s->mx && j < hx-2) { + p = (line_h1 & 0x100) != 0; /* current pixel value */ + c[0] += ((line_h2 & 0x4000) != 0) == p; /* default position */ + assert(!(((line_h2 >> 6) ^ line_h1) & 0x100) == + (((line_h2 & 0x4000) != 0) == p)); + for (t = 3; t <= s->mx && t <= j; t++) { + o = (j - t) - (j & ~7L); + a = (hp[o >> 3] >> (7 - (o & 7))) & 1; + assert(t > 23 || + (a == p) == !(((line_h1 >> t) ^ line_h1) & 0x100)); + c[t] += a == p; + } + for (; t <= s->mx; t++) { + c[t] += 0 == p; + } + ++c_all; + } + } while (++j & 7 && j < hx); + } /* if (s->options & JBG_LRLTWO) */ + } /* for (j = ...) */ + } /* for (i = ...) */ + + } else { + + /* + * Encode differential layer + */ + + for (i = 0; i < hl && y < hy; i++, y++) { + + /* check whether it is worth to perform an ATMOVE */ + if (!at_determined && c_all > 2048) { + cmin = clmin = 0xffffffffL; + cmax = clmax = 0; + tmax = 0; + for (t = 3; t <= s->mx; t++) { + if (c[t] > cmax) cmax = c[t]; + if (c[t] < cmin) cmin = c[t]; + if (c[t] > c[tmax]) tmax = t; + } + clmin = (c[0] < cmin) ? c[0] : cmin; + clmax = (c[0] > cmax) ? c[0] : cmax; + if (c_all - cmax < (c_all >> 3) && + cmax - c[s->tx[plane]] > c_all - cmax && + cmax - c[s->tx[plane]] > (c_all >> 4) && + /* ^ T.82 said < here, fixed in Cor.1/25 */ + cmax - (c_all - c[s->tx[plane]]) > c_all - cmax && + cmax - (c_all - c[s->tx[plane]]) > (c_all >> 4) && + cmax - cmin > (c_all >> 2) && + (s->tx[plane] || clmax - clmin > (c_all >> 3))) { + /* we have decided to perform an ATMOVE */ + new_tx = tmax; + if (!(s->options & JBG_DELAY_AT)) { + new_tx_line = i; + s->tx[plane] = new_tx; + } +#ifdef DEBUG + fprintf(stderr, "ATMOVE: line=%ld, tx=%d, c_all=%ld\n", + i, new_tx, c_all); +#endif + } + at_determined = 1; + } + + if ((i >> 1) >= ll - 1 || (y >> 1) >= ly - 1) + lp1 = lp2; + + /* typical prediction */ + if (s->options & JBG_TPDON && (i & 1) == 0) { + q1 = lp1; q2 = lp2; + p0 = p1 = hp; + if (i < hl - 1 && y < hy - 1) + p0 = hp + hbpl; + if (i > 1 || !reset) + line_l3 = (long)*(q2 - lbpl) << 8; + else + line_l3 = 0; + line_l2 = (long)*q2 << 8; + line_l1 = (long)*q1 << 8; + ltp = 1; + for (j = 0; j < lx && ltp; q1++, q2++) { + if (j < lbpl * 8 - 8) { + if (i > 1 || !reset) + line_l3 |= *(q2 - lbpl + 1); + line_l2 |= *(q2 + 1); + line_l1 |= *(q1 + 1); + } + do { + if ((j >> 2) < hbpl) { + line_h1 = *(p1++); + line_h0 = *(p0++); + } + do { + line_l3 <<= 1; + line_l2 <<= 1; + line_l1 <<= 1; + line_h1 <<= 2; + line_h0 <<= 2; + cx = (((line_l3 >> 15) & 0x007) | + ((line_l2 >> 12) & 0x038) | + ((line_l1 >> 9) & 0x1c0)); + if (cx == 0x000) + if ((line_h1 & 0x300) == 0 && (line_h0 & 0x300) == 0) + s->tp[j] = 0; + else { + ltp = 0; +#ifdef DEBUG + tp_exceptions++; +#endif + } + else if (cx == 0x1ff) + if ((line_h1 & 0x300) == 0x300 && (line_h0 & 0x300) == 0x300) + s->tp[j] = 1; + else { + ltp = 0; +#ifdef DEBUG + tp_exceptions++; +#endif + } + else + s->tp[j] = 2; + } while (++j & 3 && j < lx); + } while (j & 7 && j < lx); + } /* for (j = ...) */ + arith_encode(se, TPDCX, !ltp); +#ifdef DEBUG + tp_lines += ltp; +#endif + } + + + /* + * Layout of the variables line_h1, line_h2, line_h3, which contain + * as bits the high resolution neighbour pixels of the currently coded + * highres pixel X: + * + * 76543210 76543210 76543210 76543210 line_h3 + * 76543210 76543210 76543210 76543210 line_h2 + * 76543210 76543210 7654321X 76543210 line_h1 + * + * Layout of the variables line_l1, line_l2, line_l3, which contain + * the low resolution pixels near the currently coded pixel as bits. + * The lowres pixel in which the currently coded highres pixel is + * located is marked as Y: + * + * 76543210 76543210 76543210 76543210 line_l3 + * 76543210 7654321Y 76543210 76543210 line_l2 + * 76543210 76543210 76543210 76543210 line_l1 + */ + + + line_h1 = line_h2 = line_h3 = line_l1 = line_l2 = line_l3 = 0; + if (i > 0 || !reset) line_h2 = (long)*(hp - hbpl) << 8; + if (i > 1 || !reset) { + line_h3 = (long)*(hp - hbpl - hbpl) << 8; + line_l3 = (long)*(lp2 - lbpl) << 8; + } + line_l2 = (long)*lp2 << 8; + line_l1 = (long)*lp1 << 8; + + /* encode line */ + for (j = 0; j < hx; lp1++, lp2++) { + if ((j >> 1) < lbpl * 8 - 8) { + if (i > 1 || !reset) + line_l3 |= *(lp2 - lbpl + 1); + line_l2 |= *(lp2 + 1); + line_l1 |= *(lp1 + 1); + } + do { /* ... while (j & 15 && j < hx) */ + + assert(hp - (s->lhp[s->highres[plane]][plane] + + (stripe * hl + i) * hbpl) + == (ptrdiff_t) j >> 3); + + assert(lp2 - (s->lhp[1-s->highres[plane]][plane] + + (stripe * ll + (i>>1)) * lbpl) + == (ptrdiff_t) j >> 4); + + line_h1 |= *hp; + if (j < hbpl * 8 - 8) { + if (i > 0 || !reset) { + line_h2 |= *(hp - hbpl + 1); + if (i > 1 || !reset) + line_h3 |= *(hp - hbpl - hbpl + 1); + } + } + do { /* ... while (j & 7 && j < hx) */ + line_l1 <<= 1; line_l2 <<= 1; line_l3 <<= 1; + if (ltp && s->tp[j >> 1] < 2) { + /* pixel are typical and have not to be encoded */ + line_h1 <<= 2; line_h2 <<= 2; line_h3 <<= 2; +#ifdef DEBUG + do { + ++tp_pixels; + } while (++j & 1 && j < hx); +#else + j += 2; +#endif + } else + do { /* ... while (++j & 1 && j < hx) */ + line_h1 <<= 1; line_h2 <<= 1; line_h3 <<= 1; + + /* deterministic prediction */ + if (s->options & JBG_DPON) { + if ((y & 1) == 0) { + if ((j & 1) == 0) { + /* phase 0 */ + if (s->dppriv[((line_l3 >> 16) & 0x003) | + ((line_l2 >> 14) & 0x00c) | + ((line_h1 >> 5) & 0x010) | + ((line_h2 >> 10) & 0x0e0)] < 2) { +#ifdef DEBUG + ++dp_pixels; +#endif + continue; + } + } else { + /* phase 1 */ + if (s->dppriv[(((line_l3 >> 16) & 0x003) | + ((line_l2 >> 14) & 0x00c) | + ((line_h1 >> 5) & 0x030) | + ((line_h2 >> 10) & 0x1c0)) + 256] < 2) { +#ifdef DEBUG + ++dp_pixels; +#endif + continue; + } + } + } else { + if ((j & 1) == 0) { + /* phase 2 */ + if (s->dppriv[(((line_l3 >> 16) & 0x003) | + ((line_l2 >> 14) & 0x00c) | + ((line_h1 >> 5) & 0x010) | + ((line_h2 >> 10) & 0x0e0) | + ((line_h3 >> 7) & 0x700)) + 768] < 2) { +#ifdef DEBUG + ++dp_pixels; +#endif + continue; + } + } else { + /* phase 3 */ + if (s->dppriv[(((line_l3 >> 16) & 0x003) | + ((line_l2 >> 14) & 0x00c) | + ((line_h1 >> 5) & 0x030) | + ((line_h2 >> 10) & 0x1c0) | + ((line_h3 >> 7) & 0xe00)) + 2816] < 2) { +#ifdef DEBUG + ++dp_pixels; +#endif + continue; + } + } + } + } + + /* determine context */ + if (s->tx[plane]) { + if ((unsigned) s->tx[plane] > j) + a = 0; + else { + o = (j - s->tx[plane]) - (j & ~7L); + a = (hp[o >> 3] >> (7 - (o & 7))) & 1; + a <<= 4; + } + assert(s->tx[plane] > 23 || + a == ((line_h1 >> (4 + s->tx[plane])) & 0x010)); + cx = (((line_h1 >> 9) & 0x003) | a | + ((line_h2 >> 13) & 0x00c) | + ((line_h3 >> 11) & 0x020)); + } else + cx = (((line_h1 >> 9) & 0x003) | + ((line_h2 >> 13) & 0x01c) | + ((line_h3 >> 11) & 0x020)); + if (j & 1) + cx |= (((line_l2 >> 9) & 0x0c0) | + ((line_l1 >> 7) & 0x300)) | (1UL << 10); + else + cx |= (((line_l2 >> 10) & 0x0c0) | + ((line_l1 >> 8) & 0x300)); + cx |= (y & 1) << 11; + + arith_encode(se, cx, (line_h1 >> 8) & 1); +#ifdef DEBUG + encoded_pixels++; +#endif + + /* statistics for adaptive template changes */ + if (!at_determined && j >= s->mx) { + c[0] += !(((line_h2 >> 6) ^ line_h1) & 0x100); + for (t = 3; t <= s->mx; t++) + c[t] += !(((line_h1 >> t) ^ line_h1) & 0x100); + ++c_all; + } + + } while (++j & 1 && j < hx); + } while (j & 7 && j < hx); + hp++; + } while (j & 15 && j < hx); + } /* for (j = ...) */ + + /* low resolution pixels are used twice */ + if ((i & 1) == 0) { + lp1 -= lbpl; + lp2 -= lbpl; + } + + } /* for (i = ...) */ + } + + arith_encode_flush(se); + jbg_buf_remove_zeros(s->sde[stripe][layer][plane]); + jbg_buf_write(MARKER_ESC, s->sde[stripe][layer][plane]); + jbg_buf_write((s->options & JBG_SDRST) ? MARKER_SDRST : MARKER_SDNORM, + s->sde[stripe][layer][plane]); + if (s->options & JBG_SDRST) + s->tx[plane] = 0; + + /* add ATMOVE */ + if (new_tx != -1) { + if (s->options & JBG_DELAY_AT) { + /* ATMOVE will become active at the first line of the next stripe */ + s->tx[plane] = new_tx; + jbg_buf_write(MARKER_ESC, s->sde[stripe][layer][plane]); + jbg_buf_write(MARKER_ATMOVE, s->sde[stripe][layer][plane]); + jbg_buf_write(0, s->sde[stripe][layer][plane]); + jbg_buf_write(0, s->sde[stripe][layer][plane]); + jbg_buf_write(0, s->sde[stripe][layer][plane]); + jbg_buf_write(0, s->sde[stripe][layer][plane]); + jbg_buf_write(s->tx[plane], s->sde[stripe][layer][plane]); + jbg_buf_write(0, s->sde[stripe][layer][plane]); + } else { + /* ATMOVE has already become active during this stripe + * => we have to prefix the SDE data with an ATMOVE marker */ + new_jbg_buf = jbg_buf_init(&s->free_list); + jbg_buf_write(MARKER_ESC, new_jbg_buf); + jbg_buf_write(MARKER_ATMOVE, new_jbg_buf); + jbg_buf_write((new_tx_line >> 24) & 0xff, new_jbg_buf); + jbg_buf_write((new_tx_line >> 16) & 0xff, new_jbg_buf); + jbg_buf_write((new_tx_line >> 8) & 0xff, new_jbg_buf); + jbg_buf_write(new_tx_line & 0xff, new_jbg_buf); + jbg_buf_write(new_tx, new_jbg_buf); + jbg_buf_write(0, new_jbg_buf); + jbg_buf_prefix(new_jbg_buf, &s->sde[stripe][layer][plane]); + } + } + +#if 0 + if (stripe == s->stripes - 1) + fprintf(stderr, "tp_lines = %ld, tp_exceptions = %ld, tp_pixels = %ld, " + "dp_pixels = %ld, encoded_pixels = %ld\n", + tp_lines, tp_exceptions, tp_pixels, dp_pixels, encoded_pixels); +#endif + + return; +} + + +/* + * Create the next lower resolution version of an image + */ +static void resolution_reduction(struct jbg_enc_state *s, int plane, + int higher_layer) +{ + unsigned long hl, ll, hx, hy, lx, ly, hbpl, lbpl; + unsigned char *hp1, *hp2, *hp3, *lp; + unsigned long line_h1, line_h2, line_h3, line_l2; + unsigned long y; /* current line number in lowres image */ + unsigned long i; /* current line number within lowres stripe */ + unsigned long j; /* current column number in lowres image */ + int pix, k, l; + + /* number of lines per stripe in highres image */ + hl = s->l0 << higher_layer; + /* number of lines per stripe in lowres image */ + ll = hl >> 1; + /* number of pixels in highres image */ + hx = jbg_ceil_half(s->xd, s->d - higher_layer); + hy = jbg_ceil_half(s->yd, s->d - higher_layer); + /* number of pixels in lowres image */ + lx = jbg_ceil_half(hx, 1); + ly = jbg_ceil_half(hy, 1); + /* bytes per line in highres and lowres image */ + hbpl = jbg_ceil_half(hx, 3); + lbpl = jbg_ceil_half(lx, 3); + /* pointers to first image bytes */ + hp2 = s->lhp[s->highres[plane]][plane]; + hp1 = hp2 + hbpl; + hp3 = hp2 - hbpl; + lp = s->lhp[1 - s->highres[plane]][plane]; + +#ifdef DEBUG + fprintf(stderr, "resolution_reduction: plane = %d, higher_layer = %d\n", + plane, higher_layer); +#endif + + /* + * Layout of the variables line_h1, line_h2, line_h3, which contain + * as bits the high resolution neighbour pixels of the currently coded + * lowres pixel /\: + * \/ + * + * 76543210 76543210 76543210 76543210 line_h3 + * 76543210 76543210 765432/\ 76543210 line_h2 + * 76543210 76543210 765432\/ 76543210 line_h1 + * + * Layout of the variable line_l2, which contains the low resolution + * pixels near the currently coded pixel as bits. The lowres pixel + * which is currently coded is marked as X: + * + * 76543210 76543210 76543210 76543210 line_l2 + * X + */ + + for (y = 0; y < ly;) { + for (i = 0; i < ll && y < ly; i++, y++) { + if (2*y + 1 >= hy) + hp1 = hp2; + pix = 0; + line_h1 = line_h2 = line_h3 = line_l2 = 0; + for (j = 0; j < lbpl * 8; j += 8) { + *lp = 0; + if (i > 0 || (y > 0 && !(s->options & JBG_SDRST))) + line_l2 |= *(lp-lbpl); + for (k = 0; k < 8 && j + k < lx; k += 4) { + if (((j + k) >> 2) < hbpl) { + if (i > 0 || (y > 0 && !(s->options & JBG_SDRST))) + line_h3 |= *hp3; + ++hp3; + line_h2 |= *(hp2++); + line_h1 |= *(hp1++); + } + for (l = 0; l < 4 && j + k + l < lx; l++) { + line_h3 <<= 2; + line_h2 <<= 2; + line_h1 <<= 2; + line_l2 <<= 1; + pix = s->res_tab[((line_h1 >> 8) & 0x007) | + ((line_h2 >> 5) & 0x038) | + ((line_h3 >> 2) & 0x1c0) | + (pix << 9) | ((line_l2 << 2) & 0xc00)]; + *lp = (*lp << 1) | pix; + } + } + ++lp; + } + *(lp - 1) <<= lbpl * 8 - lx; + hp1 += hbpl; + hp2 += hbpl; + hp3 += hbpl; + } + } + +#ifdef DEBUG + { + FILE *f; + char fn[50]; + + sprintf(fn, "dbg_d=%02d.pbm", higher_layer - 1); + f = fopen(fn, "wb"); + fprintf(f, "P4\n%lu %lu\n", lx, ly); + fwrite(s->lhp[1 - s->highres[plane]][plane], 1, lbpl * ly, f); + fclose(f); + } +#endif + + return; +} + + +/* + * This function is called inside the three loops of jbg_enc_out() in + * order to write the next SDE. It has first to generate the required + * SDE and all SDEs which have to be encoded before this SDE can be + * created. The problem here is that if we want to output a lower + * resolution layer, we have to apply the resolution reduction + * algorithm first to get it. As we try to safe as much memory as + * possible, the resolution reduction will overwrite previous higher + * resolution bitmaps. Consequently, we have to encode and buffer SDEs + * which depend on higher resolution layers before we can start the + * resolution reduction. All the logic about which SDE has to be + * encoded before resolution reduction is allowed is handled + * here. This approach may be a bit more complex than alternative ways + * of doing it, but it minimizes the amount of temporary memory used. + */ +static void output_sde(struct jbg_enc_state *s, + unsigned long stripe, int layer, int plane) +{ + int lfcl; /* lowest fully coded layer */ + long i; + unsigned long u; + + assert(s->sde[stripe][layer][plane] != SDE_DONE); + + if (s->sde[stripe][layer][plane] != SDE_TODO) { +#ifdef DEBUG + fprintf(stderr, "writing SDE: s/d/p = %2lu/%2d/%2d\n", + stripe, layer, plane); +#endif + jbg_buf_output(&s->sde[stripe][layer][plane], s->data_out, s->file); + s->sde[stripe][layer][plane] = SDE_DONE; + return; + } + + /* Determine the smallest resolution layer in this plane for which + * not yet all stripes have been encoded into SDEs. This layer will + * have to be completely coded, before we can apply the next + * resolution reduction step. */ + lfcl = 0; + for (i = s->d; i >= 0; i--) + if (s->sde[s->stripes - 1][i][plane] == SDE_TODO) { + lfcl = i + 1; + break; + } + if (lfcl > s->d && s->d > 0 && stripe == 0) { + /* perform the first resolution reduction */ + resolution_reduction(s, plane, s->d); + } + /* In case HITOLO is not used, we have to encode and store the higher + * resolution layers first, although we do not need them right now. */ + while (lfcl - 1 > layer) { + for (u = 0; u < s->stripes; u++) + encode_sde(s, u, lfcl - 1, plane); + --lfcl; + s->highres[plane] ^= 1; + if (lfcl > 1) + resolution_reduction(s, plane, lfcl - 1); + } + + encode_sde(s, stripe, layer, plane); + +#ifdef DEBUG + fprintf(stderr, "writing SDE: s/d/p = %2lu/%2d/%2d\n", stripe, layer, plane); +#endif + jbg_buf_output(&s->sde[stripe][layer][plane], s->data_out, s->file); + s->sde[stripe][layer][plane] = SDE_DONE; + + if (stripe == s->stripes - 1 && layer > 0 && + s->sde[0][layer-1][plane] == SDE_TODO) { + s->highres[plane] ^= 1; + if (layer > 1) + resolution_reduction(s, plane, layer - 1); + } + + return; +} + + +/* + * Convert the table which controls the deterministic prediction + * process from the internal format into the representation required + * for the 1728 byte long DPTABLE element of a BIH. + * + * The bit order of the DPTABLE format (see also ITU-T T.82 figure 13) is + * + * high res: 4 5 6 low res: 0 1 + * 7 8 9 2 3 + * 10 11 12 + * + * were 4 table entries are packed into one byte, while we here use + * internally an unpacked 6912 byte long table indexed by the following + * bit order: + * + * high res: 7 6 5 high res: 8 7 6 low res: 1 0 + * (phase 0) 4 . . (phase 1) 5 4 . 3 2 + * . . . . . . + * + * high res: 10 9 8 high res: 11 10 9 + * (phase 2) 7 6 5 (phase 3) 8 7 6 + * 4 . . 5 4 . + */ +void jbg_int2dppriv(unsigned char *dptable, const char *internal) +{ + int i, j, k; + int trans0[ 8] = { 1, 0, 3, 2, 7, 6, 5, 4 }; + int trans1[ 9] = { 1, 0, 3, 2, 8, 7, 6, 5, 4 }; + int trans2[11] = { 1, 0, 3, 2, 10, 9, 8, 7, 6, 5, 4 }; + int trans3[12] = { 1, 0, 3, 2, 11, 10, 9, 8, 7, 6, 5, 4 }; + + for (i = 0; i < 1728; dptable[i++] = 0) ; + +#define FILL_TABLE1(offset, len, trans) \ + for (i = 0; i < len; i++) { \ + k = 0; \ + for (j = 0; i >> j; j++) \ + k |= ((i >> j) & 1) << trans[j]; \ + dptable[(i + offset) >> 2] |= \ + (internal[k + offset] & 3) << ((3 - (i&3)) << 1); \ + } + + FILL_TABLE1( 0, 256, trans0); + FILL_TABLE1( 256, 512, trans1); + FILL_TABLE1( 768, 2048, trans2); + FILL_TABLE1(2816, 4096, trans3); + + return; +} + + +/* + * Convert the table which controls the deterministic prediction + * process from the 1728 byte long DPTABLE format into the 6912 byte long + * internal format. + */ +void jbg_dppriv2int(char *internal, const unsigned char *dptable) +{ + int i, j, k; + int trans0[ 8] = { 1, 0, 3, 2, 7, 6, 5, 4 }; + int trans1[ 9] = { 1, 0, 3, 2, 8, 7, 6, 5, 4 }; + int trans2[11] = { 1, 0, 3, 2, 10, 9, 8, 7, 6, 5, 4 }; + int trans3[12] = { 1, 0, 3, 2, 11, 10, 9, 8, 7, 6, 5, 4 }; + +#define FILL_TABLE2(offset, len, trans) \ + for (i = 0; i < len; i++) { \ + k = 0; \ + for (j = 0; i >> j; j++) \ + k |= ((i >> j) & 1) << trans[j]; \ + internal[k + offset] = \ + (dptable[(i + offset) >> 2] >> ((3 - (i & 3)) << 1)) & 3; \ + } + + FILL_TABLE2( 0, 256, trans0); + FILL_TABLE2( 256, 512, trans1); + FILL_TABLE2( 768, 2048, trans2); + FILL_TABLE2(2816, 4096, trans3); + + return; +} + + +/* + * Encode one full BIE and pass the generated data to the specified + * call-back function + */ +void jbg_enc_out(struct jbg_enc_state *s) +{ + unsigned long bpl; + unsigned char buf[20]; + unsigned long xd, yd, y; + long ii[3], is[3], ie[3]; /* generic variables for the 3 nested loops */ + unsigned long stripe; + int layer, plane; + int order; + unsigned char dpbuf[1728]; + + /* some sanity checks */ + s->order &= JBG_HITOLO | JBG_SEQ | JBG_ILEAVE | JBG_SMID; + order = s->order & (JBG_SEQ | JBG_ILEAVE | JBG_SMID); + if (iindex[order][0] < 0) + s->order = order = JBG_SMID | JBG_ILEAVE; + if (s->options & JBG_DPON && s->dppriv != jbg_dptable) + s->options |= JBG_DPPRIV; + if (s->mx > MX_MAX) + s->mx = MX_MAX; + s->my = 0; + if (s->mx && s->mx < ((s->options & JBG_LRLTWO) ? 5U : 3U)) + s->mx = 0; + if (s->d > 255 || s->d < 0 || s->dh > s->d || s->dh < 0 || + s->dl < 0 || s->dl > s->dh || s->planes < 0 || s->planes > 255) + return; + /* prevent uint32 overflow: s->l0 * 2 ^ s->d < 2 ^ 32 */ + if (s->d > 31 || (s->d != 0 && s->l0 >= (1UL << (32 - s->d)))) + return; + if (s->yd1 < s->yd) + s->yd1 = s->yd; + if (s->yd1 > s->yd) + s->options |= JBG_VLENGTH; + + /* ensure correct zero padding of bitmap at the final byte of each line */ + if (s->xd & 7) { + bpl = jbg_ceil_half(s->xd, 3); /* bytes per line */ + for (plane = 0; plane < s->planes; plane++) + for (y = 0; y < s->yd; y++) + s->lhp[0][plane][y * bpl + bpl - 1] &= ~((1 << (8 - (s->xd & 7))) - 1); + } + + /* prepare BIH */ + buf[0] = s->dl; + buf[1] = s->dh; + buf[2] = s->planes; + buf[3] = 0; + xd = jbg_ceil_half(s->xd, s->d - s->dh); + yd = jbg_ceil_half(s->yd1, s->d - s->dh); + buf[4] = xd >> 24; + buf[5] = (xd >> 16) & 0xff; + buf[6] = (xd >> 8) & 0xff; + buf[7] = xd & 0xff; + buf[8] = yd >> 24; + buf[9] = (yd >> 16) & 0xff; + buf[10] = (yd >> 8) & 0xff; + buf[11] = yd & 0xff; + buf[12] = s->l0 >> 24; + buf[13] = (s->l0 >> 16) & 0xff; + buf[14] = (s->l0 >> 8) & 0xff; + buf[15] = s->l0 & 0xff; + buf[16] = s->mx; + buf[17] = s->my; + buf[18] = s->order; + buf[19] = s->options & 0x7f; + +#if 0 + /* sanitize L0 (if it was set to 0xffffffff for T.85-style NEWLEN tests) */ + if (s->l0 > (s->yd >> s->d)) + s->l0 = s->yd >> s->d; +#endif + + /* calculate number of stripes that will be required */ + s->stripes = jbg_stripes(s->l0, s->yd, s->d); + + /* allocate buffers for SDE pointers */ + if (s->sde == NULL) { + s->sde = (struct jbg_buf ****) + checked_malloc(s->stripes, sizeof(struct jbg_buf ***)); + for (stripe = 0; stripe < s->stripes; stripe++) { + s->sde[stripe] = (struct jbg_buf ***) + checked_malloc(s->d + 1, sizeof(struct jbg_buf **)); + for (layer = 0; layer < s->d + 1; layer++) { + s->sde[stripe][layer] = (struct jbg_buf **) + checked_malloc(s->planes, sizeof(struct jbg_buf *)); + for (plane = 0; plane < s->planes; plane++) + s->sde[stripe][layer][plane] = SDE_TODO; + } + } + } + + /* output BIH */ + s->data_out(buf, 20, s->file); + if ((s->options & (JBG_DPON | JBG_DPPRIV | JBG_DPLAST)) == + (JBG_DPON | JBG_DPPRIV)) { + /* write private table */ + jbg_int2dppriv(dpbuf, s->dppriv); + s->data_out(dpbuf, 1728, s->file); + } + +#if 0 + /* + * Encode everything first. This is a simple-minded alternative to + * all the tricky on-demand encoding logic in output_sde() for + * debugging purposes. + */ + for (layer = s->dh; layer >= s->dl; layer--) { + for (plane = 0; plane < s->planes; plane++) { + if (layer > 0) + resolution_reduction(s, plane, layer); + for (stripe = 0; stripe < s->stripes; stripe++) + encode_sde(s, stripe, layer, plane); + s->highres[plane] ^= 1; + } + } +#endif + + /* + * Generic loops over all SDEs. Which loop represents layer, plane and + * stripe depends on the option flags. + */ + + /* start and end value for each loop */ + is[iindex[order][STRIPE]] = 0; + ie[iindex[order][STRIPE]] = s->stripes - 1; + is[iindex[order][LAYER]] = s->dl; + ie[iindex[order][LAYER]] = s->dh; + is[iindex[order][PLANE]] = 0; + ie[iindex[order][PLANE]] = s->planes - 1; + + for (ii[0] = is[0]; ii[0] <= ie[0]; ii[0]++) + for (ii[1] = is[1]; ii[1] <= ie[1]; ii[1]++) + for (ii[2] = is[2]; ii[2] <= ie[2]; ii[2]++) { + + stripe = ii[iindex[order][STRIPE]]; + if (s->order & JBG_HITOLO) + layer = s->dh - (ii[iindex[order][LAYER]] - s->dl); + else + layer = ii[iindex[order][LAYER]]; + plane = ii[iindex[order][PLANE]]; + + /* output comment marker segment if there is any pending */ + if (s->comment) { + buf[0] = MARKER_ESC; + buf[1] = MARKER_COMMENT; + buf[2] = s->comment_len >> 24; + buf[3] = (s->comment_len >> 16) & 0xff; + buf[4] = (s->comment_len >> 8) & 0xff; + buf[5] = s->comment_len & 0xff; + s->data_out(buf, 6, s->file); + s->data_out(s->comment, s->comment_len, s->file); + s->comment = NULL; + } + + output_sde(s, stripe, layer, plane); + + /* + * When we generate a NEWLEN test case (s->yd1 > s->yd), output + * NEWLEN after last stripe if we have only a single + * resolution layer or plane (see ITU-T T.85 profile), otherwise + * output NEWLEN before last stripe. + */ + if (s->yd1 > s->yd && + (stripe == s->stripes - 1 || + (stripe == s->stripes - 2 && + (s->dl != s->dh || s->planes > 1)))) { + s->yd1 = s->yd; + yd = jbg_ceil_half(s->yd, s->d - s->dh); + buf[0] = MARKER_ESC; + buf[1] = MARKER_NEWLEN; + buf[2] = yd >> 24; + buf[3] = (yd >> 16) & 0xff; + buf[4] = (yd >> 8) & 0xff; + buf[5] = yd & 0xff; + s->data_out(buf, 6, s->file); +#ifdef DEBUG + fprintf(stderr, "NEWLEN: yd=%lu\n", yd); +#endif + if (stripe == s->stripes - 1) { + buf[1] = MARKER_SDNORM; + s->data_out(buf, 2, s->file); + } + } + + } + + return; +} + + +void jbg_enc_free(struct jbg_enc_state *s) +{ + unsigned long stripe; + int layer, plane; + +#ifdef DEBUG + fprintf(stderr, "jbg_enc_free(%p)\n", (void *) s); +#endif + + /* clear buffers for SDEs */ + if (s->sde) { + for (stripe = 0; stripe < s->stripes; stripe++) { + for (layer = 0; layer < s->d + 1; layer++) { + for (plane = 0; plane < s->planes; plane++) + if (s->sde[stripe][layer][plane] != SDE_DONE && + s->sde[stripe][layer][plane] != SDE_TODO) + jbg_buf_free(&s->sde[stripe][layer][plane]); + checked_free(s->sde[stripe][layer]); + } + checked_free(s->sde[stripe]); + } + checked_free(s->sde); + } + + /* clear free_list */ + jbg_buf_free(&s->free_list); + + /* clear memory for arithmetic encoder states */ + checked_free(s->s); + + /* clear memory for differential-layer typical prediction buffer */ + checked_free(s->tp); + + /* clear memory for adaptive template pixel offsets */ + checked_free(s->tx); + + /* clear lowres image buffers */ + if (s->lhp[1]) { + for (plane = 0; plane < s->planes; plane++) + checked_free(s->lhp[1][plane]); + checked_free(s->lhp[1]); + } + + /* clear buffer for index of highres image in lhp */ + checked_free(s->highres); + + return; +} + + +/* + * Convert the error codes used by jbg_dec_in() into an English ASCII string + */ +const char *jbg_strerror(int errnum) +{ + errnum >>= 4; + if (errnum < 0 || (unsigned) errnum >= sizeof(errmsg)/sizeof(errmsg[0])) + return "Unknown error code passed to jbg_strerror()"; + + return errmsg[errnum]; +} + + +/* + * The constructor for a decoder + */ +void jbg_dec_init(struct jbg_dec_state *s) +{ + s->order = 0; + s->d = -1; + s->bie_len = 0; + s->buf_len = 0; + s->dppriv = NULL; + s->xmax = 4294967295UL; + s->ymax = 4294967295UL; + s->dmax = 256; + s->s = NULL; + + return; +} + + +/* + * Specify a maximum image size for the decoder. If the JBIG file has + * the order bit ILEAVE, but not the bit SEQ set, then the decoder + * will abort to decode after the image has reached the maximal + * resolution layer which is still not wider than xmax or higher than + * ymax. + */ +void jbg_dec_maxsize(struct jbg_dec_state *s, unsigned long xmax, + unsigned long ymax) +{ + if (xmax > 0) s->xmax = xmax; + if (ymax > 0) s->ymax = ymax; + + return; +} + + +/* + * Decode the new len PSDC bytes to which data points and add them to + * the current stripe. Return the number of bytes which have actually + * been read (this will be less than len if a marker segment was + * part of the data or if the final byte was 0xff, in which case + * this code cannot determine whether we have a marker segment). + */ +static size_t decode_pscd(struct jbg_dec_state *s, unsigned char *data, + size_t len) +{ + unsigned long stripe; + unsigned int layer, plane; + unsigned long hl, ll, y, hx, hy, lx, ly, hbpl, lbpl; + unsigned char *hp, *lp1, *lp2, *p1, *q1; + register unsigned long line_h1, line_h2, line_h3; + register unsigned long line_l1, line_l2, line_l3; + struct jbg_ardec_state *se; + unsigned long x; + long o; + unsigned a; + int n; + int pix, cx = 0, slntp, tx; + + /* SDE loop variables */ + stripe = s->ii[iindex[s->order & 7][STRIPE]]; + layer = s->ii[iindex[s->order & 7][LAYER]]; + plane = s->ii[iindex[s->order & 7][PLANE]]; + + /* forward data to arithmetic decoder */ + se = s->s[plane] + layer - s->dl; + se->pscd_ptr = data; + se->pscd_end = data + len; + + /* number of lines per stripe in highres image */ + hl = s->l0 << layer; + /* number of lines per stripe in lowres image */ + ll = hl >> 1; + /* current line number in highres image */ + y = stripe * hl + s->i; + /* number of pixels in highres image */ + hx = jbg_ceil_half(s->xd, s->d - layer); + hy = jbg_ceil_half(s->yd, s->d - layer); + /* number of pixels in lowres image */ + lx = jbg_ceil_half(hx, 1); + ly = jbg_ceil_half(hy, 1); + /* bytes per line in highres and lowres image */ + hbpl = jbg_ceil_half(hx, 3); + lbpl = jbg_ceil_half(lx, 3); + /* pointer to highres and lowres image bytes */ + hp = s->lhp[ layer & 1][plane] + (stripe * hl + s->i) * hbpl + + (s->x >> 3); + lp2 = s->lhp[(layer-1) & 1][plane] + (stripe * ll + (s->i >> 1)) * lbpl + + (s->x >> 4); + lp1 = lp2 + lbpl; + + /* restore a few local variables */ + line_h1 = s->line_h1; + line_h2 = s->line_h2; + line_h3 = s->line_h3; + line_l1 = s->line_l1; + line_l2 = s->line_l2; + line_l3 = s->line_l3; + x = s->x; + +#ifdef DEBUG + if (s->x == 0 && s->i == 0 && s->pseudo) + fprintf(stderr, "decode_pscd(%p, %p, %ld): s/d/p = %2lu/%2u/%2u\n", + (void *) s, (void *) data, (long) len, stripe, layer, plane); +#endif + + if (s->x == 0 && s->i == 0 && + (stripe == 0 || s->reset[plane][layer - s->dl]) && s->pseudo) { + s->tx[plane][layer - s->dl] = s->ty[plane][layer - s->dl] = 0; + s->lntp[plane][layer - s->dl] = 1; + } + + if (layer == 0) { + + /* + * Decode lowest resolution layer + */ + + for (; s->i < hl && y < hy; s->i++, y++) { + + /* adaptive template changes */ + if (x == 0 && s->pseudo) + for (n = 0; n < s->at_moves; n++) + if (s->at_line[n] == s->i) { + s->tx[plane][layer - s->dl] = s->at_tx[n]; + s->ty[plane][layer - s->dl] = s->at_ty[n]; +#ifdef DEBUG + fprintf(stderr, "ATMOVE: line=%lu, tx=%d, ty=%d.\n", s->i, + s->tx[plane][layer - s->dl], s->ty[plane][layer - s->dl]); +#endif + } + tx = s->tx[plane][layer - s->dl]; + assert(tx >= 0); /* i.e., tx can safely be cast to unsigned */ + + /* typical prediction */ + if (s->options & JBG_TPBON && s->pseudo) { + slntp = arith_decode(se, (s->options & JBG_LRLTWO) ? TPB2CX : TPB3CX); + if (slntp < 0) + goto leave; + s->lntp[plane][layer - s->dl] = + !(slntp ^ s->lntp[plane][layer - s->dl]); + if (!s->lntp[plane][layer - s->dl]) { + /* this line is 'typical' (i.e. identical to the previous one) */ + p1 = hp; + if (s->i == 0 && (stripe == 0 || s->reset[plane][layer - s->dl])) + while (p1 < hp + hbpl) *p1++ = 0; + else { + q1 = hp - hbpl; + while (q1 < hp) *p1++ = *q1++; + } + hp += hbpl; + continue; + } + /* this line is 'not typical' and has to be coded completely */ + } + s->pseudo = 0; + + /* + * Layout of the variables line_h1, line_h2, line_h3, which contain + * as bits the neighbour pixels of the currently decoded pixel X: + * + * 76543210 76543210 76543210 76543210 line_h3 + * 76543210 76543210 76543210 76543210 line_h2 + * 76543210 76543210 76543210 76543210 X line_h1 + */ + + if (x == 0) { + line_h1 = line_h2 = line_h3 = 0; + if (s->i > 0 || (y > 0 && !s->reset[plane][layer - s->dl])) + line_h2 = (long)*(hp - hbpl) << 8; + if (s->i > 1 || (y > 1 && !s->reset[plane][layer - s->dl])) + line_h3 = (long)*(hp - hbpl - hbpl) << 8; + } + + /* + * Another tiny JBIG standard bug: + * + * While implementing the line_h3 handling here, I discovered + * another problem with the ITU-T T.82(1993 E) specification. + * This might be a somewhat pathological case, however. The + * standard is unclear about how a decoder should behave in the + * following situation: + * + * Assume we are in layer 0 and all stripes are single lines + * (L0=1 allowed by table 9). We are now decoding the first (and + * only) line of the third stripe. Assume, the first stripe was + * terminated by SDRST and the second stripe was terminated by + * SDNORM. While decoding the only line of the third stripe with + * the three-line template, we need access to pixels from the + * previous two stripes. We know that the previous stripe + * terminated with SDNROM, so we access the pixel from the + * second stripe. But do we have to replace the pixels from the + * first stripe by background pixels, because this stripe ended + * with SDRST? The standard, especially clause 6.2.5 does never + * mention this case, so the behaviour is undefined here. My + * current implementation remembers only the marker used to + * terminate the previous stripe. In the above example, the + * pixels of the first stripe are accessed despite the fact that + * this stripe ended with SDRST. An alternative (only slightly + * more complicated) implementation would be to remember the end + * marker (SDNORM or SDRST) of the previous two stripes in a + * plane/layer and to act accordingly when accessing the two + * previous lines. What am I supposed to do here? + * + * As the standard is unclear about the correct behaviour in the + * situation of the above example, I strongly suggest to avoid + * the following situation while encoding data with JBIG: + * + * LRLTWO = 0, L0=1 and both SDNORM and SDRST appear in layer 0. + * + * I guess that only a very few if any encoders will switch + * between SDNORM and SDRST, so let us hope that this ambiguity + * in the standard will never cause any interoperability + * problems. + * + * Markus Kuhn -- 1995-04-30 + */ + + /* decode line */ + while (x < hx) { + if ((x & 7) == 0) { + if (x < hbpl * 8 - 8 && + (s->i > 0 || (y > 0 && !s->reset[plane][layer - s->dl]))) { + line_h2 |= *(hp - hbpl + 1); + if (s->i > 1 || (y > 1 && !s->reset[plane][layer - s->dl])) + line_h3 |= *(hp - hbpl - hbpl + 1); + } + } + if (s->options & JBG_LRLTWO) { + /* two line template */ + do { + if (tx) { + if ((unsigned) tx > x) + a = 0; + else if (tx < 8) + a = ((line_h1 >> (tx - 5)) & 0x010); + else { + o = (x - tx) - (x & ~7L); + a = (hp[o >> 3] >> (7 - (o & 7))) & 1; + a <<= 4; + } + assert(tx > 31 || + a == ((line_h1 >> (tx - 5)) & 0x010)); + pix = arith_decode(se, (((line_h2 >> 9) & 0x3e0) | a | + (line_h1 & 0x00f))); + } else + pix = arith_decode(se, (((line_h2 >> 9) & 0x3f0) | + (line_h1 & 0x00f))); + if (pix < 0) + goto leave; + line_h1 = (line_h1 << 1) | pix; + line_h2 <<= 1; + } while ((++x & 7) && x < hx); + } else { + /* three line template */ + do { + if (tx) { + if ((unsigned) tx > x) + a = 0; + else if (tx < 8) + a = ((line_h1 >> (tx - 3)) & 0x004); + else { + o = (x - tx) - (x & ~7L); + a = (hp[o >> 3] >> (7 - (o & 7))) & 1; + a <<= 2; + } + assert(tx > 31 || + a == ((line_h1 >> (tx - 3)) & 0x004)); + pix = arith_decode(se, (((line_h3 >> 7) & 0x380) | + ((line_h2 >> 11) & 0x078) | a | + (line_h1 & 0x003))); + } else + pix = arith_decode(se, (((line_h3 >> 7) & 0x380) | + ((line_h2 >> 11) & 0x07c) | + (line_h1 & 0x003))); + if (pix < 0) + goto leave; + + line_h1 = (line_h1 << 1) | pix; + line_h2 <<= 1; + line_h3 <<= 1; + } while ((++x & 7) && x < hx); + } /* if (s->options & JBG_LRLTWO) */ + *hp++ = line_h1; + } /* while */ + *(hp - 1) <<= hbpl * 8 - hx; + x = 0; + s->pseudo = 1; + } /* for (i = ...) */ + + } else { + + /* + * Decode differential layer + */ + + for (; s->i < hl && y < hy; s->i++, y++) { + + /* adaptive template changes */ + if (x == 0) + for (n = 0; n < s->at_moves; n++) + if (s->at_line[n] == s->i) { + s->tx[plane][layer - s->dl] = s->at_tx[n]; + s->ty[plane][layer - s->dl] = s->at_ty[n]; +#ifdef DEBUG + fprintf(stderr, "ATMOVE: line=%lu, tx=%d, ty=%d.\n", s->i, + s->tx[plane][layer - s->dl], s->ty[plane][layer - s->dl]); +#endif + } + tx = s->tx[plane][layer - s->dl]; + + /* handle lower border of low-resolution image */ + if ((s->i >> 1) >= ll - 1 || (y >> 1) >= ly - 1) + lp1 = lp2; + + /* typical prediction */ + if ((s->options & JBG_TPDON) && s->pseudo) { + if ((s->lntp[plane][layer - s->dl] = arith_decode(se, TPDCX)) < 0) + goto leave; + } + s->pseudo = 0; + + /* + * Layout of the variables line_h1, line_h2, line_h3, which contain + * as bits the high resolution neighbour pixels of the currently + * decoded highres pixel X: + * + * 76543210 76543210 76543210 76543210 line_h3 + * 76543210 76543210 76543210 76543210 line_h2 + * 76543210 76543210 76543210 76543210 X line_h1 + * + * Layout of the variables line_l1, line_l2, line_l3, which contain + * the low resolution pixels near the currently decoded pixel as bits. + * The lowres pixel in which the currently coded highres pixel is + * located is marked as Y: + * + * 76543210 76543210 76543210 76543210 line_l3 + * 76543210 76543210 Y6543210 76543210 line_l2 + * 76543210 76543210 76543210 76543210 line_l1 + */ + + + if (x == 0) { + line_h1 = line_h2 = line_h3 = line_l1 = line_l2 = line_l3 = 0; + if (s->i > 0 || (y > 0 && !s->reset[plane][layer - s->dl])) { + line_h2 = (long)*(hp - hbpl) << 8; + if (s->i > 1 || (y > 1 && !s->reset[plane][layer - s->dl])) + line_h3 = (long)*(hp - hbpl - hbpl) << 8; + } + if (s->i > 1 || (y > 1 && !s->reset[plane][layer-s->dl])) + line_l3 = (long)*(lp2 - lbpl) << 8; + line_l2 = (long)*lp2 << 8; + line_l1 = (long)*lp1 << 8; + } + + /* decode line */ + while (x < hx) { + if ((x & 15) == 0) + if ((x >> 1) < lbpl * 8 - 8) { + line_l1 |= *(lp1 + 1); + line_l2 |= *(lp2 + 1); + if (s->i > 1 || + (y > 1 && !s->reset[plane][layer - s->dl])) + line_l3 |= *(lp2 - lbpl + 1); + } + do { + + assert(hp - (s->lhp[ layer &1][plane] + (stripe * hl + s->i) + * hbpl) == (ptrdiff_t) x >> 3); + assert(lp2 - (s->lhp[(layer-1) &1][plane] + (stripe * ll + (s->i>>1)) + * lbpl) == (ptrdiff_t) x >> 4); + + if ((x & 7) == 0) + if (x < hbpl * 8 - 8) { + if (s->i > 0 || (y > 0 && !s->reset[plane][layer - s->dl])) { + line_h2 |= *(hp + 1 - hbpl); + if (s->i > 1 || (y > 1 && !s->reset[plane][layer - s->dl])) + line_h3 |= *(hp + 1 - hbpl - hbpl); + } + } + do { + if (!s->lntp[plane][layer - s->dl]) + cx = (((line_l3 >> 14) & 0x007) | + ((line_l2 >> 11) & 0x038) | + ((line_l1 >> 8) & 0x1c0)); + if (!s->lntp[plane][layer - s->dl] && + (cx == 0x000 || cx == 0x1ff)) { + /* pixels are typical and have not to be decoded */ + do { + line_h1 = (line_h1 << 1) | (cx & 1); + } while ((++x & 1) && x < hx); + line_h2 <<= 2; line_h3 <<= 2; + } else + do { + + /* deterministic prediction */ + if (s->options & JBG_DPON) + if ((y & 1) == 0) + if ((x & 1) == 0) + /* phase 0 */ + pix = s->dppriv[((line_l3 >> 15) & 0x003) | + ((line_l2 >> 13) & 0x00c) | + ((line_h1 << 4) & 0x010) | + ((line_h2 >> 9) & 0x0e0)]; + else + /* phase 1 */ + pix = s->dppriv[(((line_l3 >> 15) & 0x003) | + ((line_l2 >> 13) & 0x00c) | + ((line_h1 << 4) & 0x030) | + ((line_h2 >> 9) & 0x1c0)) + 256]; + else + if ((x & 1) == 0) + /* phase 2 */ + pix = s->dppriv[(((line_l3 >> 15) & 0x003) | + ((line_l2 >> 13) & 0x00c) | + ((line_h1 << 4) & 0x010) | + ((line_h2 >> 9) & 0x0e0) | + ((line_h3 >> 6) & 0x700)) + 768]; + else + /* phase 3 */ + pix = s->dppriv[(((line_l3 >> 15) & 0x003) | + ((line_l2 >> 13) & 0x00c) | + ((line_h1 << 4) & 0x030) | + ((line_h2 >> 9) & 0x1c0) | + ((line_h3 >> 6) & 0xe00)) + 2816]; + else + pix = 2; + + if (pix & 2) { + if (tx) + cx = ((line_h1 & 0x003) | + (((line_h1 << 2) >> (tx - 3)) & 0x010) | + ((line_h2 >> 12) & 0x00c) | + ((line_h3 >> 10) & 0x020)); + else + cx = ((line_h1 & 0x003) | + ((line_h2 >> 12) & 0x01c) | + ((line_h3 >> 10) & 0x020)); + if (x & 1) + cx |= (((line_l2 >> 8) & 0x0c0) | + ((line_l1 >> 6) & 0x300)) | (1UL << 10); + else + cx |= (((line_l2 >> 9) & 0x0c0) | + ((line_l1 >> 7) & 0x300)); + cx |= (y & 1) << 11; + + pix = arith_decode(se, cx); + if (pix < 0) + goto leave; + } + + line_h1 = (line_h1 << 1) | pix; + line_h2 <<= 1; + line_h3 <<= 1; + + } while ((++x & 1) && x < hx); + line_l1 <<= 1; line_l2 <<= 1; line_l3 <<= 1; + } while ((x & 7) && x < hx); + *hp++ = line_h1; + } while ((x & 15) && x < hx); + ++lp1; + ++lp2; + } /* while */ + x = 0; + + *(hp - 1) <<= hbpl * 8 - hx; + if ((s->i & 1) == 0) { + /* low resolution pixels are used twice */ + lp1 -= lbpl; + lp2 -= lbpl; + } else + s->pseudo = 1; + + } /* for (i = ...) */ + + } + + leave: + + /* save a few local variables */ + s->line_h1 = line_h1; + s->line_h2 = line_h2; + s->line_h3 = line_h3; + s->line_l1 = line_l1; + s->line_l2 = line_l2; + s->line_l3 = line_l3; + s->x = x; + + return se->pscd_ptr - data; +} + + +/* + * Provide to the decoder a new BIE fragment of len bytes starting at data. + * + * Unless cnt is NULL, *cnt will contain the number of actually read bytes + * on return. + * + * Normal return values: + * + * JBG_EAGAIN All data bytes provided so far have been processed + * (*cnt == len) but the end of the data stream has + * not yet been recognized. Call the function again + * with additional BIE bytes. + * JBG_EOK The function has reached the end of a and + * a full image has been decoded. The function can + * be called again with data from the next BIE, if + * there exists one, in order to get to a higher + * resolution layer. The remaining len - *cnt bytes + * of the previous data block will then have to passed + * to this function again if len > *cnt. + * JBG_EOK_INTR Parsing the BIE has been interrupted as had been + * requested by a jbg_dec_maxsize() specification. + * This function can be called again with the + * rest of the BIE to continue the decoding process. + * The remaining len - *cnt bytes of the previous + * data block will then have to be passed to this + * function again if len > *cnt. + * + * Any other return value indicates that the decoding process was + * aborted by a serious problem and the only function you can then + * still call is jbg_dec_free() in order to remove the mess, and + * jbg85_strerror() to find out what to tell the user. (Looking at the + * least significant bits of the return value will provide additional + * information by identifying which test exactly has failed.) + */ +int jbg_dec_in(struct jbg_dec_state *s, unsigned char *data, size_t len, + size_t *cnt) +{ + int i, j, required_length; + unsigned long x, y; + unsigned long is[3], ie[3]; + size_t dummy_cnt; + unsigned char *dppriv; + + if (!cnt) cnt = &dummy_cnt; + *cnt = 0; + if (len < 1) return JBG_EAGAIN; + + /* read in 20-byte BIH */ + if (s->bie_len < 20) { + while (s->bie_len < 20 && *cnt < len) + s->buffer[s->bie_len++] = data[(*cnt)++]; + if (s->bie_len < 20) + return JBG_EAGAIN; + /* test whether this looks like a valid JBIG header at all */ + if (s->buffer[1] < s->buffer[0]) + return JBG_EINVAL | 1; + if (s->buffer[3] != 0) return JBG_EINVAL | 2; /* padding != 0 */ + if ((s->buffer[18] & 0xf0) != 0) return JBG_EINVAL | 3; /* padding != 0 */ + if ((s->buffer[19] & 0x80) != 0) return JBG_EINVAL | 4; /* padding != 0 */ + if (s->buffer[0] != s->d + 1) + return JBG_ENOCONT | 1; + s->dl = s->buffer[0]; + s->d = s->buffer[1]; + if (s->dl == 0) + s->planes = s->buffer[2]; + else + if (s->planes != s->buffer[2]) + return JBG_ENOCONT | 2; + x = (((long) s->buffer[ 4] << 24) | ((long) s->buffer[ 5] << 16) | + ((long) s->buffer[ 6] << 8) | (long) s->buffer[ 7]); + y = (((long) s->buffer[ 8] << 24) | ((long) s->buffer[ 9] << 16) | + ((long) s->buffer[10] << 8) | (long) s->buffer[11]); + if (s->dl != 0 && ((s->xd << (s->d - s->dl + 1)) != x && + (s->yd << (s->d - s->dl + 1)) != y)) + return JBG_ENOCONT | 3; + s->xd = x; + s->yd = y; + s->l0 = (((long) s->buffer[12] << 24) | ((long) s->buffer[13] << 16) | + ((long) s->buffer[14] << 8) | (long) s->buffer[15]); + /* ITU-T T.85 trick not directly supported by decoder; for full + * T.85 compatibility with respect to all NEWLEN marker scenarios, + * preprocess BIE with jbg_newlen() before passing it to the decoder, + * or consider using the decoder found in jbig85.c instead. */ + if (s->yd == 0xffffffff) + return JBG_EIMPL | 1; + if (!s->planes) return JBG_EINVAL | 5; + if (!s->xd) return JBG_EINVAL | 6; + if (!s->yd) return JBG_EINVAL | 7; + if (!s->l0) return JBG_EINVAL | 8; + /* prevent uint32 overflow: s->l0 * 2 ^ s->d < 2 ^ 32 */ + if (s->d > 31) + return JBG_EIMPL | 2; + if ((s->d != 0 && s->l0 >= (1UL << (32 - s->d)))) + return JBG_EIMPL | 3; + s->mx = s->buffer[16]; + if (s->mx > 127) + return JBG_EINVAL | 9; + s->my = s->buffer[17]; +#if 0 + if (s->my > 0) + return JBG_EIMPL | 4; +#endif + s->order = s->buffer[18]; + if (iindex[s->order & 7][0] < 0) + return JBG_EINVAL | 10; + /* HITOLO and SEQ currently not yet implemented */ + if (s->dl != s->d && (s->order & JBG_HITOLO || s->order & JBG_SEQ)) + return JBG_EIMPL | 5; + s->options = s->buffer[19]; + + /* calculate number of stripes that will be required */ + s->stripes = jbg_stripes(s->l0, s->yd, s->d); + + /* some initialization */ + s->ii[iindex[s->order & 7][STRIPE]] = 0; + s->ii[iindex[s->order & 7][LAYER]] = s->dl; + s->ii[iindex[s->order & 7][PLANE]] = 0; + if (s->dl == 0) { + s->s = (struct jbg_ardec_state **) + checked_malloc(s->planes, sizeof(struct jbg_ardec_state *)); + s->tx = (int **) checked_malloc(s->planes, sizeof(int *)); + s->ty = (int **) checked_malloc(s->planes, sizeof(int *)); + s->reset = (int **) checked_malloc(s->planes, sizeof(int *)); + s->lntp = (int **) checked_malloc(s->planes, sizeof(int *)); + s->lhp[0] = (unsigned char **) + checked_malloc(s->planes, sizeof(unsigned char *)); + s->lhp[1] = (unsigned char **) + checked_malloc(s->planes, sizeof(unsigned char *)); + for (i = 0; i < s->planes; i++) { + s->s[i] = (struct jbg_ardec_state *) + checked_malloc(s->d - s->dl + 1, sizeof(struct jbg_ardec_state)); + s->tx[i] = (int *) checked_malloc(s->d - s->dl + 1, sizeof(int)); + s->ty[i] = (int *) checked_malloc(s->d - s->dl + 1, sizeof(int)); + s->reset[i] = (int *) checked_malloc(s->d - s->dl + 1, sizeof(int)); + s->lntp[i] = (int *) checked_malloc(s->d - s->dl + 1, sizeof(int)); + s->lhp[ s->d & 1][i] = (unsigned char *) + checked_malloc(s->yd, jbg_ceil_half(s->xd, 3)); + s->lhp[(s->d-1) & 1][i] = (unsigned char *) + checked_malloc(jbg_ceil_half(s->yd, 1), jbg_ceil_half(s->xd, 1+3)); + } + } else { + for (i = 0; i < s->planes; i++) { + s->s[i] = (struct jbg_ardec_state *) + checked_realloc(s->s[i], s->d - s->dl + 1, + sizeof(struct jbg_ardec_state)); + s->tx[i] = (int *) checked_realloc(s->tx[i], + s->d - s->dl + 1, sizeof(int)); + s->ty[i] = (int *) checked_realloc(s->ty[i], + s->d - s->dl + 1, sizeof(int)); + s->reset[i] = (int *) checked_realloc(s->reset[i], + s->d - s->dl + 1, sizeof(int)); + s->lntp[i] = (int *) checked_realloc(s->lntp[i], + s->d - s->dl + 1, sizeof(int)); + s->lhp[ s->d & 1][i] = (unsigned char *) + checked_realloc(s->lhp[ s->d & 1][i], + s->yd, jbg_ceil_half(s->xd, 3)); + s->lhp[(s->d-1) & 1][i] = (unsigned char *) + checked_realloc(s->lhp[(s->d-1) & 1][i], + jbg_ceil_half(s->yd, 1), jbg_ceil_half(s->xd, 1+3)); + } + } + for (i = 0; i < s->planes; i++) + for (j = 0; j <= s->d - s->dl; j++) + arith_decode_init(s->s[i] + j, 0); + if (s->dl == 0 || (s->options & JBG_DPON && !(s->options & JBG_DPPRIV))) + s->dppriv = jbg_dptable; + s->comment_skip = 0; + s->buf_len = 0; + s->x = 0; + s->i = 0; + s->pseudo = 1; + s->at_moves = 0; + } + + /* read in DPTABLE */ + if (s->bie_len < 20 + 1728 && + (s->options & (JBG_DPON | JBG_DPPRIV | JBG_DPLAST)) == + (JBG_DPON | JBG_DPPRIV)) { + assert(s->bie_len >= 20); + if (!s->dppriv || s->dppriv == jbg_dptable) + s->dppriv = (char *) checked_malloc(1728, sizeof(char)); + while (s->bie_len < 20 + 1728 && *cnt < len) + s->dppriv[s->bie_len++ - 20] = data[(*cnt)++]; + if (s->bie_len < 20 + 1728) + return JBG_EAGAIN; + dppriv = (unsigned char *) s->dppriv; + s->dppriv = (char *) checked_malloc(6912, sizeof(char)); + jbg_dppriv2int(s->dppriv, dppriv); + checked_free(dppriv); + } + + /* + * BID processing loop + */ + + while (*cnt < len) { + + /* process floating marker segments */ + + /* skip COMMENT contents */ + if (s->comment_skip) { + if (s->comment_skip <= len - *cnt) { + *cnt += s->comment_skip; + s->comment_skip = 0; + } else { + s->comment_skip -= len - *cnt; + *cnt = len; + } + continue; + } + + /* load complete marker segments into s->buffer for processing */ + if (s->buf_len > 0) { + assert(s->buffer[0] == MARKER_ESC); + while (s->buf_len < 2 && *cnt < len) + s->buffer[s->buf_len++] = data[(*cnt)++]; + if (s->buf_len < 2) continue; + switch (s->buffer[1]) { + case MARKER_COMMENT: required_length = 6; break; + case MARKER_ATMOVE: required_length = 8; break; + case MARKER_NEWLEN: required_length = 6; break; + case MARKER_ABORT: + case MARKER_SDNORM: + case MARKER_SDRST: required_length = 2; break; + case MARKER_STUFF: + /* forward stuffed 0xff to arithmetic decoder */ + s->buf_len = 0; + decode_pscd(s, s->buffer, 2); + continue; + default: + return JBG_EMARKER; + } + while (s->buf_len < required_length && *cnt < len) + s->buffer[s->buf_len++] = data[(*cnt)++]; + if (s->buf_len < required_length) continue; + /* now the buffer is filled with exactly one marker segment */ + switch (s->buffer[1]) { + case MARKER_COMMENT: + s->comment_skip = + (((long) s->buffer[2] << 24) | ((long) s->buffer[3] << 16) | + ((long) s->buffer[4] << 8) | (long) s->buffer[5]); + break; + case MARKER_ATMOVE: + if (s->at_moves < JBG_ATMOVES_MAX) { + s->at_line[s->at_moves] = + (((long) s->buffer[2] << 24) | ((long) s->buffer[3] << 16) | + ((long) s->buffer[4] << 8) | (long) s->buffer[5]); + s->at_tx[s->at_moves] = (signed char) s->buffer[6]; + s->at_ty[s->at_moves] = s->buffer[7]; + if (s->at_tx[s->at_moves] < - (int) s->mx || + s->at_tx[s->at_moves] > (int) s->mx || + s->at_ty[s->at_moves] > (int) s->my || + (s->at_ty[s->at_moves] == 0 && s->at_tx[s->at_moves] < 0)) + return JBG_EINVAL | 11; + if (s->at_ty[s->at_moves] != 0) + return JBG_EIMPL | 6; + s->at_moves++; + } else + return JBG_EIMPL | 7; /* more than JBG_ATMOVES_MAX ATMOVES */ + break; + case MARKER_NEWLEN: + y = (((long) s->buffer[2] << 24) | ((long) s->buffer[3] << 16) | + ((long) s->buffer[4] << 8) | (long) s->buffer[5]); + if (y > s->yd) return JBG_EINVAL | 12; + if (!(s->options & JBG_VLENGTH)) return JBG_EINVAL | 13; + s->yd = y; + /* calculate again number of stripes that will be required */ + s->stripes = jbg_stripes(s->l0, s->yd, s->d); + break; + case MARKER_ABORT: + return JBG_EABORT; + + case MARKER_SDNORM: + case MARKER_SDRST: + /* decode final pixels based on trailing zero bytes */ + decode_pscd(s, s->buffer, 2); + + arith_decode_init(s->s[s->ii[iindex[s->order & 7][PLANE]]] + + s->ii[iindex[s->order & 7][LAYER]] - s->dl, + s->ii[iindex[s->order & 7][STRIPE]] != s->stripes - 1 + && s->buffer[1] != MARKER_SDRST); + + s->reset[s->ii[iindex[s->order & 7][PLANE]]] + [s->ii[iindex[s->order & 7][LAYER]] - s->dl] = + (s->buffer[1] == MARKER_SDRST); + + /* prepare for next SDE */ + s->x = 0; + s->i = 0; + s->pseudo = 1; + s->at_moves = 0; + + /* increment layer/stripe/plane loop variables */ + /* start and end value for each loop: */ + is[iindex[s->order & 7][STRIPE]] = 0; + ie[iindex[s->order & 7][STRIPE]] = s->stripes - 1; + is[iindex[s->order & 7][LAYER]] = s->dl; + ie[iindex[s->order & 7][LAYER]] = s->d; + is[iindex[s->order & 7][PLANE]] = 0; + ie[iindex[s->order & 7][PLANE]] = s->planes - 1; + i = 2; /* index to innermost loop */ + do { + j = 0; /* carry flag */ + if (++s->ii[i] > ie[i]) { + /* handling overflow of loop variable */ + j = 1; + if (i > 0) + s->ii[i] = is[i]; + } + } while (--i >= 0 && j); + + s->buf_len = 0; + + /* check whether this have been all SDEs */ + if (j) { +#ifdef DEBUG + fprintf(stderr, "This was the final SDE in this BIE, " + "%ld bytes left.\n", (long) (len - *cnt)); +#endif + s->bie_len = 0; + return JBG_EOK; + } + + /* check whether we have to abort because of xmax/ymax */ + if (iindex[s->order & 7][LAYER] == 0 && i < 0) { + /* LAYER is the outermost loop and we have just gone to next layer */ + if (jbg_ceil_half(s->xd, s->d - s->ii[0]) > s->xmax || + jbg_ceil_half(s->yd, s->d - s->ii[0]) > s->ymax) { + s->xmax = 4294967295UL; + s->ymax = 4294967295UL; + return JBG_EOK_INTR; + } + if (s->ii[0] > (unsigned long) s->dmax) { + s->dmax = 256; + return JBG_EOK_INTR; + } + } + + break; + } + s->buf_len = 0; + + } else if (data[*cnt] == MARKER_ESC) + s->buffer[s->buf_len++] = data[(*cnt)++]; + + else { + + /* we have found PSCD bytes */ + *cnt += decode_pscd(s, data + *cnt, len - *cnt); + if (*cnt < len && data[*cnt] != 0xff) { +#ifdef DEBUG + fprintf(stderr, "PSCD was longer than expected, unread bytes " + "%02x %02x %02x %02x ...\n", data[*cnt], data[*cnt+1], + data[*cnt+2], data[*cnt+3]); +#endif + return JBG_EINVAL | 14; + } + + } + } /* of BID processing loop 'while (*cnt < len) ...' */ + + return JBG_EAGAIN; +} + + +/* + * After jbg_dec_in() returned JBG_EOK or JBG_EOK_INTR, you can call this + * function in order to find out the width of the image. Returns 0 if + * there is no image available yet. + */ +unsigned long jbg_dec_getwidth(const struct jbg_dec_state *s) +{ + if (s->d < 0) + return 0; + if (iindex[s->order & 7][LAYER] == 0) { + if (s->ii[0] < 1) + return 0; + else + return jbg_ceil_half(s->xd, s->d - (s->ii[0] - 1)); + } + + return s->xd; +} + + +/* + * After jbg_dec_in() returned JBG_EOK or JBG_EOK_INTR, you can call this + * function in order to find out the height of the image. Returns 0 if + * there is no image available yet. + */ +unsigned long jbg_dec_getheight(const struct jbg_dec_state *s) +{ + if (s->d < 0) + return 0; + if (iindex[s->order & 7][LAYER] == 0) { + if (s->ii[0] < 1) + return 0; + else + return jbg_ceil_half(s->yd, s->d - (s->ii[0] - 1)); + } + + return s->yd; +} + + +/* + * After jbg_dec_in() returned JBG_EOK or JBG_EOK_INTR, you can call this + * function in order to get a pointer to the image. Returns NULL if + * there is no image available yet. + */ +unsigned char *jbg_dec_getimage(const struct jbg_dec_state *s, int plane) +{ + if (s->d < 0) + return NULL; + if (iindex[s->order & 7][LAYER] == 0) { + if (s->ii[0] < 1) + return NULL; + else + return s->lhp[(s->ii[0] - 1) & 1][plane]; + } + + return s->lhp[s->d & 1][plane]; +} + + +/* + * After jbg_dec_in() returned JBG_EOK or JBG_EOK_INTR, you can call + * this function in order to find out the size in bytes of one + * bitplane of the image. + */ +unsigned long jbg_dec_getsize(const struct jbg_dec_state *s) +{ + if (s->d < 0) + return 0; + if (iindex[s->order & 7][LAYER] == 0) { + if (s->ii[0] < 1) + return 0; + else + return + jbg_ceil_half(s->xd, s->d - (s->ii[0] - 1) + 3) * /* overflow risk? */ + jbg_ceil_half(s->yd, s->d - (s->ii[0] - 1)); + } + + return jbg_ceil_half(s->xd, 3) * s->yd; +} + + +/* + * After jbg_dec_in() returned JBG_EOK or JBG_EOK_INTR, you can call + * this function in order to find out the size of the image that you + * can retrieve with jbg_merge_planes(). + */ +unsigned long jbg_dec_getsize_merged(const struct jbg_dec_state *s) +{ + if (s->d < 0) + return 0; + if (iindex[s->order & 7][LAYER] == 0) { + if (s->ii[0] < 1) + return 0; + else + return + jbg_ceil_half(s->xd, s->d - (s->ii[0] - 1)) * /* overflow risk? */ + jbg_ceil_half(s->yd, s->d - (s->ii[0] - 1)) * + ((s->planes + 7) / 8); + } + + return s->xd * s->yd * ((s->planes + 7) / 8); +} + + +/* + * The destructor function which releases any resources obtained by the + * other decoder functions. + */ +void jbg_dec_free(struct jbg_dec_state *s) +{ + int i; + + if (s->d < 0 || s->s == NULL) + return; + s->d = -2; + + for (i = 0; i < s->planes; i++) { + checked_free(s->s[i]); + checked_free(s->tx[i]); + checked_free(s->ty[i]); + checked_free(s->reset[i]); + checked_free(s->lntp[i]); + checked_free(s->lhp[0][i]); + checked_free(s->lhp[1][i]); + } + + checked_free(s->s); + checked_free(s->tx); + checked_free(s->ty); + checked_free(s->reset); + checked_free(s->lntp); + checked_free(s->lhp[0]); + checked_free(s->lhp[1]); + if (s->dppriv && s->dppriv != jbg_dptable) + checked_free(s->dppriv); + + s->s = NULL; + + return; +} + + +/* + * Split bigendian integer pixel field into separate bit planes. In the + * src array, every pixel is represented by a ((has_planes + 7) / 8) byte + * long word, most significant byte first. While has_planes describes + * the number of used bits per pixel in the source image, encode_plane + * is the number of most significant bits among those that we + * actually transfer to dest. + */ +void jbg_split_planes(unsigned long x, unsigned long y, int has_planes, + int encode_planes, + const unsigned char *src, unsigned char **dest, + int use_graycode) +{ + unsigned long bpl = jbg_ceil_half(x, 3); /* bytes per line in dest plane */ + unsigned long line, i; + unsigned k = 8; + int p; + unsigned prev; /* previous *src byte shifted by 8 bit to the left */ + register int bits, msb = has_planes - 1; + int bitno; + + /* sanity checks */ + if (encode_planes > has_planes) + encode_planes = has_planes; + use_graycode = use_graycode != 0 && encode_planes > 1; + + for (p = 0; p < encode_planes; p++) + memset(dest[p], 0, bpl * y); + + for (line = 0; line < y; line++) { /* lines loop */ + for (i = 0; i * 8 < x; i++) { /* dest bytes loop */ + for (k = 0; k < 8 && i * 8 + k < x; k++) { /* pixel loop */ + prev = 0; + for (p = 0; p < encode_planes; p++) { /* bit planes loop */ + /* calculate which bit in *src do we want */ + bitno = (msb - p) & 7; + /* put this bit with its left neighbor right adjusted into bits */ + bits = (prev | *src) >> bitno; + /* go to next *src byte, but keep old */ + if (bitno == 0) + prev = *src++ << 8; + /* make space for inserting new bit */ + dest[p][bpl * line + i] <<= 1; + /* insert bit, if requested apply Gray encoding */ + dest[p][bpl * line + i] |= (bits ^ (use_graycode & (bits>>1))) & 1; + /* + * Theorem: Let b(n),...,b(1),b(0) be the digits of a + * binary word and let g(n),...,g(1),g(0) be the digits of the + * corresponding Gray code word, then g(i) = b(i) xor b(i+1). + */ + } + /* skip unused *src bytes */ + for (;p < has_planes; p++) + if (((msb - p) & 7) == 0) + src++; + } + } + for (p = 0; p < encode_planes; p++) /* right padding loop */ + dest[p][bpl * (line + 1) - 1] <<= 8 - k; + } + + return; +} + +/* + * Merge the separate bit planes decoded by the JBIG decoder into an + * integer pixel field. This is essentially the counterpart to + * jbg_split_planes(). + */ +void jbg_dec_merge_planes(const struct jbg_dec_state *s, int use_graycode, + void (*data_out)(unsigned char *start, size_t len, + void *file), void *file) +{ +#define BUFLEN 4096 + unsigned long bpl, line, i; + unsigned k = 8; + int p; + unsigned char buf[BUFLEN]; + unsigned char *bp = buf; + unsigned char **src; + unsigned long x, y; + unsigned v; + + /* sanity check */ + use_graycode = use_graycode != 0; + + x = jbg_dec_getwidth(s); + y = jbg_dec_getheight(s); + if (x == 0 || y == 0) + return; + bpl = jbg_ceil_half(x, 3); /* bytes per line in src plane */ + + if (iindex[s->order & 7][LAYER] == 0) + if (s->ii[0] < 1) + return; + else + src = s->lhp[(s->ii[0] - 1) & 1]; + else + src = s->lhp[s->d & 1]; + + for (line = 0; line < y; line++) { /* lines loop */ + for (i = 0; i * 8 < x; i++) { /* src bytes loop */ + for (k = 0; k < 8 && i * 8 + k < x; k++) { /* pixel loop */ + v = 0; + for (p = 0; p < s->planes;) { /* dest bytes loop */ + do { + v = (v << 1) | + (((src[p][bpl * line + i] >> (7 - k)) & 1) ^ + (use_graycode & v)); + } while ((s->planes - ++p) & 7); + *bp++ = v; + if (bp - buf == BUFLEN) { + data_out(buf, BUFLEN, file); + bp = buf; + } + } + } + } + } + + if (bp - buf > 0) + data_out(buf, bp - buf, file); + + return; +} + + +/* + * Given a pointer p to the first byte of either a marker segment or a + * PSCD, as well as the length len of the remaining data, return + * either the pointer to the first byte of the next marker segment or + * PSCD, or p+len if this was the last one, or NULL if some error was + * encountered. Possible errors are: + * + * - not enough bytes left for complete marker segment + * - no marker segment terminates the PSCD + * - unknown marker code encountered + * + */ +unsigned char *jbg_next_pscdms(unsigned char *p, size_t len) +{ + unsigned char *pp; + unsigned long l; + + if (len < 2) + return NULL; /* not enough bytes left for complete marker segment */ + + if (p[0] != MARKER_ESC || p[1] == MARKER_STUFF) { + do { + while (p[0] == MARKER_ESC && p[1] == MARKER_STUFF) { + p += 2; + len -= 2; + if (len < 2) + return NULL; /* not enough bytes left for complete marker segment */ + } + assert(len >= 2); + pp = (unsigned char *) memchr(p, MARKER_ESC, len - 1); + if (!pp) + return NULL; /* no marker segment terminates the PSCD */ + l = pp - p; + assert(l < len); + p += l; + len -= l; + } while (p[1] == MARKER_STUFF); + } else { + switch (p[1]) { + case MARKER_SDNORM: + case MARKER_SDRST: + case MARKER_ABORT: + return p + 2; + case MARKER_NEWLEN: + if (len < 6) + return NULL; /* not enough bytes left for complete marker segment */ + return p + 6; + case MARKER_ATMOVE: + if (len < 8) + return NULL; /* not enough bytes left for complete marker segment */ + return p + 8; + case MARKER_COMMENT: + if (len < 6) + return NULL; /* not enough bytes left for complete marker segment */ + l = (((long) p[2] << 24) | ((long) p[3] << 16) | + ((long) p[4] << 8) | (long) p[5]); + if (len - 6 < l) + return NULL; /* not enough bytes left for complete marker segment */ + return p + 6 + l; + default: + /* unknown marker sequence encountered */ + return NULL; + } + } + + return p; +} + + +/* + * Scan a complete BIE for a NEWLEN marker segment, then read the new + * YD value found in it and use it to overwrite the one in the BIE + * header. Use this procedure if a BIE initially declares an + * unreasonably high provisional YD value (e.g., 0xffffffff) or + * depends on the fact that section 6.2.6.2 of ITU-T T.82 says that a + * NEWLEN marker segment "could refer to a line in the immediately + * preceding stripe due to an unexpected termination of the image or + * the use of only such stripe". ITU-T.85 explicitely suggests the + * use of this for fax machines that start transmission before having + * encountered the end of the page. None of this is necessary for + * BIEs produced by JBIG-KIT, which normally does not use NEWLEN. + */ +int jbg_newlen(unsigned char *bie, size_t len) +{ + unsigned char *p = bie + 20; + int i; + unsigned long y, yn; + + if (len < 20) + return JBG_EAGAIN; + if ((bie[19] & (JBG_DPON | JBG_DPPRIV | JBG_DPLAST)) + == (JBG_DPON | JBG_DPPRIV)) + p += 1728; /* skip DPTABLE */ + if (p >= bie + len) + return JBG_EAGAIN; + + while ((p = jbg_next_pscdms(p, len - (p - bie)))) { + if (p == bie + len) + return JBG_EOK; + else if (p[0] == MARKER_ESC) + switch (p[1]) { + case MARKER_NEWLEN: + y = (((long) bie[ 8] << 24) | ((long) bie[ 9] << 16) | + ((long) bie[10] << 8) | (long) bie[11]); + yn = (((long) p[2] << 24) | ((long) p[3] << 16) | + ((long) p[4] << 8) | (long) p[5]); + if (yn > y) return JBG_EINVAL | 12; + /* overwrite YD in BIH with YD from NEWLEN */ + for (i = 0; i < 4; i++) { + bie[8+i] = p[2+i]; + } + return JBG_EOK; + case MARKER_ABORT: + return JBG_EABORT; + } + } + return JBG_EINVAL | 0; +} diff --git a/jbig.h b/jbig.h new file mode 100644 index 0000000..8b5136c --- /dev/null +++ b/jbig.h @@ -0,0 +1,235 @@ +/* + * Header file for the portable JBIG compression library + * + * Copyright 1995-2014 -- Markus Kuhn -- http://www.cl.cam.ac.uk/~mgk25/ + * + * $Id: jbig.h,v 1.5 2014/04/08 14:22:54 rick Exp $ + */ + +#ifndef JBG_H +#define JBG_H + +#include +#include "jbig_ar.h" + +/* + * JBIG-KIT version number + */ + +#define JBG_VERSION "2.1" +#define JBG_VERSION_MAJOR 2 +#define JBG_VERSION_MINOR 1 + +/* + * JBIG-KIT licence agreement reference code: + * If you use JBIG-KIT under a commercial licence, please replace + * below the letters GPL with the reference code that you received + * with your licence agreement. (This code is typically a letter "A" + * followed by four decimal digits, e.g. "A1234".) + */ + +#define JBG_LICENCE "GPL" + +/* + * Buffer block for SDEs which are temporarily stored by encoder + */ + +#define JBG_BUFSIZE 4000 + +struct jbg_buf { + unsigned char d[JBG_BUFSIZE]; /* one block of a buffer list */ + int len; /* length of the data in this block */ + struct jbg_buf *next; /* pointer to next block */ + struct jbg_buf *previous; /* pointer to previous block * + * (unused in freelist) */ + struct jbg_buf *last; /* only used in list head: final block of list */ + struct jbg_buf **free_list; /* pointer to pointer to head of free list */ +}; + +/* + * Maximum number of ATMOVEs per stripe that decoder can handle + */ + +#define JBG_ATMOVES_MAX 64 + +/* + * Option and order flags + */ + +#define JBG_HITOLO 0x08 +#define JBG_SEQ 0x04 +#define JBG_ILEAVE 0x02 +#define JBG_SMID 0x01 + +#define JBG_LRLTWO 0x40 +#define JBG_VLENGTH 0x20 +#define JBG_TPDON 0x10 +#define JBG_TPBON 0x08 +#define JBG_DPON 0x04 +#define JBG_DPPRIV 0x02 +#define JBG_DPLAST 0x01 + +/* encoding options that will not be indicated in the header */ + +#define JBG_DELAY_AT 0x100 /* Delay ATMOVE until the first line of the next + * stripe. Option available for compatibility + * with conformance test example in clause 7.2. */ + +#define JBG_SDRST 0x200 /* Use SDRST instead of SDNORM. This option is + * there for anyone who needs to generate + * test data that covers the SDRST cases. */ + +/* + * Possible error code return values + */ + +#define JBG_EOK (0 << 4) +#define JBG_EOK_INTR (1 << 4) +#define JBG_EAGAIN (2 << 4) +#define JBG_ENOMEM (3 << 4) +#define JBG_EABORT (4 << 4) +#define JBG_EMARKER (5 << 4) +#define JBG_EINVAL (6 << 4) +#define JBG_EIMPL (7 << 4) +#define JBG_ENOCONT (8 << 4) + +/* + * Status of a JBIG encoder + */ + +struct jbg_enc_state { + int d; /* resolution layer of the input image */ + unsigned long xd, yd; /* size of the input image (resolution layer d) */ + unsigned long yd1; /* BIH announced height of image, use yd1 != yd to + emulate T.85-style NEWLEN height updates for tests */ + int planes; /* number of different bitmap planes */ + int dl; /* lowest resolution layer in the next BIE */ + int dh; /* highest resolution layer in the next BIE */ + unsigned long l0; /* number of lines per stripe at lowest * + * resolution layer 0 */ + unsigned long stripes; /* number of stripes required (determ. by l0) */ + unsigned char **lhp[2]; /* pointers to lower/higher resolution images */ + int *highres; /* index [plane] of highres image in lhp[] */ + int order; /* SDE ordering parameters */ + int options; /* encoding parameters */ + unsigned mx, my; /* maximum ATMOVE window size */ + int *tx; /* array [plane] with x-offset of adaptive template pixel */ + char *dppriv; /* optional private deterministic prediction table */ + char *res_tab; /* table for the resolution reduction algorithm */ + struct jbg_buf ****sde; /* array [stripe][layer][plane] pointers to * + * buffers for stored SDEs */ + struct jbg_arenc_state *s; /* array [planes] for arithm. encoder status */ + struct jbg_buf *free_list; /* list of currently unused SDE block buffers */ + void (*data_out)(unsigned char *start, size_t len, void *file); + /* data write callback */ + void *file; /* parameter passed to data_out() */ + char *tp; /* buffer for temp. values used by diff. typical prediction */ + unsigned char *comment; /* content of comment marker segment to be added + at next opportunity (will be reset to NULL + as soon as comment has been written) */ + unsigned long comment_len; /* length of data pointed to by comment */ +}; + + +/* + * Status of a JBIG decoder + */ + +struct jbg_dec_state { + /* data from BIH */ + int d; /* resolution layer of the full image */ + int dl; /* first resolution layer in this BIE */ + unsigned long xd, yd; /* size of the full image (resolution layer d) */ + int planes; /* number of different bitmap planes */ + unsigned long l0; /* number of lines per stripe at lowest * + * resolution layer 0 */ + unsigned long stripes; /* number of stripes required (determ. by l0) */ + int order; /* SDE ordering parameters */ + int options; /* encoding parameters */ + int mx, my; /* maximum ATMOVE window size */ + char *dppriv; /* optional private deterministic prediction table */ + + /* loop variables */ + unsigned long ii[3]; /* current stripe, layer, plane (outer loop first) */ + + /* + * Pointers to array [planes] of lower/higher resolution images. + * lhp[d & 1] contains image of layer d. + */ + unsigned char **lhp[2]; + + /* status information */ + int **tx, **ty; /* array [plane][layer-dl] with x,y-offset of AT pixel */ + struct jbg_ardec_state **s; /* array [plane][layer-dl] for arithmetic * + * decoder status */ + int **reset; /* array [plane][layer-dl] remembers if previous stripe * + * in that plane/resolution ended with SDRST. */ + unsigned long bie_len; /* number of bytes read so far */ + unsigned char buffer[20]; /* used to store BIH or marker segments fragm. */ + int buf_len; /* number of bytes in buffer */ + unsigned long comment_skip; /* remaining bytes of a COMMENT segment */ + unsigned long x; /* x position of next pixel in current SDE */ + unsigned long i; /* line in current SDE (first line of each stripe is 0) */ + int at_moves; /* number of AT moves in the current stripe */ + unsigned long at_line[JBG_ATMOVES_MAX]; /* lines at which an * + * AT move will happen */ + int at_tx[JBG_ATMOVES_MAX], at_ty[JBG_ATMOVES_MAX]; /* ATMOVE offsets in * + * current stripe */ + unsigned long line_h1, line_h2, line_h3; /* variables of decode_pscd */ + unsigned long line_l1, line_l2, line_l3; + int pseudo; /* flag for TPBON/TPDON: next pixel is pseudo pixel */ + int **lntp; /* flag [plane][layer-dl] for TP: line is not typical */ + + unsigned long xmax, ymax; /* if possible abort before image gets * + * larger than this size */ + int dmax; /* abort after this layer */ +}; + + +/* some macros (too trivial for a function) */ + +#define jbg_dec_getplanes(s) ((s)->planes) + + +/* function prototypes */ + +void jbg_enc_init(struct jbg_enc_state *s, unsigned long x, unsigned long y, + int planes, unsigned char **p, + void (*data_out)(unsigned char *start, size_t len, + void *file), + void *file); +int jbg_enc_lrlmax(struct jbg_enc_state *s, unsigned long mwidth, + unsigned long mheight); +void jbg_enc_layers(struct jbg_enc_state *s, int d); +int jbg_enc_lrange(struct jbg_enc_state *s, int dl, int dh); +void jbg_enc_options(struct jbg_enc_state *s, int order, int options, + unsigned long l0, int mx, int my); +void jbg_enc_out(struct jbg_enc_state *s); +void jbg_enc_free(struct jbg_enc_state *s); + +void jbg_dec_init(struct jbg_dec_state *s); +void jbg_dec_maxsize(struct jbg_dec_state *s, unsigned long xmax, + unsigned long ymax); +int jbg_dec_in(struct jbg_dec_state *s, unsigned char *data, size_t len, + size_t *cnt); +unsigned long jbg_dec_getwidth(const struct jbg_dec_state *s); +unsigned long jbg_dec_getheight(const struct jbg_dec_state *s); +unsigned char *jbg_dec_getimage(const struct jbg_dec_state *s, int plane); +unsigned long jbg_dec_getsize(const struct jbg_dec_state *s); +void jbg_dec_merge_planes(const struct jbg_dec_state *s, int use_graycode, + void (*data_out)(unsigned char *start, size_t len, + void *file), void *file); +unsigned long jbg_dec_getsize_merged(const struct jbg_dec_state *s); +void jbg_dec_free(struct jbg_dec_state *s); + +const char *jbg_strerror(int errnum); +void jbg_int2dppriv(unsigned char *dptable, const char *internal); +void jbg_dppriv2int(char *internal, const unsigned char *dptable); +unsigned long jbg_ceil_half(unsigned long x, int n); +void jbg_split_planes(unsigned long x, unsigned long y, int has_planes, + int encode_planes, + const unsigned char *src, unsigned char **dest, + int use_graycode); +int jbg_newlen(unsigned char *bie, size_t len); + +#endif /* JBG_H */ diff --git a/jbig_ar.c b/jbig_ar.c new file mode 100644 index 0000000..d23a317 --- /dev/null +++ b/jbig_ar.c @@ -0,0 +1,417 @@ +/* + * Arithmetic encoder and decoder of the portable JBIG + * compression library + * + * Markus Kuhn -- http://www.cl.cam.ac.uk/~mgk25/jbigkit/ + * + * This module implements a portable standard C arithmetic encoder + * and decoder used by the JBIG lossless bi-level image compression + * algorithm as specified in International Standard ISO 11544:1993 + * and ITU-T Recommendation T.82. + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * If you want to use this program under different license conditions, + * then contact the author for an arrangement. + */ + +#include +#include "jbig_ar.h" + +/* + * Probability estimation tables for the arithmetic encoder/decoder + * given by ITU T.82 Table 24. + */ + +static short lsztab[113] = { + 0x5a1d, 0x2586, 0x1114, 0x080b, 0x03d8, 0x01da, 0x00e5, 0x006f, + 0x0036, 0x001a, 0x000d, 0x0006, 0x0003, 0x0001, 0x5a7f, 0x3f25, + 0x2cf2, 0x207c, 0x17b9, 0x1182, 0x0cef, 0x09a1, 0x072f, 0x055c, + 0x0406, 0x0303, 0x0240, 0x01b1, 0x0144, 0x00f5, 0x00b7, 0x008a, + 0x0068, 0x004e, 0x003b, 0x002c, 0x5ae1, 0x484c, 0x3a0d, 0x2ef1, + 0x261f, 0x1f33, 0x19a8, 0x1518, 0x1177, 0x0e74, 0x0bfb, 0x09f8, + 0x0861, 0x0706, 0x05cd, 0x04de, 0x040f, 0x0363, 0x02d4, 0x025c, + 0x01f8, 0x01a4, 0x0160, 0x0125, 0x00f6, 0x00cb, 0x00ab, 0x008f, + 0x5b12, 0x4d04, 0x412c, 0x37d8, 0x2fe8, 0x293c, 0x2379, 0x1edf, + 0x1aa9, 0x174e, 0x1424, 0x119c, 0x0f6b, 0x0d51, 0x0bb6, 0x0a40, + 0x5832, 0x4d1c, 0x438e, 0x3bdd, 0x34ee, 0x2eae, 0x299a, 0x2516, + 0x5570, 0x4ca9, 0x44d9, 0x3e22, 0x3824, 0x32b4, 0x2e17, 0x56a8, + 0x4f46, 0x47e5, 0x41cf, 0x3c3d, 0x375e, 0x5231, 0x4c0f, 0x4639, + 0x415e, 0x5627, 0x50e7, 0x4b85, 0x5597, 0x504f, 0x5a10, 0x5522, + 0x59eb +}; + +static unsigned char nmpstab[113] = { + 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 13, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 9, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 32, + 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 48, + 81, 82, 83, 84, 85, 86, 87, 71, + 89, 90, 91, 92, 93, 94, 86, 96, + 97, 98, 99, 100, 93, 102, 103, 104, + 99, 106, 107, 103, 109, 107, 111, 109, + 111 +}; + +/* + * least significant 7 bits (mask 0x7f) of nlpstab[] contain NLPS value, + * most significant bit (mask 0x80) contains SWTCH bit + */ +static unsigned char nlpstab[113] = { + 129, 14, 16, 18, 20, 23, 25, 28, + 30, 33, 35, 9, 10, 12, 143, 36, + 38, 39, 40, 42, 43, 45, 46, 48, + 49, 51, 52, 54, 56, 57, 59, 60, + 62, 63, 32, 33, 165, 64, 65, 67, + 68, 69, 70, 72, 73, 74, 75, 77, + 78, 79, 48, 50, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 61, 61, + 193, 80, 81, 82, 83, 84, 86, 87, + 87, 72, 72, 74, 74, 75, 77, 77, + 208, 88, 89, 90, 91, 92, 93, 86, + 216, 95, 96, 97, 99, 99, 93, 223, + 101, 102, 103, 104, 99, 105, 106, 107, + 103, 233, 108, 109, 110, 111, 238, 112, + 240 +}; + +/* + * The next functions implement the arithmedic encoder and decoder + * required for JBIG. The same algorithm is also used in the arithmetic + * variant of JPEG. + */ + +/* marker codes */ +#define MARKER_STUFF 0x00 +#define MARKER_ESC 0xff + +void arith_encode_init(struct jbg_arenc_state *s, int reuse_st) +{ + int i; + + if (!reuse_st) + for (i = 0; i < 4096; s->st[i++] = 0) ; + s->c = 0; + s->a = 0x10000L; + s->sc = 0; + s->ct = 11; + s->buffer = -1; /* empty */ + + return; +} + + +void arith_encode_flush(struct jbg_arenc_state *s) +{ + unsigned long temp; + + /* find the s->c in the coding interval with the largest + * number of trailing zero bits */ + if ((temp = (s->a - 1 + s->c) & 0xffff0000L) < s->c) + s->c = temp + 0x8000; + else + s->c = temp; + /* send remaining bytes to output */ + s->c <<= s->ct; + if (s->c & 0xf8000000L) { + /* one final overflow has to be handled */ + if (s->buffer >= 0) { + s->byte_out(s->buffer + 1, s->file); + if (s->buffer + 1 == MARKER_ESC) + s->byte_out(MARKER_STUFF, s->file); + } + /* output 0x00 bytes only when more non-0x00 will follow */ + if (s->c & 0x7fff800L) + for (; s->sc; --s->sc) + s->byte_out(0x00, s->file); + } else { + if (s->buffer >= 0) + s->byte_out(s->buffer, s->file); + /* T.82 figure 30 says buffer+1 for the above line! Typo? */ + for (; s->sc; --s->sc) { + s->byte_out(0xff, s->file); + s->byte_out(MARKER_STUFF, s->file); + } + } + /* output final bytes only if they are not 0x00 */ + if (s->c & 0x7fff800L) { + s->byte_out((s->c >> 19) & 0xff, s->file); + if (((s->c >> 19) & 0xff) == MARKER_ESC) + s->byte_out(MARKER_STUFF, s->file); + if (s->c & 0x7f800L) { + s->byte_out((s->c >> 11) & 0xff, s->file); + if (((s->c >> 11) & 0xff) == MARKER_ESC) + s->byte_out(MARKER_STUFF, s->file); + } + } + + return; +} + + +void arith_encode(struct jbg_arenc_state *s, int cx, int pix) +{ + register unsigned lsz, ss; + register unsigned char *st; + long temp; + + assert(cx >= 0 && cx < 4096); + st = s->st + cx; + ss = *st & 0x7f; + assert(ss < 113); + lsz = lsztab[ss]; + +#if 0 + fprintf(stderr, "pix = %d, cx = %d, mps = %d, st = %3d, lsz = 0x%04x, " + "a = 0x%05lx, c = 0x%08lx, ct = %2d, buf = 0x%02x\n", + pix, cx, !!(s->st[cx] & 0x80), ss, lsz, s->a, s->c, s->ct, + s->buffer); +#endif + + if (((pix << 7) ^ s->st[cx]) & 0x80) { + /* encode the less probable symbol */ + if ((s->a -= lsz) >= lsz) { + /* If the interval size (lsz) for the less probable symbol (LPS) + * is larger than the interval size for the MPS, then exchange + * the two symbols for coding efficiency, otherwise code the LPS + * as usual: */ + s->c += s->a; + s->a = lsz; + } + /* Check whether MPS/LPS exchange is necessary + * and chose next probability estimator status */ + *st &= 0x80; + *st ^= nlpstab[ss]; + } else { + /* encode the more probable symbol */ + if ((s->a -= lsz) & 0xffff8000L) + return; /* A >= 0x8000 -> ready, no renormalization required */ + if (s->a < lsz) { + /* If the interval size (lsz) for the less probable symbol (LPS) + * is larger than the interval size for the MPS, then exchange + * the two symbols for coding efficiency: */ + s->c += s->a; + s->a = lsz; + } + /* chose next probability estimator status */ + *st &= 0x80; + *st |= nmpstab[ss]; + } + + /* renormalization of coding interval */ + do { + s->a <<= 1; + s->c <<= 1; + --s->ct; + if (s->ct == 0) { + /* another byte is ready for output */ + temp = s->c >> 19; + if (temp & 0xffffff00L) { + /* handle overflow over all buffered 0xff bytes */ + if (s->buffer >= 0) { + ++s->buffer; + s->byte_out(s->buffer, s->file); + if (s->buffer == MARKER_ESC) + s->byte_out(MARKER_STUFF, s->file); + } + for (; s->sc; --s->sc) + s->byte_out(0x00, s->file); + s->buffer = temp & 0xff; /* new output byte, might overflow later */ + assert(s->buffer != 0xff); + /* can s->buffer really never become 0xff here? */ + } else if (temp == 0xff) { + /* buffer 0xff byte (which might overflow later) */ + ++s->sc; + } else { + /* output all buffered 0xff bytes, they will not overflow any more */ + if (s->buffer >= 0) + s->byte_out(s->buffer, s->file); + for (; s->sc; --s->sc) { + s->byte_out(0xff, s->file); + s->byte_out(MARKER_STUFF, s->file); + } + s->buffer = temp; /* buffer new output byte (can still overflow) */ + } + s->c &= 0x7ffffL; + s->ct = 8; + } + } while (s->a < 0x8000); + + return; +} + + +void arith_decode_init(struct jbg_ardec_state *s, int reuse_st) +{ + int i; + + if (!reuse_st) + for (i = 0; i < 4096; s->st[i++] = 0) ; + s->c = 0; + s->a = 1; + s->ct = 0; + s->startup = 1; + s->nopadding = 0; + return; +} + +/* + * Decode and return one symbol from the provided PSCD byte stream + * that starts in s->pscd_ptr and ends in the byte before s->pscd_end. + * The context cx is a 12-bit integer in the range 0..4095. This + * function will advance s->pscd_ptr each time it has consumed all + * information from that PSCD byte. + * + * If a symbol has been decoded successfully, the return value will be + * 0 or 1 (depending on the symbol). + * + * If the decoder was not able to decode a symbol from the provided + * PSCD, then the return value will be -1, and two cases can be + * distinguished: + * + * s->pscd_ptr == s->pscd_end: + * + * The decoder has used up all information in the provided PSCD + * bytes. Further PSCD bytes have to be provided (via new values of + * s->pscd_ptr and/or s->pscd_end) before another symbol can be + * decoded. + * + * s->pscd_ptr == s->pscd_end - 1: + * + * The decoder has used up all provided PSCD bytes except for the + * very last byte, because that has the value 0xff. The decoder can + * at this point not yet tell whether this 0xff belongs to a + * MARKER_STUFF sequence or marks the end of the PSCD. Further PSCD + * bytes have to be provided (via new values of s->pscd_ptr and/or + * s->pscd_end), including the not yet processed 0xff byte, before + * another symbol can be decoded successfully. + * + * If s->nopadding != 0, the decoder will return -2 when it reaches + * the first two bytes of the marker segment that follows (and + * terminates) the PSCD, but before decoding the first symbol that + * depends on a bit in the input data that could have been the result + * of zero padding, and might, therefore, never have been encoded. + * This gives the caller the opportunity to lookahead early enough + * beyond a terminating SDNORM/SDRST for a trailing NEWLEN (as + * required by T.85) before decoding remaining symbols. Call the + * decoder again afterwards as often as necessary (leaving s->pscd_ptr + * pointing to the start of the marker segment) to retrieve any + * required remaining symbols that might depend on padding. + * + * [Note that each PSCD can be decoded into an infinitely long + * sequence of symbols, because the encoder might have truncated away + * an arbitrarily long sequence of trailing 0x00 bytes, which the + * decoder will append automatically as needed when it reaches the end + * of the PSCD. Therefore, the decoder cannot report any end of the + * symbol sequence and other means (external to the PSCD and + * arithmetic decoding process) are needed to determine that.] + */ + +int arith_decode(struct jbg_ardec_state *s, int cx) +{ + register unsigned lsz, ss; + register unsigned char *st; + int pix; + + /* renormalization */ + while (s->a < 0x8000 || s->startup) { + while (s->ct <= 8 && s->ct >= 0) { + /* first we can move a new byte into s->c */ + if (s->pscd_ptr >= s->pscd_end) { + return -1; /* more bytes needed */ + } + if (*s->pscd_ptr == 0xff) + if (s->pscd_ptr + 1 >= s->pscd_end) { + return -1; /* final 0xff byte not processed */ + } else { + if (*(s->pscd_ptr + 1) == MARKER_STUFF) { + s->c |= 0xffL << (8 - s->ct); + s->ct += 8; + s->pscd_ptr += 2; + } else { + s->ct = -1; /* start padding with zero bytes */ + if (s->nopadding) { + s->nopadding = 0; + return -2; /* subsequent symbols might depend on zero padding */ + } + } + } + else { + s->c |= (long)*(s->pscd_ptr++) << (8 - s->ct); + s->ct += 8; + } + } + s->c <<= 1; + s->a <<= 1; + if (s->ct >= 0) s->ct--; + if (s->a == 0x10000L) + s->startup = 0; + } + + st = s->st + cx; + ss = *st & 0x7f; + assert(ss < 113); + lsz = lsztab[ss]; + +#if 0 + fprintf(stderr, "cx = %d, mps = %d, st = %3d, lsz = 0x%04x, a = 0x%05lx, " + "c = 0x%08lx, ct = %2d\n", + cx, !!(s->st[cx] & 0x80), ss, lsz, s->a, s->c, s->ct); +#endif + + if ((s->c >> 16) < (s->a -= lsz)) + if (s->a & 0xffff8000L) + return *st >> 7; + else { + /* MPS_EXCHANGE */ + if (s->a < lsz) { + pix = 1 - (*st >> 7); + /* Check whether MPS/LPS exchange is necessary + * and chose next probability estimator status */ + *st &= 0x80; + *st ^= nlpstab[ss]; + } else { + pix = *st >> 7; + *st &= 0x80; + *st |= nmpstab[ss]; + } + } + else { + /* LPS_EXCHANGE */ + if (s->a < lsz) { + s->c -= s->a << 16; + s->a = lsz; + pix = *st >> 7; + *st &= 0x80; + *st |= nmpstab[ss]; + } else { + s->c -= s->a << 16; + s->a = lsz; + pix = 1 - (*st >> 7); + /* Check whether MPS/LPS exchange is necessary + * and chose next probability estimator status */ + *st &= 0x80; + *st ^= nlpstab[ss]; + } + } + + return pix; +} diff --git a/jbig_ar.h b/jbig_ar.h new file mode 100644 index 0000000..8902759 --- /dev/null +++ b/jbig_ar.h @@ -0,0 +1,55 @@ +/* + * Header file for the arithmetic encoder and decoder of + * the portable JBIG compression library + * + * Markus Kuhn -- http://www.cl.cam.ac.uk/~mgk25/jbigkit/ + * + * $Id: jbig_ar.h,v 1.1 2008/09/05 15:05:54 rick Exp $ + */ + +#ifndef JBG_AR_H +#define JBG_AR_H + +/* + * Status of arithmetic encoder + */ + +struct jbg_arenc_state { + unsigned char st[4096]; /* probability status for contexts, MSB = MPS */ + unsigned long c; /* register C: base of coding intervall, * + * layout as in Table 23 */ + unsigned long a; /* register A: normalized size of coding interval */ + long sc; /* number of buffered 0xff values that might still overflow */ + int ct; /* bit shift counter, determines when next byte will be written */ + int buffer; /* buffer for most recent output byte != 0xff */ + void (*byte_out)(int, void *); /* function that receives all PSCD bytes */ + void *file; /* parameter passed to byte_out */ +}; + +/* + * Status of arithmetic decoder + */ + +struct jbg_ardec_state { + unsigned char st[4096]; /* probability status for contexts, MSB = MPS */ + unsigned long c; /* register C: base of coding intervall, * + * layout as in Table 25 */ + unsigned long a; /* register A: normalized size of coding interval */ + unsigned char *pscd_ptr; /* pointer to next PSCD data byte */ + unsigned char *pscd_end; /* pointer to byte after PSCD */ + int ct; /* bit-shift counter, determines when next byte will be read; + * special value -1 signals that zero-padding has started */ + int startup; /* boolean flag that controls initial fill of s->c */ + int nopadding; /* boolean flag that triggers return -2 between + * reaching PSCD end and decoding the first symbol + * that might never have been encoded in the first + * place */ +}; + +void arith_encode_init(struct jbg_arenc_state *s, int reuse_st); +void arith_encode_flush(struct jbg_arenc_state *s); +void arith_encode(struct jbg_arenc_state *s, int cx, int pix); +void arith_decode_init(struct jbg_ardec_state *s, int reuse_st); +int arith_decode(struct jbg_ardec_state *s, int cx); + +#endif /* JBG_AR_H */ diff --git a/lavadecode.1in b/lavadecode.1in new file mode 100644 index 0000000..3a4901e --- /dev/null +++ b/lavadecode.1in @@ -0,0 +1,102 @@ +.TH lavadecode 1 "${MODpage}" "lavadecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +lavadecode \- Decode a LAVAFLOW stream into human readable form. +.SH SYNOPSIS +.B lavadecode +.RI [ options "] <" lavaflow-file +.SH DESCRIPTION +.B lavadecode +decodes a LAVAFLOW stream into human readable form. +.P +A LAVAFLOW stream is the printer language used by some Konica Minolta +printers, such as the KM magicolor 2530 DL. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an LAVAFLOW stream file created by foo2lava. + +.nf +.ft CW +$ lavadecode -h < testpage.prn + 0: \\033%-12345X@PJL JOB NAME="stdin" + 1f: \\033%-12345X@PJL JOB USERNAME="" + 3d: \\033%-12345X@PJL JOB TIMESTAMP="07/20/2007" + 66: \\033%-12345X@PJL JOB OSINFO="Linux/2.6.20-1.2316.fc5" + 99: \\033%-12345X@PJL ENTER LANGUAGE=LAVAFLOW + bf: \\033E RESET + c1: \\033&l0S DUPLEX: [off] + c6: \\033&l0G + cb: \\033&u1200D X RESOLUTION: [1200] + d3: \\033&l1X COPIES: [1] + d8: \\033&x1X TRANSMIT ONCE COPIES: [1] + dd: \\033&l0O ORIENTATION: [port] + e2: \\033*r1U NBIE: [1] + e7: \\033*g8W BW/COLOR: [8] + fmt=2 np=1 + BLACK: X=1200, Y=600, unk=0, #=4(2) + f4: \\033*b1234M COMPRESSION: [1234] (JBIG) + fc: \\033&l2A PAGE SIZE: [letter] + 101: \\033&l255H PAPER SOURCE: [auto] + 108: \\033&l0M MEDIA TYPE: [plain] + 10d: \\033&l0E TOP MARGIN: [0] + 112: \\033*r9792S X RASTER: [9792,0x2640] + 11a: \\033*r6400T Y RASTER: [6400,0x1900] + 122: \\033&l0U + 127: \\033&l0Z + 12c: \\033*p200X X OFFSET: [200] + 133: \\033*p200Y Y OFFSET: [200] + 13a: \\033*r1A [Page 1] + 13f: \\033*b20V [black] + DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON + 50 stripes, 0 layers, 1 planes + 159: \\033*b65536V JBIG data (first) [65536,0x10000] + ff 02 c2 79 54 3e be e1 a0 de 08 9a b1 d2 c2 59 + ... ae 88 ef a7 c7 96 d3 96 a6 d7 2c 06 38 75 22 44 + 10162: \\033*b26432W JBIG data (end) [26432,0x6740] + 0e 89 66 ce 01 41 41 41 41 41 41 41 41 41 41 41 + ... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 168ab: \\033*x3887138K BLACK DOTS: [3887138] + 168b6: \\033*x58781662W BLACK WHITEDOTS: [58781662] + 168c2: \\033*rC END PAGE + 168c6: \\033&l0H PAPER SOURCE: [eject] + 168cb: \\033E RESET + 168cd: \\033%-12345X +.ft P +.fi + +.SH FILES +.BR /usr/bin/lavadecode +.SH SEE ALSO +.BR foo2lava-wrapper (1), +.BR foo2lava (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLLAVA}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/lavadecode.c b/lavadecode.c new file mode 100644 index 0000000..040e8e8 --- /dev/null +++ b/lavadecode.c @@ -0,0 +1,564 @@ +/* + * $Id: lavadecode.c,v 1.36 2014/06/27 14:41:37 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" lavadecode [options] < zjs-file\n" +"\n" +" Decode a LAVAFLOW stream into human readable form.\n" +"\n" +" A LAVAFLOW stream is the printer language used by some Konica\n" +" Minolta printers, such as the magicolor 2530 DL and 2490 MF.\n" +"\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + char hdr[] = "\n\t\t\t\t"; + + if (!PrintOffset && !PrintHexOffset) hdr[strlen(hdr)-1] = 0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf("%sDL = %d, D = %d, P = %d, - = %d, XY = %d x %d", + hdr, bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf("%sL0 = %d, MX = %d, MY = %d", + hdr, l0, bih[16], bih[17]); + + printf("%sOrder = %d %s%s%s%s%s", hdr, bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf("%sOptions = %d %s%s%s%s%s%s%s%s", hdr, bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf("%s%u stripes, %d layers, %d planes", + hdr, + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +print_config(unsigned char *c) +{ + char hdr[] = "\n\t\t\t\t"; + + if (!PrintOffset && !PrintHexOffset) hdr[strlen(hdr)-1] = 0; + + if (c[1] == 1) + { + printf("%sfmt=%d np=%d", + hdr, c[0], c[1]); + printf("%sBLACK: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[2]<<8) + c[3], (c[4]<<8) + c[5], c[6], 1 << c[7], c[7]); + } + else if (c[1] == 4) + { + printf("%sfmt=%d np=%d", + hdr, c[0], c[1]); + printf("%sYEL: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[2]<<8) + c[3], (c[4]<<8) + c[5], c[6], 1 << c[7], c[7]); + printf("%sMAG: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[8]<<8) + c[9], (c[10]<<8) + c[11], c[12], 1 << c[13], c[13]); + printf("%sCYA: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[14]<<8) + c[15], (c[16]<<8) + c[17], c[18], 1 << c[19], c[19]); + printf("%sBLK: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[20]<<8) + c[21], (c[22]<<8) + c[23], c[24], 1 << c[25], c[25]); + } + else + error(1, "config image data is not 8 or 26 bytes!\n"); +} + +void +proff(int curOff) +{ + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); +} + +void +decode(FILE *fp) +{ + int c; + int rc; + FILE *dfp = NULL; + int pageNum = 0; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[20]; + int bihlen = 0; + int imageCnt[5] = {0,0,0,0,0}; + int pn = 0; + int nbie = 0; + int incrY = 0; + int totSize = 0; + char buf[1024]; + char *strpage[837+1]; + int i; + int totval = 0; + + for (i = 0; i < sizeof(strpage)/sizeof(strpage[0]); ++i) + strpage[i] = "unk"; + strpage[1] = "exec"; + strpage[2] = "letter"; + strpage[3] = "legal"; + strpage[25] = "a5"; + strpage[26] = "a4"; + strpage[45] = "b5jis"; + strpage[65] = "b5iso"; + strpage[80] = "envMonarch"; + strpage[81] = "env#10"; + strpage[90] = "envDL"; + strpage[91] = "envC5"; + strpage[92] = "envC6"; + strpage[101] = "custom"; + strpage[835] = "photo4x6"; + strpage[837] = "photo10x15"; + + while (fgets(buf, sizeof(buf), fp)) + { + proff(curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + + if (strcmp(buf, "\033%-12345X@PJL ENTER LANGUAGE=LAVAFLOW\n") == 0 + || strcmp(buf, "@PJL ENTER LANGUAGE=LAVAFLOW\n") == 0) + { + int state = 0; + char intro = 0, groupc = 0; + int neg = 0, val = 0, pres = 0; + size_t cnt; + unsigned char ch; + + while ( (c = fgetc(fp)) != EOF) + { + curOff++; + switch (state) + { + case 0: + if (c == '\033') + { + state = '\033'; + proff(curOff-1); + } + else + { + proff(curOff-1); + printf("ch=0x%x (%s)\n", c, c==0x0c ? "form feed" : ""); + } + break; + case '\033': + if (c >= 'A' && c <= 'Z') + { + printf("\\033%c", c); + if (c == 'E') + printf("\t\t\tRESET"); + printf("\n"); + state = 0; + } + else + { + intro = c; + state = 'i'; + } + break; + case 'i': + if (c >= 'A' && c <= 'Z') + state = 0; + else + { + groupc = c; + state = 'v'; + pres = neg = val = 0; + } + break; + case 'v': + if (c >= 'A' && c <= 'Z') + { + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "UNK" + char *strduplex[] = { + "off", "long", "short", "manlong", "manshort" + }; + char *strorient[] = { "port", "land" }; + char *strsource[] = { + /*00*/ "eject", "tray1", "unk", "unk", "tray2", + /*05*/ "unk", "unk", "auto" + }; + char *strmedia[] = { + /*00*/ "plain", "unk", "unk", "unk", "transparency", + /*05*/ "unk", "unk", "unk", "unk", "unk", + /*10*/ "unk", "unk", "unk", "unk", "unk", + /*15*/ "unk", "unk", "unk", "unk", "unk", + /*20*/ "thick", "unk", "env", "letterhead", "unk", + /*25*/ "postcard", "labels", "recycled", "glossy", + }; + + if (neg) val = -val; + + if (pres) + printf("\\033%c%c%d%c", intro, groupc, val, c); + else + printf("\\033%c%c%c\t", intro, groupc, c); + state = 0; + if (intro == '&' && groupc == 'l' && c == 'S') + printf("\t\tDUPLEX: [%s]", STRARY(val, strduplex)); + if (intro == '&' && groupc == 'u' && c == 'D') + printf("\t\tX RESOLUTION: [%d]", val); + if (intro == '&' && groupc == 'l' && c == 'X') + printf("\t\tCOPIES: [%d]", val); + if (intro == '&' && groupc == 'x' && c == 'X') + printf("\t\tTRANSMIT ONCE COPIES: [%d]", val); + if (intro == '&' && groupc == 'l' && c == 'O') + printf("\t\tORIENTATION: [%s]", + STRARY(val, strorient)); + if (intro == '&' && groupc == 'l' && c == 'A') + printf("\t\tPAGE SIZE: [%s]", + STRARY(val, strpage)); + if (intro == '&' && groupc == 'l' && c == 'E') + printf("\t\tTOP MARGIN: [%d]", val); + if (intro == '&' && groupc == 'l' && c == 'H') + printf("\t\tPAPER SOURCE: [%s]", + STRARY(val&7, strsource)); + if (intro == '&' && groupc == 'l' && c == 'M') + printf("\t\tMEDIA TYPE: [%s]", + STRARY(val, strmedia)); + if (intro == '*' && groupc == 'r' && c == 'S') + printf("\t\tX RASTER: [%d,0x%x]", val, val); + if (intro == '*' && groupc == 'r' && c == 'T') + printf("\t\tY RASTER: [%d,0x%x]", val, val); + if (intro == '&' && groupc == 'f' && c == 'F') + printf("\t\tX CUSTOM: [%d,0x%x]", val, val); + if (intro == '&' && groupc == 'f' && c == 'G') + printf("\t\tY CUSTOM: [%d,0x%x]", val, val); + if (intro == '*' && groupc == 'r' && c == 'U') + { + nbie = val & 7; + printf("\t\tNBIE: [%d]", nbie); + } + if (intro == '*' && groupc == 'g' && c == 'W') + { + unsigned char config[1024]; + + printf("\t\tBW/COLOR: [%d]", val); + rc = fread(config, val, 1, fp); + curOff += val; + print_config(config); + } + if (intro == '*' && groupc == 'b' && c == 'M') + { + printf("\t\tCOMPRESSION: [%d]", val); + if (val == 1234) + printf(" (JBIG)"); + else + printf(" (unknown compression scheme)"); + } + if (intro == '*' && groupc == 'r' && c == 'C') + printf("\t\tEND PAGE"); + if (intro == '*' && groupc == 'p' && c == 'X') + printf("\t\tX OFFSET: [%d]", val); + if (intro == '*' && groupc == 'p' && c == 'Y') + printf("\t\tY OFFSET: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'Y') + printf("\t\tYELLOW DOTS: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'M') + printf("\t\tMAGENTA DOTS: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'C') + printf("\t\tCYAN DOTS: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'K') + printf("\t\tBLACK DOTS: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'U') + printf("\t\tYELLOW WHITEDOTS: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'V') + printf("\t\tMAGENTA WHITEDOTS: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'Z') + printf("\t\tCYAN WHITEDOTS: [%d]", val); + if (intro == '*' && groupc == 'x' && c == 'W') + printf("\t\tBLACK WHITEDOTS: [%d]", val); + + if (intro == '%' && val == 12345 && c == 'X') + goto out; + if (intro == '*' && groupc == 'r' && c == 'A') + { + ++pageNum; + printf("\t\t[Page %d]", pageNum); + pn = 0; + } + if (intro == '*' && groupc == 'b' && c == 'W') + { + printf("\t\tJBIG data (end) [%d,0x%x]", val, val); + state = 'd'; + totval = val; + } + if (intro == '*' && groupc == 'b' && c == 'V') + { + if (val == 20) + { + char *color[] = + { "yellow", "magenta", "cyan", "black" }; + + ++pn; + rc = fread(bih, bihlen = sizeof(bih), 1, fp); + curOff += bihlen; + if (nbie == 4 && pn >= 1 && pn <= 4) + printf("\t\t[%s]", color[pn-1]); + else if (nbie == 1) + printf("\t\t[%s]", "black"); + else + printf("\t\t[%s]", "unknown"); + print_bih(bih); + if (DecFile) + { + size_t cnt; + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimpl feature\n"); + } + } + else + { + printf("\t\tJBIG data (first) [%d,0x%x]", + val, val); + state = 'd'; + totval = val; + } + } + printf("\n"); + if (state == 'd') + printf("\t\t\t"); + } + else if (c >= '0' && c <= '9') + { + pres = 1; + val *= 10; val += c - '0'; + } + else if (c == '-') + neg = 1; + else if (c == '+') + neg = 0; + else + error(1, "c=%d\n", c); + break; + case 'd': + --val; + #define MAXTOT 16 + if ((totval-val) <= MAXTOT) + { + printf(" %02x", c); + if ((totval-val) == MAXTOT) + printf("\n\t\t\t..."); + } + else if (val < 16) + printf(" %02x", c); + if (val == 0) + { + state = 0; + printf("\n"); + } + if (!DecFile || s[pn].s == 0) + break; + + ch = c; + rc = JBG_EAGAIN; + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + + //debug(0, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + if (image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, pn); + dfp = fopen(buf, imageCnt[pn] ? "a" : "w"); + if (dfp) + { + if (imageCnt[pn] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + imageCnt[pn] += incrY; + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + } + break; + } + } + out: + ; + } + } + if (feof(fp)) + return; + + printf("Total size: %d bytes\n", totSize); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hoD:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + for (;;) + { + decode(fp); + c = getc(fp); ungetc(c, fp); + if (feof(fp)) + break; + } + fclose(fp); + } + else + { + for(;;) + { + decode(stdin); + c = getc(stdin); ungetc(c, stdin); + if (feof(stdin)) + break; + } + } + printf("\n"); + + exit(0); +} diff --git a/macros.man b/macros.man new file mode 100644 index 0000000..289c457 --- /dev/null +++ b/macros.man @@ -0,0 +1,172 @@ +'\"========================================================================== +'\" STRINGS and MACROS +'\"========================================================================== +'\" +'\" Define strings for special characters that nroff doesn't have +'\" +'\" N.B. using .if cua to test for special characters did not work. +'\" +.if !'\*[.T]'ps' .ds ua up +.if '\*[.T]'ps' .ds ua \(ua +.if !'\*[.T]'ps' .ds da down +.if '\*[.T]'ps' .ds da \(da +.if !'\*[.T]'ps' .ds <- left +.if '\*[.T]'ps' .ds <- \(<- +.if !'\*[.T]'ps' .ds -> right +.if '\*[.T]'ps' .ds -> \(-> +'\" +'\" bx - box a Courier string for making keycaps +'\" +'\" N.B. this mess is to make the line drawing come out only +'\" if we are really generating postscript +'\" +.de bx +.ie !'\*[.T]'ps' \{\ +. RB [ \\$1 ]\\$2 +.\} +.el \{\ +. ie !r ps4html \{\ +'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' +. ft CW +. nr par*bxw \w'\\$1'+.4m +\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ +\Z'\h'.2m'\s-1\\$1\s+1'\ +\h'\\n[par*bxw]u'\\$2 +. ft P +. \} +. el \{\ +. RB [ \\$1 ]\\$2 +. \} +.\} +.. +'\" +'\" strings to set current color (null with old groff) +'\" +.if mred .ds red \m[red] +.if mgreen .ds green \m[green] +.if mblue .ds blue \m[blue] +.if mblack .ds black \m[black] +.if mblack .ds mP \mP +'\" +'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, +'\" but xterm displays yellow as orange. The cycle is complete. +'\" +.if n .defcolor orange rgb #ffff00 +'\" +'\" color - set the current color (ignores request with old groff) +'\" +.de color +.if mred \m[\\$1]\c +.. +'\" +'\" colorword - colorize a word (ignored by old groff) +'\" +.de colorword +.ie m\\$1 \m[\\$1]\\$2\mP\c +.el \\$2\c +.. +'\" +'\" colbox - colorize a word in a filled box +'\" +.de colbox +.ie mred \M[\\$2]\ +\v'+.167v'\ +\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ +\v'-.167v'\ +\m[\\$1]\\$3\mP\MP +.el \\$3\c +.. +'\" +'\" Macros for doing pdfmarks +'\" +.de specialps +.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c +.. +'\" +'\" pdfmark PDFMARKCODE +'\" +.ds pdfmarks +.if d pdfmarks \{\ +.de pdfmark +. specialps exec [\\$1 pdfmark +.. +'\" +'\" pdfdest LINKNAME +'\" +.de pdfdest +.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" +.. +'\" +'\" pdfbookmark COUNT LINKNAME STRING +'\" +.de pdfbookmark +. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" +.. +'\" +'\" Define the SH and SS macros to save pdfmark information +'\" in "arrays" of numbers and strings. +'\" +.if !r rr_n \{\ +.nr rr_n 0 1 +.am SH +. nr rr_levels!\\n+[rr_n] 2 +. ds rr_labels!\\n[rr_n] \\$* +. pdfdest Link\\n[rr_n] +.. +.am SS +. nr rr_levels!\\n+[rr_n] 3 +. ds rr_labels!\\n[rr_n] \\$* +. pdfdest Link\\n[rr_n] +.. +.\} +'\" +'\" Called at the end of the document to generate the pdfmark outline +'\" +.de pdf_outline +.nr rr_levels!\\n+[rr_n] 1 +.nr rr_i 0 1 +.while \\n+[rr_i]<\\n[rr_n] \{\ +. nr rr_ip1 \\n[rr_i]+1 +. nr rr_count 0 +. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ +. nr rr_j \\n[rr_i] 1 +. while \\n+[rr_j]<\\n[rr_n] \{\ +. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ +. break +. \} +. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ +. nr rr_count \\n[rr_count]+1 +. \} +. \} +. \} +. ds hhh \\*[rr_labels!\\n[rr_i]] +. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" +.\} +.. +'\" +'\" Some postscript to make pdfmarks harmless on old interpreters... +'\" +.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" +'\" +'\" Force display of Bookmarks in Acrobat when document is viewed. +'\" +.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" +'\" +'\" Output the document info in pdfmarks +'\" +.pdfmark "\ + /Title (\*[an-title](\*[an-section])) \ + /Subject (\*[an-title] Manual Page) \ + /Author (Rick Richardson) \ + /Keywords (printing) \ + /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ + /CreationDate (\*[an-extra1]) \ + /ModDate (\*[an-extra1]) \ + /DOCINFO" +\} +'\" +'\" The manual page name is only 1st level mark +'\" +.nr rr_levels!\n+[rr_n] 1 +.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) +.pdfdest Link\n[rr_n] diff --git a/modify-ppd b/modify-ppd new file mode 100755 index 0000000..cab1f00 --- /dev/null +++ b/modify-ppd @@ -0,0 +1,73 @@ +#!/bin/sh + +# +# Portable version of 'which' +# +pathfind() { + if [ "$1" = -p ]; then + optp=1 + shift + else + optp=0 + fi + OLDIFS="$IFS" + IFS=: + for p in $PATH; do + if [ -x "$p/$*" ]; then + if [ $optp = 1 ]; then + echo "$p/$*" + fi + IFS="$OLDIFS" + return 0 + fi + done + IFS="$OLDIFS" + return 1 +} + +# +# Modify select PPD files +# +if pathfind cups-config; then + cupsdev=1 +else + cupsdev=0 +fi + +awk ' +BEGIN { + negate = 1 +} + +{ + print +} + +/"\(C110\)"/ { do_cmd = "foo2lava-pjl" } +/"\(mc1600W\)"/ { do_cmd = "foo2lava-pjl" } +/"\(mc1680MF\)"/ { do_cmd = "foo2lava-pjl" } +/"\(mc1690MF\)"/ { do_cmd = "foo2lava-pjl" } +/"\(magicolor 2490 MF\)"/ { do_cmd = "foo2lava-pjl" } +/"\(mc2530DL\)"/ { do_cmd = "foo2lava-pjl"; negate = 0 } +/"\(magicolor 4690MF\)"/ { do_cmd = "foo2lava-pjl" } + +/^\*cupsFilter:/ { + if (cupsdev && do_cmd) + { + print "*cupsFilter:\t\"application/vnd.cups-command 100 command2" \ + do_cmd "\"" + + print "*% Specify the list of commands we support" + print "*cupsCommands:\t\"PrintSelfTestPage ReportLevels\"" + + # SNMP marker levels are WRONG + print "*cupsSNMPSupplies:\tFalse" + + # When cups gets updated for USB bidirectional (v1.5???) ... + # print "*cupsBIDI:\tTrue" + + printf "*foo2zjsNegateMarkerLevels:\t%s\n", + negate ? "True" : "False" + } +} +' cupsdev=$cupsdev diff --git a/msexpand b/msexpand new file mode 100755 index 0000000..fe39f44 --- /dev/null +++ b/msexpand @@ -0,0 +1,183 @@ +#!/usr/bin/perl +# msexpand written by Paul Laufer, 2001, to help him learn perl ;) +# - added fillup with zeros if expanded file is less than original; +# - added binmode() to work on platforms which need it; by G. Knauf. +# last change: 10-May-2002 gk. +# +# 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., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# Microsoft compress file structure: +# Uses a 12 bit (4k) sliding window Lempel Ziv variant. +# +# header: 13 bytes +# int MAGIC1 = 0x44445a53; // "SZDD" +# int MAGIC2 = 0x3327f088; +# char MAGIC3 = 0x41; +# char last_char_of_filename; // offset 0x09 +# unsigned short int size_low; +# unsigned short int size_high; +# +# data portion: +# Flag byte followed by eight data elements, for each of the eight flag bits. +# If a flag bit is 1, the corresponding element is a data byte (just copied). +# If the flag bit is 0, the corresponding element is a code, comprised of two +# bytes. The two bytes are divided into two parts. The upper 12 bits are the +# offset into the 4k window, and the lower 4 bits are the length of the string, +# minus 3. Thus the string length is between 3 and 18 bytes. + +# Flag byte Eight data elements +# 10010011 +# |||||||+----byte +# ||||||+-----byte +# |||||+------code +# ||||+-------code +# |||+--------byte +# ||+---------code +# |+----------code +# +-----------byte +# +# The window is wrapped, ie: with an offset of 4092 and a length of 10, you +# will get the last 4 bytes then the first 6 bytes of the window in the output. +# +# Of course, the window must be updated with expanded strings and bytes as they +# are read. Oh, yeah, the window needs to be initialized with spaces, not +# zeros. + +$MAGIC1 = 0x44445a53; +$MAGIC2 = 0x3327f088; +$MAGIC3 = 0x41; + +$WINSIZE = 4096; # Window Size +$HEADSIZE = 14; # Size of file header + +sub LENGTH { + my $x = shift; + return ($x & 0x0F) + 3; +} +sub OFFSET { + my ($x1, $x2) = @_; + return (((($x2 & 0xF0) << 4) + $x1 + 0x0010) & 0x0FFF) +} +sub WRAPFIX { + my $x = shift; + return ($x & ($WINSIZE - 1)); +} +sub BITSET { + my ($byte, $bit) = @_; + return (($byte & (1<<$bit)) > 0); +} +# This sub directly translated from my C source. Runs slow in perl... +sub LZ_expand { + my ($input, $size_uncomp) = @_; + local ($curr_pos, $location, $bit_map, $byte1, $byte2); + local ($window[$WINSIZE], $length, $counter, $x, $max); + + # initialize window to all spaces (cleaner way?) + for($x = 0; $x < $WINSIZE; $x += 1) { + $window[$x] = ' '; + } + + $curr_pos = 0; + $index = $HEADSIZE; + while($curr_pos < $size_uncomp) { + $bit_map = unpack('C', substr($input, $index, 1)); + $index++; + if($index >= $size_orig) { + return $curr_pos; + } + + for($counter = 0; $counter < 8; $counter++) { + if(!BITSET($bit_map, $counter)) { + # Its a code, so process + ($byte1, $byte2) = + unpack('CC', substr($input, $index, 2)); + $index += 2; + if($index >= $size_orig) { + return $curr_pos; + } + + $length = LENGTH($byte2); + $location = OFFSET($byte1, $byte2); + + while($length > 0) { + $byte1 = $window[WRAPFIX($location)]; + $window[WRAPFIX($curr_pos)] = $byte1; + printf(OUTFILE "%c", $byte1); + $curr_pos++; + $location++; + $length--; + } + } else { + # Its just a data byte + $byte1 = unpack('C', substr($input, $index, 1)); + $index++; + $window[WRAPFIX($curr_pos)] = $byte1; + printf(OUTFILE "%c", $byte1); + $curr_pos++; + } + if ($index >= $size_orig) { + return $curr_pos; + } + } + } + + return $curr_pos; +} + +# start here + +if($#ARGV < 0) { + print "Microsoft Compressed File Expander\n"; + print "Written by Paul Laufer 2001-03-13\n\n"; + print "Usage:\n\tmsexpand.pl FILE\n\n"; + print "Where FILE is a valid Microsoft Compressed file. Files of this type\nusually have the last letter replaced with an underscore, ie rmquasar.vx_.\nThe expanded file will be the original filename with the last underscore\nreplaced with the original letter, ie rmquasar.vxd.\n\n"; + exit(1); +} + +open(INFILE,"<$ARGV[0]") or die "Can't open file for input:"; +binmode(INFILE); +undef $/; +$input = ; +close(INFILE); + +($magic1, $magic2, $magic3, $lastchar, $size_low, $size_high) = + unpack 'IICa1SS', substr($input, 0, $HEADSIZE); + +if( $magic1 != $MAGIC1 || $magic2 != $MAGIC2 || $magic3 != $MAGIC3 ) { + print "Error: Input file is not a Microsoft Compress format.\n"; + exit(1); +} else { + print "Input file appears to be Microsoft Compress format, proceeding\n"; +} + +$outfile = $ARGV[0]; +substr($outfile, -1, 1) = $lastchar; + +print "Output filename = ", $outfile, "\n"; +$size_uncomp = ($size_high << 0x10) + $size_low; +$size_orig = -s $ARGV[0]; +print "Original file size: ", $size_uncomp, " bytes\n"; +printf "Compression ratio: %.1f%%\n", $size_orig*100/$size_uncomp; + +open(OUTFILE, ">$outfile") or die "Can't open file for output:"; +binmode(OUTFILE); +# Time to start expanding the file +$size_expand = LZ_expand($input, $size_uncomp); +printf("Expanded size: %d bytes\n", $size_expand); +printf(OUTFILE "%s", ("\x0" x ($size_uncomp-$size_expand))) if ($size_expand < $size_uncomp); +close(OUTFILE); + +printf("Output file size: %d bytes\n", (stat($outfile))[7]); + diff --git a/myftpput b/myftpput new file mode 100755 index 0000000..adb3599 --- /dev/null +++ b/myftpput @@ -0,0 +1,106 @@ +#!/bin/sh + +# +# only the file in ~/geo/myftpput is writeable! +# + +PROGNAME="$0" + +usage() { + cat < + user + pass + -D lvl Debug level + +EXAMPLE + Using ncftp: + + myftpput -f ~/.ncftp-website geo wherigo2jpg wherigo2lua + + Using lftp: + + myftpput -S -f ~/.ncftp-website geo wherigo2jpg wherigo2lua + +EOF + + exit 1 +} + +# +# Report an error and exit +# +error() { + echo "`basename $PROGNAME`: $1" >&2 + exit 1 +} + +debug() { + if [ $DEBUG -ge $1 ]; then + echo "`basename $PROGNAME`: $2" >&2 + fi +} + +# +# Process the options +# +DEBUG=0 +SFTP=0 +CFG= +FTP= +while getopts "mSf:D:h?" opt +do + case $opt in + S) SFTP=1;; + f) CFG="$OPTARG";; + m) FTP="-m $FTP";; + D) DEBUG="$OPTARG";; + h|\?) usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# Main Program +# +if [ -r "$CFG" ]; then + host=$(grep host "$CFG" | tail -1 | awk '{print $2}') + user=$(grep user "$CFG" | tail -1 | awk '{print $2}') + pass=$(grep pass "$CFG" | tail -1 | awk '{print $2}') +else + usage +fi + +DIR="$1"; shift + +if [ "$SFTP" = 0 ]; then + ncftp <<-EOF + open -u $user -p $pass $host + mkdir $DIR + cd $DIR + mput -f $* + quit + EOF +else + lftp sftp://$user@$host <<-EOF + set sftp:auto-confirm yes + user $user $pass + mkdir -f -p $DIR + cd $DIR + mput $* + quit + EOF +fi diff --git a/oak.h b/oak.h new file mode 100644 index 0000000..9c84d39 --- /dev/null +++ b/oak.h @@ -0,0 +1,217 @@ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +/* + * JBIG BIH. But note that Oak uses it little endian. + */ +typedef struct +{ + DWORD opt1; + DWORD xd; // Oak has this little endian + DWORD yd; // Oak has this little endian + DWORD l0; // Oak has this little endian + DWORD opt2; +} OAKBIH; + +/* + * Oak record header. Every record starts with one of these and + * the entire record is always padded out to a multiple of 16 bytes. + */ +typedef struct +{ + char magic[4]; + #define OAK_HDR_MAGIC "OAKT" + DWORD len; // Total length of record including this header + DWORD type; // Record type +} OAK_HDR; + +/* + * Note that the upper nibble of the type number encodes the class + * + * 0x - start/end doc + * 1x - start/end page + * 2x - page parameters + * 3x - image data + */ + +/************************************************************************/ +/* 0x - start/end doc */ +/************************************************************************/ +/* + * First record in file. + * + * No idea what the payload means yet. My guess is username. + */ +#define OAK_TYPE_OTHER 0x0D +typedef struct +{ + WORD unk; // Always 1 + char string[64]; // "OTHER" padded with 0's + // WORD pad; // "PAD_PAD_" as needed. +} OAK_OTHER; +//typedef OAK_OTHER HDR_0D; + +/* + * date/time record + */ +#define OAK_TYPE_TIME 0x0C +typedef struct +{ + char datetime[32]; // Date/time in string format (with NL) + DWORD time_t; // Time in seconds since the Unix epoch + WORD year; // e.g. 2003 + WORD tm_mon; // Month-1 + WORD tm_mday; // Day of month (1-31) + WORD tm_hour; // Hour (0-23) + WORD tm_min; // Minute (0-59) + WORD tm_sec; // Second (0-59) + // DWORD pad; +} OAK_TIME; +//typedef OAK_TIME HDR_0C; + +/* + * Filename record + */ +#define OAK_TYPE_FILENAME 0x0A +typedef struct +{ + char string[64]; // "OTHER" padded with 0's +} OAK_FILENAME; + +/* + * Duplex record + */ +#define OAK_TYPE_DUPLEX 0x0F +typedef struct +{ + DWORD duplex; // Duplex + DWORD short_edge; +} OAK_DUPLEX; + +/* + * Driver record + */ +#define OAK_TYPE_DRIVER 0x1F +typedef struct +{ + char string[36]; // "OTHER" padded with 0's +} OAK_DRIVER; + +/* + * End of document + */ +#define OAK_TYPE_END_DOC 0x0B + +/************************************************************************/ +/* 1x - start/end page */ +/************************************************************************/ +#define OAK_TYPE_START_PAGE 0x14 // No arguments +#define OAK_TYPE_START_IMAGE 0x15 // No arguments +#define OAK_TYPE_END_IMAGE 0x17 // No arguments +#define OAK_TYPE_END_PAGE 0x18 // WORD argument (0) +/************************************************************************/ +/* 2x - page parameters */ +/************************************************************************/ +#define OAK_TYPE_SOURCE 0x28 // DWORD argument: paper source + #define OAK_SOURCE_TRAY1 1 + #define OAK_SOURCE_TRAY2 2 + #define OAK_SOURCE_MANUAL 4 + #define OAK_SOURCE_AUTO 7 + +#define OAK_TYPE_MEDIA 0x29 +typedef struct +{ + BYTE media; // Media code + #define OAK_MEDIA_AUTO 0 + #define OAK_MEDIA_PLAIN 1 + #define OAK_MEDIA_PREPRINTED 2 + #define OAK_MEDIA_LETTERHEAD 3 + #define OAK_MEDIA_GRAYTRANS 4 + #define OAK_MEDIA_PREPUNCHED 5 + #define OAK_MEDIA_LABELS 6 + #define OAK_MEDIA_BOND 7 + #define OAK_MEDIA_RECYCLED 8 + #define OAK_MEDIA_COLOR 9 + #define OAK_MEDIA_CARDSTOCK 10 + #define OAK_MEDIA_HEAVY 11 + #define OAK_MEDIA_ENVELOPE 12 + #define OAK_MEDIA_LIGHT 13 + #define OAK_MEDIA_TOUGH 14 + BYTE unk8[3]; // Unknown, 2, 0, 0 + char string[64]; // Unknown string, padd with blanks +} OAK_MEDIA; + +#define OAK_TYPE_COPIES 0x2A +typedef struct +{ + DWORD copies; // Number of copies + DWORD duplex; // Duplex +} OAK_COPIES; + +#define OAK_TYPE_PAPER 0x2B +typedef struct +{ + DWORD paper; // Paper code + #define OAK_PAPER_LETTER 1 // 8.5 x 11in + #define OAK_PAPER_LEGAL 5 // 8.5 x 14in + #define OAK_PAPER_EXECUTIVE 7 // 7.25 x 10.5in + #define OAK_PAPER_A4 9 // 210 x 297mm + #define OAK_PAPER_A5 11 // 148 x 210mm + #define OAK_PAPER_B5_JIS 13 // 182 x 257mm + #define OAK_PAPER_ENV_10 20 // 4.125 x 9.5in + #define OAK_PAPER_ENV_DL 27 // 110 x 220mm + #define OAK_PAPER_ENV_C5 28 // 162 x 229mm + #define OAK_PAPER_ENV_B5 34 // 176 x 250mm + #define OAK_PAPER_ENV_MONARCH 37 // 3.875 x 7.5in + #define OAK_PAPER_B5_ISO 257 // 176 x 250mm + #define OAK_PAPER_EXECUTIVE_JIS 258 // 8 x 13in + #define OAK_PAPER_16K 93 // 7.75 x 10.75in + #define OAK_PAPER_DOUBLE_POSTCARD 69 // 5.8 x 7.9in + #define OAK_PAPER_POSTCARD 43 // 4.25 x 6in + #define OAK_PAPER_CUSTOM 256 // user defined + DWORD w1200; // Paper width at 1200 DPI + DWORD h1200; // Paper height at 1200 DPI + DWORD unk; // unknown, 0 +} OAK_PAPER; +/************************************************************************/ +/* 3x - JBIG image data */ +/************************************************************************/ +#define OAK_TYPE_IMAGE_COLOR 0x32 +#define OAK_TYPE_IMAGE_MONO 0x33 +typedef struct +{ + DWORD unk0; // Likely x offset + DWORD unk1; // Likely y offset + DWORD w; // width of (clipped?) image + DWORD h; // height of (clipped?) image + DWORD resx; // X resolution in DPI + DWORD resy; // Y resolution in DPI + DWORD nbits; // bits per plane, 1 or 2 + char unk[16]; // always 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f +} OAK_IMAGE_PLANE; + +typedef struct +{ + OAK_IMAGE_PLANE plane; +} OAK_IMAGE_MONO; + +typedef struct +{ + OAK_IMAGE_PLANE plane[4]; +} OAK_IMAGE_COLOR; + +#define OAK_TYPE_IMAGE_DATA 0x3C +typedef struct +{ + OAKBIH bih; // Little-endian JBIG BIH + DWORD datalen; // Length of actual image data + DWORD padlen; // Padded length of image data + DWORD unk1C; // unknown, 000 + DWORD y; // Y offset of this chunk + DWORD plane; // 0=, 1=, 2=, 3=K + DWORD subplane; // 0 or 1 + // DWORD pad[2]; +} OAK_IMAGE_DATA; diff --git a/oakdecode.1in b/oakdecode.1in new file mode 100644 index 0000000..e248af7 --- /dev/null +++ b/oakdecode.1in @@ -0,0 +1,98 @@ +.TH oakdecode 1 "${MODpage}" "oakdecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +oakdecode \- Decode an OAKT printer stream into human readable form. +.SH SYNOPSIS +.B oakdecode +.RI [ options "] <" OAKT-file +.SH DESCRIPTION +.B oakdecode +decodes an OAKT printer stream into human readable form. +.P +An OAKT printer stream is the printer language used by the HP Color LaserJet +1500 and other printers. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-r\0 basename +Basename of .jbg file for saving raw planes +.TP +.BI \-i +Suppress display of image records. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an OAKT file created by foo2oak. + +.nf +.ft CW +$ oakdecode < testpage.oak +0d (80) 1 OTHER +0c (64) Wed Nov 05 16:30:50 2003 a07d3 100005 32001e +0a (80) testpage.pdf +14 (16) (no args) +28 (16) Source=Tray1 +29 (80) PaperType=0 UNK8=2,0,0,0, blanks(63) +2a (32) Copies=1 UNK=0 +2b (32) papercode=25 xwid=4648 ywid=9000 UNK=0 +33 (64) + u0 u1 w h resx resy nBits + x0 x0 2128 4300 600 600 x1 +15 (16) (no args) + bih0 w h l0 bih5 dlen plen unk yOff P subP +3c (64) 00010000 2176 256 256 58030020 1050 1056 000 64 3 0 + DL = 0, D = 0, P = 1, - = 0, XY = 2176 x 256 + L0 = 256, MX = 32, MY = 0 + Order = 3 ILEAVE SMID + Options = 88 LRLTWO TPDON TPBON + 1 stripes, 0 layers, 1 planes +3c (64) 00010000 2176 256 256 58030020 3668 3680 000 320 3 0 +3c (64) 00010000 2176 256 256 58030020 1463 1472 000 640 3 0 +3c (64) 00010000 2176 256 256 58030020 1975 1984 000 896 3 0 +3c (64) 00010000 2176 224 224 58030020 2744 2752 000 1152 3 0 +3c (64) 00010000 2176 256 256 58030020 988 992 000 1440 3 0 +3c (64) 00010000 2176 256 256 58030020 2892 2896 000 1696 3 0 +3c (64) 00010000 2176 256 256 58030020 3634 3648 000 1952 3 0 +3c (64) 00010000 2176 256 256 58030020 3236 3248 000 2208 3 0 +3c (64) 00010000 2176 256 256 58030020 2279 2288 000 2464 3 0 +3c (64) 00010000 2176 256 256 58030020 3746 3760 000 2720 3 0 +3c (64) 00010000 2176 200 200 58030020 2404 2416 000 2976 3 0 +3c (64) 00010000 2176 256 256 58030020 3114 3120 000 3240 3 0 +3c (64) 00010000 2176 96 96 58030020 1142 1152 000 3496 3 0 +3c (64) 00010000 2176 256 256 58030020 2094 2112 000 3752 3 0 +3c (64) 00010000 2176 256 256 58030020 1319 1328 000 4008 3 0 +3c (64) 00010000 2176 36 36 58030020 208 224 000 4264 3 0 +17 (16) (no args) +18 (16) UNK=0 +0b (16) (no args) +.ft P +.fi + +.SH FILES +.BR /usr/bin/oakdecode +.SH SEE ALSO +.BR foo2oak-wrapper (1), +.BR foo2oak (1), +.BR jbg2pbm (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLOAK}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/oakdecode.c b/oakdecode.c new file mode 100644 index 0000000..0653954 --- /dev/null +++ b/oakdecode.c @@ -0,0 +1,718 @@ +/* + * $Id: oakdecode.c,v 1.42 2014/01/24 19:25:47 rick Exp $ + * + * Work in progress decoder for Oak Tech. JBIG streams (HP1500) + * + * The image data appears to be a bastard little-endian version of JBIG, + * split into bands of 256 pixels (except for the last). The data needs + * to be directly driven into a hacked version of jbig.c. The -r and -d + * options are non-functional. + * + * In addition, the image data is left/right mirrored. + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "jbig.h" +#include "oak.h" + +/* + * Global option flags + */ +int Debug = 0; +char *RawFile; +char *DecFile; +int PrintOffset = 0; +int SupressImage = 0; + +int ImageRec[4]; +FILE *FpDec[4][2]; +FILE *FpRaw[4][2]; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" oakdecode [options] < OAKT-file\n" +"\n" +" Decode an Oak Tech. OAKT printer stream into human readable form.\n" +"\n" +" OAKT is the printer language used by the HP 1500 printers.\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -r basename Basename of .jbg file for saving raw planes\n" +" -i Supress display of image records\n" +" -o Print file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +#if 0 +BIH-style from foo2zjs/pbmtojbg... + +00000000: 00 00 01 00 00 00 26 40 00 00 18 f8 00 00 00 80 +00000010: 10 00 03 5c + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +typedef struct +{ + DWORD opt1; + DWORD xd; // Oak has this little endian + DWORD yd; // Oak has this little endian + DWORD l0; // Oak has this little endian + DWORD opt2; +} OAKBIH; +#endif + +void +iswap32(void *p) +{ + char *cp = (char *) p; + char tmp; + tmp = cp[0]; + cp[0] = cp[3]; + cp[3] = tmp; + tmp = cp[1]; + cp[1] = cp[2]; + cp[2] = tmp; +} + +/* + * This is the standard JBIG-KIT big-endian BIH prettyprinter. + */ +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +#if 0 +00000260: 4f 41 4b 54 40 00 00 00 3c 00 00 00 00 00 01 00 | OAKT@...<....... | +00000270: 60 13 00 00 80 00 00 00 80 00 00 00 20 00 03 58 | `........... ..X | +00000280: 02 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 | ................ | +00000290: 00 00 00 00 00 00 00 00 50 41 44 5f 50 41 44 5f | ........PAD_PAD_ | +000002a0: ff 02 50 41 44 5f 50 41 44 5f 50 41 44 5f 50 41 | ..PAD_PAD_PAD_PA | + +000002b0: 4f 41 4b 54 40 00 00 00 3c 00 00 00 00 00 01 00 | OAKT@...<....... | +000002c0: 60 13 00 00 80 00 00 00 80 00 00 00 20 00 03 58 | `........... ..X | +000002d0: 02 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 | ................ | +000002e0: 00 00 00 00 01 00 00 00 50 41 44 5f 50 41 44 5f | ........PAD_PAD_ | +000002f0: ff 02 50 41 44 5f 50 41 44 5f 50 41 44 5f 50 41 | ..PAD_PAD_PAD_PA | + +0000ba20: 4f 41 4b 54 40 00 00 00 3c 00 00 00 00 00 01 00 | OAKT@...<....... | +0000ba30: 60 13 00 00 00 01 00 00 00 01 00 00 20 00 03 58 | `........... ..X | +0000ba40: 90 0d 00 00 a0 0d 00 00 00 00 00 00 40 02 00 00 | ............@... | +0000ba50: 00 00 00 00 00 00 00 00 50 41 44 5f 50 41 44 5f | ........PAD_PAD_ | +0000ba60: a6 ab 23 26 a0 78 7e 82 25 30 39 8b 95 16 32 4e | ..#&.x~.%09...2N | +... +0000c7f0: 50 41 44 5f 50 41 44 5f 50 41 44 5f 50 41 44 5f | PAD_PAD_PAD_PAD_ | + +0000c800: 4f 41 4b 54 40 00 00 00 3c 00 00 00 00 00 01 00 | OAKT@...<....... | +0000c810: 60 13 00 00 00 01 00 00 00 01 00 00 20 00 03 58 | `........... ..X | +0000c820: 02 00 00 00 10 00 00 00 00 00 00 00 40 02 00 00 | ............@... | +0000c830: 00 00 00 00 01 00 00 00 50 41 44 5f 50 41 44 5f | ........PAD_PAD_ | +0000c840: ff 02 50 41 44 5f 50 41 44 5f 50 41 44 5f 50 41 | ..PAD_PAD_PAD_PA | + +000124d0: 4f 41 4b 54 40 00 00 00 3c 00 00 00 00 00 01 00 | OAKT@...<....... | +000124e0: 60 13 00 00 00 01 00 00 00 01 00 00 20 00 03 58 | `........... ..X | +000124f0: fe 16 00 00 10 17 00 00 00 00 00 00 40 02 00 00 | ............@... | +00012500: 03 00 00 00 00 00 00 00 50 41 44 5f 50 41 44 5f | ........PAD_PAD_ | +00012510: 4c 8b 1a 0b 4d 74 19 a8 64 fa 91 c0 02 10 36 8c | L...Mt..d.....6. | +... +00013bf0: 11 f6 d3 e1 ca 98 ed b3 1a c3 2d a1 db 34 a9 db | ..........-..4.. | +00013c00: 04 f4 b8 2e 53 cb d3 be b3 e4 8a 3c ff 02 50 41 | ....S......<..PA | +00013c10: 44 5f 50 41 44 5f 50 41 44 5f 50 41 44 5f 50 41 | D_PAD_PAD_PAD_PA | + +00013c20: 4f 41 4b 54 40 00 00 00 3c 00 00 00 00 00 01 00 | OAKT@...<....... | +00013c30: 60 13 00 00 00 01 00 00 00 01 00 00 20 00 03 58 | `........... ..X | +00013c40: 7e 02 00 00 90 02 00 00 00 00 00 00 40 02 00 00 | ~...........@... | +00013c50: 03 00 00 00 01 00 00 00 50 41 44 5f 50 41 44 5f | ........PAD_PAD_ | + + +typedef struct +{ + char magic[4]; + DWORD len; + DWORD type; +} OAK_HDR; +#endif + +typedef struct +{ + WORD unk; + char string[64]; + WORD pad; +} HDR_0D; + +typedef struct +{ + char datetime[32]; // Date/time in string format (with NL) + DWORD time_t; // Time in seconds since the Unix epoch + WORD year; // e.g. 2003 + WORD tm_mon; // Month-1 + WORD tm_mday; // Day of month (1-31) + WORD tm_hour; // Hour (0-23) + WORD tm_min; // Minute (0-59) + WORD tm_sec; // Second (0-59) + DWORD pad; +} HDR_0C; + +typedef struct +{ + OAKBIH bih; + DWORD datalen; + DWORD padlen; + DWORD unk1C; + DWORD y; // Y offset of this chunk + DWORD plane; // 0=, 1=, 2=, 3=K + DWORD subplane; // 0 or 1 + DWORD pad[2]; +} HDR_3C; + +typedef struct +{ + DWORD unk0; + DWORD unk1; + DWORD w; + DWORD h; + DWORD resx; + DWORD resy; + DWORD nbits; + DWORD unk7[4]; +} HDR_3X; + +void +decode(FILE *fp) +{ + OAK_HDR hdr; + int rc; + int size; + int plane = 0; + int subplane; + int pageNum = 0; + int len; + int i, j; + int c; + char *p; + int curOff = 0; + int dwords[128]; + short words[128]; + unsigned char bytes[128]; + char buf[512]; + HDR_0D hdr0d; + HDR_0C hdr0c; + HDR_3C hdr3c; + HDR_3X hdr3x[4]; + int firstPlane; + size_t cnt; + char *ibuf; + struct jbg_dec_state s[4][2]; + int height[4][2]; + int width[4][2]; + char *strpaper[300+1]; + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "UNK" + + for (i = 0; i < sizeof(strpaper)/sizeof(strpaper[0]); ++i) + strpaper[i] = "unk"; + strpaper[1] = "letter"; + strpaper[3] = "ledger"; + strpaper[5] = "legal"; + strpaper[6] = "statement"; + strpaper[7] = "executive"; + strpaper[8] = "A3"; + strpaper[9] = "A4"; + strpaper[11] = "A5"; + strpaper[12] = "B4"; + strpaper[13] = "B5jis"; + strpaper[14] = "folio"; + strpaper[19] = "env#9"; + strpaper[20] = "env#10"; + strpaper[27] = "envDL"; + strpaper[28] = "envC5"; + strpaper[30] = "envC4"; + strpaper[37] = "envMonarch"; + strpaper[257] = "A6"; + strpaper[258] = "B6"; + strpaper[259] = "B5iso"; + strpaper[260] = "env6"; + strpaper[296] = "CUSTOM"; + + for (;;) + { + static int first3c = 1; + + rc = fread(&hdr, 1, len = sizeof(hdr), fp); + if (rc <=0) + break; + if (rc != len) + { + debug(0, "Expected OAK header, got short read: %d bytes\n", rc); + break; + } + + if (hdr.type == 0x3c && first3c) + { + printf("\t" + "\t%8s %4s %4s %4s %8s %5s %5s %3s %4s %s %s\n", + "bih0", "w", "h", "l0", "bih5", "dlen", "plen", + "unk", "yOff", "P", "subP" + ); + first3c = 0; + } + + if (hdr.type != 0x3c || !SupressImage || !ImageRec[plane]) + { + if (PrintOffset) + printf("%x: ", curOff); + printf("%02x (%d)", hdr.type, hdr.len); + } + + curOff += len; + size = hdr.len; + size -= sizeof(hdr); + + switch (hdr.type) + { + case 0x0d: // first record + rc = fread(&hdr0d, len = sizeof(hdr0d), 1, fp); + if (rc != 1) goto out; + curOff += len; + printf(" %x %s", hdr0d.unk, hdr0d.string); + break; + case 0x0c: // time + rc = fread(&hdr0c, len = sizeof(hdr0c), 1, fp); + if (rc != 1) goto out; + curOff += len; + p = strchr(hdr0c.datetime, '\n'); + if (p) *p = 0; + printf(" %s", hdr0c.datetime); + printf(", %d", hdr0c.time_t); + printf(", %d/%02d/%02d %02d:%02d:%02d", + hdr0c.year, hdr0c.tm_mon+1, hdr0c.tm_mday, + hdr0c.tm_hour, hdr0c.tm_min, hdr0c.tm_sec); + break; + case 0x0a: // filename + case 0x1f: // Driver + if (hdr.type == OAK_TYPE_FILENAME) + printf(" filename="); + else + printf(" driver="); + curOff += size; + while (size--) + { + c = fgetc(fp); + if (c == EOF) + break; + else if (c) putchar(c); + else break; + } + if (size > 0) + while (size--) + fgetc(fp); + break; + case 0x0f: + rc = fread(dwords, len = 5*4, 1, fp); + if (rc != 1) goto out; + curOff += len; + printf(" Duplex=0x%x Short=0x%x", dwords[0], dwords[1]); + break; + + case 0x14: + printf(" (no args)"); + ++pageNum; + curOff += size; + while (size--) + fgetc(fp); + break; + case 0x28: + rc = fread(dwords, len = 1*4, 1, fp); + if (rc != 1) goto out; + curOff += len; + switch (dwords[0]) + { + case 1: printf(" Source=Tray1"); break; + case 2: printf(" Source=Tray2"); break; + case 4: printf(" Source=ManualFeed"); break; + case 7: printf(" Source=Auto"); break; + default: printf(" Source=%d", dwords[0]); break; + } + break; + case 0x29: + rc = fread(bytes, len = 17*4, 1, fp); + if (rc != 1) goto out; + curOff += len; + printf(" PaperType=%d UNK8=%d,%d,%d, str='%s'", + bytes[0], + bytes[1], bytes[2], bytes[3], &bytes[4]); + // PaperType: 0=AutoSelect, 1=Plain, 2=Preprinted, 3=Letterhead + // 4=GrayscaleTransparency, 5=Prepunched, 6=Labels, 7=Bond + // 8=Recycled, 9=Color, 10=Cardstock, 11=Heavy, 12=Envelope + // 13=Light, 14=Tough + break; + case 0x2a: + rc = fread(dwords, len = 5*4, 1, fp); + if (rc != 1) goto out; + curOff += len; + printf(" Copies=0x%x Duplex=0x%x", dwords[0], dwords[1]); + break; + case 0x2b: + rc = fread(dwords, len = 5*4, 1, fp); + if (rc != 1) goto out; + curOff += len; + printf(" papercode=%s(%d)", + STRARY(dwords[0], strpaper), dwords[0]); + printf(" xwid=%d", dwords[1]); + printf(" ywid=%d", dwords[2]); + printf(" UNK=0x%x", dwords[3]); + break; + case 0x32: + firstPlane = 0; + goto prplanes; + case 0x33: + firstPlane = 3; + prplanes: + printf("\n\tunk0 unk1 w h resx resy nBits"); + for (i = firstPlane; i < 4; ++i) + { + rc = fread(&hdr3x[i], len = sizeof(HDR_3X), 1, fp); + if (rc != 1) goto out; + curOff += len; + size -= len; + printf("\n\t0x%x\t0x%x\t%d\t%d\t%d\t%d\t0x%x", + hdr3x[i].unk0, + hdr3x[i].unk1, + hdr3x[i].w, + hdr3x[i].h, + hdr3x[i].resx, + hdr3x[i].resy, + hdr3x[i].nbits); + } + curOff += size; + while (size-- > 0) + fgetc(fp); + break; + case 0x15: + printf(" (no args)"); + curOff += size; + while (size--) + fgetc(fp); + break; + case 0x3c: + // rc = fread(dwords, len = 48, 1, fp); + rc = fread(&hdr3c, len = sizeof(hdr3c), 1, fp); + if (rc != 1) + { + debug(0, "Short read of hdr3c\n"); + goto out; + } + curOff += len; + + plane = hdr3c.plane; + subplane = hdr3c.subplane; + if (!SupressImage || !ImageRec[plane]) + { + printf( + "\t0x%08x %4d %4d %4d 0x%08x %5d %5d 0x%03x %4d %d %d\n", + hdr3c.bih.opt1, + hdr3c.bih.xd, + hdr3c.bih.yd, + hdr3c.bih.l0, + hdr3c.bih.opt2, + hdr3c.datalen, + hdr3c.padlen, + hdr3c.unk1C, + hdr3c.y, + hdr3c.plane, + hdr3c.subplane); + } + + if (RawFile && !FpRaw[plane][subplane]) + { + sprintf(buf, "%s-%02d-%d-%d.jbg", + RawFile, pageNum, plane, subplane); + FpRaw[plane][subplane] = fopen(buf, "w"); + } + if (DecFile && !FpDec[plane][subplane]) + { + height[plane][subplane] = 0; + sprintf(buf, "%s-%02d-%d-%d.pbm", + DecFile, pageNum, plane, subplane); + FpDec[plane][subplane] = fopen(buf, "w"); + fprintf(FpDec[plane][subplane], "P4\n%8d %8d\n", 0, 0); + } + + if (FpDec[plane][subplane]) + jbg_dec_init(&s[plane][subplane]); + + if (1||hdr3c.subplane == 0) + { + static int testend = 1; + static char *cp = (char *) &testend; + static int first_bih = 1; + // JBIGKIT is bigendian, Oak is little-endian + // swap the BIH header words before passing it to + // jbig-kit. N.B. - is there any issues with endianess + // inside the compressed stream itself???? + if (*cp == 1) + { + iswap32(&hdr3c.bih.xd); + iswap32(&hdr3c.bih.yd); + iswap32(&hdr3c.bih.l0); + } + if (!SupressImage || !ImageRec[plane]) + if (first_bih) + { + first_bih = 0; + print_bih((unsigned char *) &hdr3c); + } + if (0 && *cp == 1) + { + iswap32(&hdr3c.bih.xd); + iswap32(&hdr3c.bih.yd); + iswap32(&hdr3c.bih.l0); + } + if (FpRaw[plane][subplane]) + rc = fwrite(&hdr3c.bih, 1, 20, FpRaw[plane][subplane]); + if (FpDec[plane][subplane]) + { + rc = jbg_dec_in(&s[plane][subplane], + (unsigned char *)&hdr3c.bih, 20, &cnt); + } + } + + ImageRec[plane]++; + + // image data + if (!hdr3c.padlen) + break; + size = hdr3c.datalen; + ibuf = malloc(size); + rc = fread(ibuf, 1, size, fp); + if (rc <= 0) + break; + curOff += size; + if (FpRaw[plane][subplane]) + rc = fwrite(ibuf, 1, size, FpRaw[plane][subplane]); + if (FpDec[plane][subplane]) + { + unsigned char *image; + + rc = JBG_EAGAIN; + p = ibuf; + while (size > 0 && + (rc == JBG_EAGAIN || rc == JBG_EOK)) + { + rc = jbg_dec_in(&s[plane][subplane], + (unsigned char *) p, size, &cnt); + p += cnt; + size -= cnt; + } + if (rc) + debug(0, "rc= %d size=%d\n", rc, size); + + height[plane][subplane] + += jbg_dec_getheight(&s[plane][subplane]); + width[plane][subplane] + = jbg_dec_getwidth(&s[plane][subplane]); + image = jbg_dec_getimage(&s[plane][subplane], 0); + if (image) + rc = fwrite(image, 1, jbg_dec_getsize(&s[plane][subplane]), + FpDec[plane][subplane]); + else + debug(0, "Missing image p=%d/%d %dx%d!\n", + plane, subplane, + jbg_dec_getwidth(&s[plane][subplane]), + jbg_dec_getheight(&s[plane][subplane])); + jbg_dec_free(&s[plane][subplane]); + } + free(ibuf); + + size = hdr3c.padlen - hdr3c.datalen; + curOff += size; + while (size--) + c = fgetc(fp); + continue; + case 0x17: + printf(" (no args)"); + curOff += size; + for (i = 0; i < 4; ++i) + { + for (j = 0; j < 2; ++j) + { + if (FpRaw[i][j]) + { + fclose(FpRaw[i][j]); + FpRaw[i][j] = NULL; + } + if (FpDec[i][j]) + { + fseek(FpDec[i][j], 0, 0); + fprintf(FpDec[i][j], "P4\n%8d %8d\n", + width[i][j], height[i][j]); + fclose(FpDec[i][j]); + FpDec[i][j] = NULL; + } + } + } + while (size--) + fgetc(fp); + break; + case 0x18: + rc = fread(words, len = (1+1)*2, 1, fp); + if (rc != 1) goto out; + curOff += len; + printf(" UNK=%x", words[0]); + break; + case 0x0b: + printf(" (no args)"); + curOff += size; + while (size--) + fgetc(fp); + break; + default: + curOff += size; + while (size--) + fgetc(fp); + } + + printf("\n"); + } +out: + return; +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:ior:D:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'r': RawFile = optarg; break; + case 'i': SupressImage = 1; break; + case 'o': PrintOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + decode(fp); + fclose(fp); + } + else + decode(stdin); + + exit(0); +} diff --git a/opldecode.1in b/opldecode.1in new file mode 100644 index 0000000..9706bb0 --- /dev/null +++ b/opldecode.1in @@ -0,0 +1,121 @@ +.TH opldecode 1 "${MODpage}" "opldecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +opldecode \- Decode a Raster Object (opl) stream into human readable form. +.SH SYNOPSIS +.B opldecode +.RI [ options "] <" zjs-file +.SH DESCRIPTION +.B opldecode +decodes a Raster Object (opl) stream into human readable form. +.P +A Raster Object stream is the printer language used by some Konica Minolta +printers, such as the KM magicolor 2480 MF. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an Raster Object stream file created by foo2lava-wrapper -z1. + +.nf +.ft CW +$ foo2lava-wrapper -z1 testpage.ps | opldecode -h + 0: Event=StartOfJob; + 11: OSVersion=WindowsXP; + 25: DrvVersion=2.0.1410.0; + 3b: Resolution=1200x600; + 4f: RasterObject.Compression=JBIG; + 6d: Sides=OneSided; + 7c: MediaSize=custom_size_8.5x11in; + 9b: MediaType=plain; + ab: MediaInputTrayCheck=top; + c3: RasterObject.BitsPerPixel=1; + df: RasterObject.Planes=00FFFF,0,0,0,0,0,0; + 106: RasterObject.Width=9792; + 11e: RasterObject.Height=6400; + 137: RasterObject.Data#20= + + DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON + 50 stripes, 0 layers, 1 planes + 161: RasterObject.Data#32768= + 817a: RasterObject.Data#32768= + 10193: RasterObject.Data#3168= + 10e0b: RasterObject.Planes=FF00FF,0,0,0,0,0,0; + 10e32: RasterObject.Width=9792; + 10e4a: RasterObject.Height=6400; + 10e63: RasterObject.Data#20= + + DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON + 50 stripes, 0 layers, 1 planes + 10e8d: RasterObject.Data#32768= + 18ea6: RasterObject.Data#32768= + 20ebf: RasterObject.Data#19200= + 259d8: RasterObject.Planes=FFFF00,0,0,0,0,0,0; + 259ff: RasterObject.Width=9792; + 25a17: RasterObject.Height=6400; + 25a30: RasterObject.Data#20= + + DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON + 50 stripes, 0 layers, 1 planes + 25a5a: RasterObject.Data#32768= + 2da73: RasterObject.Data#32768= + 35a8c: RasterObject.Data#32768= + 3daa5: RasterObject.Data#7056= + 3f64d: RasterObject.Planes=000000,0,0,0,0,0,0; + 3f674: RasterObject.Width=9792; + 3f68c: RasterObject.Height=6400; + 3f6a5: RasterObject.Data#20= + + DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON + 50 stripes, 0 layers, 1 planes + 3f6cf: RasterObject.Data#32768= + 476e8: RasterObject.Data#17472= + 4bb41: Event=EndOfPage; + 4bb51: Event=EndOfJob; + +.ft P +.fi + +.SH FILES +.BR /usr/bin/opldecode +.SH SEE ALSO +.BR foo2lava-wrapper (1), +.BR foo2opl (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLLAVA}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/opldecode.c b/opldecode.c new file mode 100644 index 0000000..6aebd33 --- /dev/null +++ b/opldecode.c @@ -0,0 +1,425 @@ +/* + * $Id: opldecode.c,v 1.11 2014/01/24 19:25:47 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" opldecode [options] < zjs-file\n" +"\n" +" Decode a Raster Object (opl) stream into human readable form.\n" +"\n" +" A Raster Object stream is the printer language used by some Konica\n" +" Minolta printers, such as the magicolor 2480 MF.\n" +"\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + char hdr[] = "\n\t\t\t\t"; + + if (!PrintOffset && !PrintHexOffset) hdr[strlen(hdr)-1] = 0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf("%sDL = %d, D = %d, P = %d, - = %d, XY = %d x %d", + hdr, bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf("%sL0 = %d, MX = %d, MY = %d", + hdr, l0, bih[16], bih[17]); + + printf("%sOrder = %d %s%s%s%s%s", hdr, bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf("%sOptions = %d %s%s%s%s%s%s%s%s", hdr, bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf("%s%u stripes, %d layers, %d planes", + hdr, + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +print_config(unsigned char *c) +{ + char hdr[] = "\n\t\t\t\t"; + + if (!PrintOffset && !PrintHexOffset) hdr[strlen(hdr)-1] = 0; + + if (c[1] == 1) + { + printf("%sfmt=%d np=%d", + hdr, c[0], c[1]); + printf("%sBLACK: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[2]<<8) + c[3], (c[4]<<8) + c[5], c[6], 1 << c[7], c[7]); + } + else if (c[1] == 4) + { + printf("%sfmt=%d np=%d", + hdr, c[0], c[1]); + printf("%sYEL: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[2]<<8) + c[3], (c[4]<<8) + c[5], c[6], 1 << c[7], c[7]); + printf("%sMAG: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[8]<<8) + c[9], (c[10]<<8) + c[11], c[12], 1 << c[13], c[13]); + printf("%sCYA: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[14]<<8) + c[15], (c[16]<<8) + c[17], c[18], 1 << c[19], c[19]); + printf("%sBLK: X=%d, Y=%d, unk=%d, #=%d(%d)", + hdr, (c[20]<<8) + c[21], (c[22]<<8) + c[23], c[24], 1 << c[25], c[25]); + } + else + error(1, "config image data is not 8 or 26 bytes!\n"); +} + +void +proff(int curOff) +{ + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); +} + +char * +fgetcomma(char *s, int size, int *datalen, FILE *stream) +{ + int c; + char *os = s; + + *datalen = 0; + while ((c = fgetc(stream)) != EOF) + { + *s++ = c; + if (c == ';') + break; + if (c == '#') + { + while ((c = fgetc(stream)) != EOF) + { + *s++ = c; + if (c == '=') + break; + else + { + *datalen *= 10; + *datalen += c - '0'; + } + } + break; + } + } + if (c == EOF) + return (NULL); + *s++ = 0; + return (os); +} + +int +jbig_decode1(unsigned char ch, int pn, int page, struct jbg_dec_state *pstate, + FILE *dfp) +{ + size_t cnt; + int rc; + + rc = jbg_dec_in(pstate, &ch, 1, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + + //debug(0, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(pstate); + w = jbg_dec_getwidth(pstate); + image = jbg_dec_getimage(pstate, 0); + len = jbg_dec_getsize(pstate); + if (image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, page, pn); + dfp = fopen(buf, "w"); + if (dfp) + { + fprintf(dfp, "P4\n%8d %8d\n", w, h); + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(pstate); + } + return (rc); +} + +void +decode(FILE *fp) +{ + int c; + int rc; + FILE *dfp = NULL; + int pageNum = 1; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[20]; + int bihlen = 0; + int pn = 0; + int totSize = 0; + char buf[100*1024]; + int datalen; + int nbh = 0; + int firstbh = 1; + + while (fgetcomma(buf, sizeof(buf), &datalen, fp)) + { + proff(curOff); curOff += strlen(buf); + if (strlen(buf) >= 65) + { + printf("%65.65s ...\n", buf); + printf("\t... %64.64s\n", buf + strlen(buf) - 64); + } + else + printf("%s\n", buf); + if (0) { + } + else if (strncmp(buf, "LockPrinterWait?Event=StartOfJob", 32) == 0) { + } + else if (strncmp(buf, "Event=StartOfJob", 16) == 0) { + } + else if (strncmp(buf, "Event=StartOfPage", 17) == 0) { + firstbh = 1; + } + else if (strncmp(buf, "Event=EndOfBand", 15) == 0) { + } + else if (strncmp(buf, "Event=EndOfPage", 15) == 0) { + pn = 0; + nbh = 0; + ++pageNum; + } + else if (strncmp(buf, "Event=EndOfJob", 14) == 0) { + } + else if (strncmp(buf, "RasterObject.BitsPerPixel", 26) == 0) { + } + else if (strncmp(buf, "RasterObject.Planes", 19) == 0) { + int pl; + sscanf(buf+20, "%x", &pl); + debug(1, "planes=%x\n", pl); + } + else if (strncmp(buf, "RasterObject.Width", 18) == 0) { + int w; + sscanf(buf+19, "%d", &w); + debug(1, "width=%d\n", w); + } + else if (strncmp(buf, "RasterObject.Height", 19) == 0) { + int h; + sscanf(buf+20, "%d", &h); + debug(1, "height=%d\n", h); + } + else if (strncmp(buf, "RasterObject.BandHeight", 23) == 0) { + int bh; + sscanf(buf+24, "%d", &bh); + nbh += bh; + debug(1, "bandheight=%d, nbh=%d\n", bh, nbh); + } + else if (strncmp(buf, "RasterObject.Data", 17) == 0) { + if (firstbh && nbh != 0) + { + firstbh = 0; + debug(1, "firstbh\n"); + rc = fread(bih, bihlen = sizeof(bih), 1, fp); + print_bih(bih); + printf("\n"); + datalen -= sizeof(bih); + if (DecFile) + { + size_t cnt; + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimpl feature\n"); + } + } + curOff += datalen + 1; + totSize += datalen; + if (datalen == 20) { + ++pn; + rc = fread(bih, bihlen = sizeof(bih), 1, fp); + print_bih(bih); + printf("\n"); + getc(fp); + if (DecFile) + { + size_t cnt; + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimpl feature\n"); + } + } + else { + if (datalen) + { + unsigned char ch; + + while (datalen--) + { + c = getc(fp); + ch = c; + if (DecFile) + jbig_decode1(ch, pn, pageNum, &s[pn], dfp); + } + getc(fp); + } + } + } + } +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hoD:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + for (;;) + { + decode(fp); + c = getc(fp); ungetc(c, fp); + if (feof(fp)) + break; + } + fclose(fp); + } + else + { + for(;;) + { + decode(stdin); + c = getc(stdin); ungetc(c, stdin); + if (feof(stdin)) + break; + } + } + printf("\n"); + + exit(0); +} diff --git a/osx-hotplug/Makefile b/osx-hotplug/Makefile new file mode 100644 index 0000000..936b977 --- /dev/null +++ b/osx-hotplug/Makefile @@ -0,0 +1,73 @@ +LANG=C +UNAME := $(shell uname) +PREFIX= /usr +PREFIX= $(DESTDIR)/usr +BIN= $(PREFIX)/bin +MANDIR=$(PREFIX)/share/man +INSTALL=install +RC=/etc/rc.local + +.SUFFIXES: .1 .1in + +ifeq ($(UNAME),Darwin) +all: osx-hplj-hotplug +else +all: +endif + +osx-hplj-hotplug: osx-hplj-hotplug.o + gcc osx-hplj-hotplug.o -o $@ \ + -framework IOKit \ + -framework Foundation \ + -framework CoreFoundation + +man: osx-hplj-hotplug.1 + +.1in.1: + -rm -f $*.1 + MODver=$(VERSION); \ + ../includer-man -v DEF1=$(OLDGROFF) $*.1in | sed > $*.1 \ + -e "s@\$${URLOAK}@$(URLOAK)@" \ + -e "s@\$${URLZJS}@$(URLZJS)@" \ + -e "s@\$${URLHP}@$(URLHP)@" \ + -e "s@\$${URLXQX}@$(URLXQX)@" \ + -e "s@\$${URLLAVA}@$(URLLAVA)@" \ + -e "s@\$${URLQPDL}@$(URLQPDL)@" \ + -e "s@\$${URLSLX}@$(URLSLX)@" \ + -e "s@\$${URLHC}@$(URLHC)@" \ + -e "s/\$${MODver}/$$MODver/" + chmod a-w $*.1 + +install: all + $(INSTALL) -c osx-hplj-hotplug $(BIN)/ + +install-hotplug: + $(INSTALL) -c local.localhost.startup.plist /Library/LaunchDaemons/ + ( \ + echo "g/osx-hplj-hotplug/d"; \ + echo "\$$a"; \ + echo "# BEGIN osx-hplj-hotplug from foo2zjs"; \ + echo " killall osx-hplj-hotplug"; \ + echo " osx-hplj-hotplug >/tmp/osx-hplj-hotplug 2>&1 &"; \ + echo "# END osx-hplj-hotplug from foo2zjs"; \ + echo "."; \ + echo "w"; \ + ) | ex $(RC) + chmod +x $(RC) + -killall osx-hplj-hotplug + nohup osx-hplj-hotplug >/tmp/osx-hplj-hotplug 2>&1 & + +install-man: man + $(INSTALL) -d -m 755 $(MANDIR) + $(INSTALL) -d -m 755 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 osx-hplj-hotplug.1 $(MANDIR)/man1/ + +clean: + rm -f *.o *.1 + +uninstall: + ( \ + echo "g/osx-hplj-hotplug/d"; \ + echo "w"; \ + ) | ex $(RC) + -rm -f $(BIN)/osx-hplj-hotplug diff --git a/osx-hotplug/local.localhost.startup.plist b/osx-hotplug/local.localhost.startup.plist new file mode 100644 index 0000000..8d72aa0 --- /dev/null +++ b/osx-hotplug/local.localhost.startup.plist @@ -0,0 +1,15 @@ + + + + + Label local.localhost.startup + Disabled + RunAtLoad + KeepAlive + LaunchOnlyOnce + ProgramArguments + + /etc/rc.local + + + diff --git a/osx-hotplug/osx-hplj-hotplug.1in b/osx-hotplug/osx-hplj-hotplug.1in new file mode 100644 index 0000000..326d066 --- /dev/null +++ b/osx-hotplug/osx-hplj-hotplug.1in @@ -0,0 +1,37 @@ +.TH osx-hplj-hotplug 1 "Sun Jun 20 04:33:46 2010" "osx-hplj-hotplug 0.0" +#ifndef OLDGROFF +#include "../macros.man" +#endif +.SH NAME +osx-hplj-hotplug - Daemon for downloading firmware files for Mac OS X +.SH SYNOPSIS +.B osx-hplj-hotplug +.RI [ options ] +.SH DESCRIPTION +.B osx-hplj-hotplug +is a daemon for Mac OS X which watches for +Hewlett-Packard LaserJet 1000, 1005, 1018, +1020, P1005, P1006, P1007, P1008, and P1505 being plugged in. +If so, then the firmware is downloaded to it. +.P +NOTE: this is not needed by Linux, which has a proper hotplug mechanism. +.P +Here is a \fB/etc/rc.local\fP start: + +.nf +# BEGIN osx-hplj-hotplug from foo2zjs + killall osx-hplj-hotplug + osx-hplj-hotplug >/tmp/osx-hplj-hotplug 2>&1 & +# END osx-hplj-hotplug from foo2zjs +.fi +.SH COMMAND LINE OPTIONS +.TP +.BI \-D\0 level +Set Debug level [0]. +.SH FILES +.BR /usr/share/foo2*/firmware/* +.SH SEE ALSO +.BR /etc/rc.local +.SH "AUTHOR" +Rick Richardson +.br diff --git a/osx-hotplug/osx-hplj-hotplug.m b/osx-hotplug/osx-hplj-hotplug.m new file mode 100644 index 0000000..70fed51 --- /dev/null +++ b/osx-hotplug/osx-hplj-hotplug.m @@ -0,0 +1,698 @@ +/* +AUTHORS + Anon + Rick Richardson + From: /Developer/Examples/IOKit/usb + +LICENSE +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +static char Version[] = "$Id: osx-hplj-hotplug.m,v 1.14 2011/07/22 18:56:58 rick Exp $"; + +#import +#include +#include +#include +#include +#include +#include + +/* + * Command line options + */ +int Debug = 0; + +typedef struct +{ + long vid, pid; + char *path; +} HOTPLUG; + +HOTPLUG HotPlug[] = +{ + 0x03f0, 0x0517, "/usr/share/foo2zjs/firmware/sihp1000.dl", + 0x03f0, 0x1317, "/usr/share/foo2zjs/firmware/sihp1005.dl", + 0x03f0, 0x4117, "/usr/share/foo2zjs/firmware/sihp1018.dl", + 0x03f0, 0x2b17, "/usr/share/foo2zjs/firmware/sihp1020.dl", + + 0x03f0, 0x3d17, "/usr/share/foo2xqx/firmware/sihpP1005.dl", + 0x03f0, 0x3e17, "/usr/share/foo2xqx/firmware/sihpP1006.dl", + 0x03f0, 0x4817, "/usr/share/foo2xqx/firmware/sihpP1005.dl", + 0x03f0, 0x4917, "/usr/share/foo2xqx/firmware/sihpP1006.dl", + 0x03f0, 0x3f17, "/usr/share/foo2xqx/firmware/sihpP1505.dl", + 0, 0, NULL, // Must be last +}; + +#define waitTime 8 // time to wait until firmware loads after + // printer plugged in. + +typedef struct MyPrivateData { + io_object_t notification; + IOUSBDeviceInterface **deviceInterface; + CFStringRef deviceName; + HOTPLUG *hp; +} MyPrivateData; + +static IONotificationPortRef gNotifyPort; +static io_iterator_t gAddedIter; +static CFRunLoopRef gRunLoop; + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" osx-hplj-hotplug [options]\n" +"\n" +" Daemon which watches for HP LJ 1000, 1005, 1018, 1020, P1005, P1006,\n" +" P1007, P1008, and P1505 being plugged in. If so, then the firmware\n" +" is downloaded to it.\n" + ); + + exit(1); +} + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + setvbuf(stderr, (char *) NULL, _IOLBF, BUFSIZ); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +void +error(int fatal, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fatal) + exit(fatal); +} + +void +MyCallBackFunction(void *dummy, IOReturn result, void *arg0) +{ + // UInt8 inPipeRef = (UInt32)dummy; + + debug(1, "MyCallbackfunction: %ld, %d, %ld\n", + (long)dummy, (int)result, (long)arg0); + CFRunLoopStop(CFRunLoopGetCurrent()); +} + +void +transferData(IOUSBInterfaceInterface **intf, + UInt8 inPipeRef, UInt8 outPipeRef, MyPrivateData *mpd) +{ + IOReturn err; + CFRunLoopSourceRef cfSource; + int i; + char outBuf[8096]; + FILE *fp; + + err = (*intf)->CreateInterfaceAsyncEventSource(intf, &cfSource); + if (err) + { + error(0, "transferData: can't create event source, err = %08x\n", err); + return; + } + CFRunLoopAddSource(CFRunLoopGetCurrent(), cfSource, kCFRunLoopDefaultMode); + + fp = fopen(mpd->hp->path, "r"); + if (fp) + { + char buf[256*1024]; + int len; + + while ( (len = fread(buf, 1, sizeof(buf), fp)) != 0) + { + err = (*intf)->WritePipeAsync(intf, outPipeRef, buf, len, + (IOAsyncCallback1)MyCallBackFunction, (void*)(long)inPipeRef); + + if (err) + { + printf("transferData: WritePipeAsyncFailed, err = %08x\n", err); + CFRunLoopRemoveSource(CFRunLoopGetCurrent(), cfSource, + kCFRunLoopDefaultMode); + return; + } + } + fclose(fp); + } + debug(1, "transferData: calling CFRunLoopRun\n"); + CFRunLoopRun(); + debug(1, "transferData: returned from CFRunLoopRun\n"); + CFRunLoopRemoveSource(CFRunLoopGetCurrent(), cfSource, + kCFRunLoopDefaultMode); +} + +void +dealWithPipes(IOUSBInterfaceInterface **intf, UInt8 numPipes, + MyPrivateData *mpd) +{ + int i; + IOReturn err; + UInt8 inPipeRef = 0; + UInt8 outPipeRef = 0; + UInt8 direction, number, transferType, interval; + UInt16 maxPacketSize; + + // pipes are one based, since zero is the default control pipe + for (i=1; i <= numPipes; i++) + { + err = (*intf)->GetPipeProperties(intf, i, + &direction, &number, &transferType, &maxPacketSize, &interval); + if (err) + { + error(0, "dealWithPipes: can't get pipe properties for pipe %d," + " err = %08x\n", i, err); + return; + } + if (transferType != kUSBBulk) + { + printf("dealWithPipes: skipping pipe %d: it is not a bulk pipe\n", + i); + continue; + } + if ((direction == kUSBIn) && !inPipeRef) + { + debug(1, "dealWithPipes: grabbing BULK IN pipe index %d, num %d\n", + i, number); + inPipeRef = i; + } + if ((direction == kUSBOut) && !outPipeRef) + { + debug(1, "dealWithPipes: grabbing BULK OUT pipe index %d, num %d\n", + i, number); + outPipeRef = i; + } + } + if (inPipeRef && outPipeRef) + transferData(intf, inPipeRef, outPipeRef, mpd); +} + +IOReturn +GetDeviceID(IOUSBInterfaceInterface **intf, char *buf, int maxlen) +{ + IOUSBDevRequest req; + IOReturn err; + int length; + + // This class-specific request returns a device ID string that is + // compatible with IEEE 1284. See IEEE 1284 for syntax and formatting + // information. A printer with multiple configurations, interfaces, or + // alternate settings may contain multiple IEEE 1284 device ID strings. + // The wValue field is used to specify a zero-based configuration index. + // The high-byte of the wIndex field is used to specify the zero-based + // interface index. The low-byte of the wIndex field is used to specify + // the zero-based alternate setting. The device ID string is returned + // in the following format: + // IEEE 1284 device ID string (including length in the first two bytes + // in big endian format). + + req.bmRequestType = USBmakebmRequestType(kUSBIn, kUSBClass, kUSBInterface); + req.bRequest = 0; // GetDeviceID + req.wValue = 0; // see above + req.wIndex = 0; // see above + req.wLength = maxlen; + req.pData = buf; + + err = (*intf)->ControlRequest(intf, 0, &req); + if (err) + { + buf[0] = 0; + return(err); + } + + length = (((unsigned)buf[0] & 255) << 8) + ((unsigned)buf[1] & 255); + + /* + * Check to see if the length is larger than our buffer; first + * assume that the vendor incorrectly implemented the 1284 spec, + * and then limit the length to the size of our buffer... + */ + if (length > (maxlen - 2)) + length = (((unsigned)buf[1] & 255) << 8) + ((unsigned)buf[0] & 255); + + if (length > (maxlen - 2)) + length = maxlen - 2; + + memmove(buf, buf + 2, length); + buf[length] = '\0'; + + return (err); +} + +void +dealWithInterface(io_service_t usbInterfaceRef, MyPrivateData *mpd) +{ + IOReturn err; + IOCFPlugInInterface **iodev; // requires + IOUSBInterfaceInterface **intf; + SInt32 score; + UInt8 numPipes; + char buf[256]; + + err = IOCreatePlugInInterfaceForService(usbInterfaceRef, + kIOUSBInterfaceUserClientTypeID, kIOCFPlugInInterfaceID, + &iodev, &score); + if (err || !iodev) + { + error(0, "dealWithIface: can't create plugin. ret = %08x, iodev = %p\n", + err, iodev); + return; + } + err = (*iodev)->QueryInterface(iodev, + CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID), (LPVOID)&intf); + IODestroyPlugInInterface(iodev); // done with this + + if (err || !intf) + { + error(0, "dealWithIface: can't create an iface. ret=%08x, intf=%p\n", + err, intf); + return; + } + + err = (*intf)->USBInterfaceOpen(intf); + if (err) + { + error(0, "dealWithInterface: can't open interface. ret = %08x\n", err); + return; + } + + err = (*intf)->GetNumEndpoints(intf, &numPipes); + if (err) + { + error(0, "dealWithInterface: can't get number of endpoints. rc=%08x\n", + err); + (*intf)->USBInterfaceClose(intf); + (*intf)->Release(intf); + return; + } + + err = GetDeviceID(intf, buf, sizeof(buf)); + if (err) + { + error(0, "dealWithInterface: can't get device id. ret = %08x\n", + err); + (*intf)->USBInterfaceClose(intf); + (*intf)->Release(intf); + return; + } + + // If FWVER is present, then no download is needed + printf("GetDeviceID: %s\n", buf); + if (strstr(buf, ";FWVER:")) + { + (*intf)->USBInterfaceClose(intf); + (*intf)->Release(intf); + return; + } + + debug(1, "dealWithInterface: found %d pipes\n", numPipes); + if (numPipes == 0) + { + // try alternate setting 1 + err = (*intf)->SetAlternateInterface(intf, 1); + if (err) + { + error(0, "dealWithInterface: can't set alt interface 1. rc=%08x\n", + err); + (*intf)->USBInterfaceClose(intf); + (*intf)->Release(intf); + return; + } + err = (*intf)->GetNumEndpoints(intf, &numPipes); + if (err) + { + error(0, "dealWithInterface: can't get number of endpoints - " + "alt setting 1. rc = %08x\n", err); + (*intf)->USBInterfaceClose(intf); + (*intf)->Release(intf); + return; + } + // workaround. GetNumEndpoints does not work after SetAlternateInterface + numPipes = 13; + } + + if (numPipes) + dealWithPipes(intf, numPipes, mpd); + + err = (*intf)->USBInterfaceClose(intf); + if (err) + { + error(0, "dealWithInterface: can't close interface. rc=%08x\n", err); + return; + } + err = (*intf)->Release(intf); + if (err) + { + error(0, "dealWithInterface: can't release interface. rc=%08x\n", err); + return; + } +} + + +IOReturn +ConfigureDevice(IOUSBDeviceInterface **dev) +{ + UInt8 numConf; + IOReturn rc; + IOUSBConfigurationDescriptorPtr confDesc; + + rc = (*dev)->GetNumberOfConfigurations(dev, &numConf); + if (!numConf) + return -1; + + // get the configuration descriptor for index 0 + rc = (*dev)->GetConfigurationDescriptorPtr(dev, 0, &confDesc); + if (rc) + { + error(0, "unable to get config descriptor for index %d (rc=%08x)\n", + 0, rc); + return -1; + } + + rc = (*dev)->SetConfiguration(dev, confDesc->bConfigurationValue); + if (rc) + { + error(0, "unable to set configuration to value %d (err=%08x)\n", 0, rc); + return -1; + } + + return kIOReturnSuccess; +} + +// ============================================================================ +// +// DeviceNotification +// +// This routine will get called whenever any kIOGeneralInterest notification +// happens. We are +// interested in the kIOMessageServiceIsTerminated message so that's what we +// look for. Other +// messages are defined in IOMessage.h. +// +// ============================================================================ +void +DeviceNotification(void *refCon, io_service_t service, natural_t messageType, + void *messageArgument) +{ + kern_return_t rc; + MyPrivateData *privateDataRef = (MyPrivateData *) refCon; + + if (messageType == kIOMessageServiceIsTerminated) + { + printf("LaserJet unplugged...\n"); + + // Dump our private data to stderr just to see what it looks like. + CFShow(privateDataRef->deviceName); + + // Free the data we're no longer using now that the device is going away + CFRelease(privateDataRef->deviceName); + + if (privateDataRef->deviceInterface) + { + rc = (*privateDataRef->deviceInterface)-> + Release(privateDataRef->deviceInterface); + } + + rc = IOObjectRelease(privateDataRef->notification); + + free(privateDataRef); + } +} + +// ============================================================================ +// +// DeviceAdded +// +// This routine is the callback for our IOServiceAddMatchingNotification. When +// we get called +// we will look at all the devices that were added and we will: +// +// 1. Create some private data to relate to each device (in this case we use +// the service's name +// and the location ID of the device +// 2. Submit an IOServiceAddInterestNotification of type kIOGeneralInterest +// for this device, +// using the refCon field to store a pointer to our private data. When we get +// called with +// this interest notification, we can grab the refCon and access our private +// data. +// +// ============================================================================ +void +DeviceFound(void *refCon, io_iterator_t iterator) +{ + kern_return_t kr; + io_service_t usbDevice; + IOCFPlugInInterface **plugInInterface = NULL; + SInt32 score; + HRESULT res; + char buf[512]; + HOTPLUG *hp = (HOTPLUG *) refCon; + + while ((usbDevice = IOIteratorNext(iterator))) + { + io_name_t deviceName; + CFStringRef deviceNameAsCFString; + MyPrivateData *privateDataRef = NULL; + UInt32 locationID; + int t1 = 0; + int t2 = 0; + int timer = 0; + + printf("LaserJet %s Found!\n", hp->path); + sleep(waitTime); + + // Add some app-specific information about this device. + // Create a buffer to hold the data. + privateDataRef = malloc(sizeof(MyPrivateData)); + bzero(privateDataRef, sizeof(MyPrivateData)); + + // Save the HOTPLUG entry + privateDataRef->hp = hp; + + // Get the USB device's name. + kr = IORegistryEntryGetName(usbDevice, deviceName); + if (KERN_SUCCESS != kr) + deviceName[0] = '\0'; + + deviceNameAsCFString = + CFStringCreateWithCString(kCFAllocatorDefault, deviceName, + kCFStringEncodingASCII); + + // Dump our data to stderr just to see what it looks like. + // fprintf(stderr, "deviceName: "); + CFShow(deviceNameAsCFString); + + // Save the device's name to our private data. + privateDataRef->deviceName = deviceNameAsCFString; + + // Now, get the locationID of this device. In order to do this, we need + // to create an IOUSBDeviceInterface + // for our device. This will create the necessary connections between + // our userland application and the + // kernel object for the USB Device. + kr = IOCreatePlugInInterfaceForService(usbDevice, + kIOUSBDeviceUserClientTypeID, + kIOCFPlugInInterfaceID, + &plugInInterface, &score); + + if ((kIOReturnSuccess != kr) || !plugInInterface) + { + // fprintf(stderr, "IOCreatePlugInInterfaceForService returned + // 0x%08x.\n", kr); + continue; + } + + // Use the plugin interface to retrieve the device interface. + res = (*plugInInterface)->QueryInterface( + plugInInterface, + CFUUIDGetUUIDBytes + (kIOUSBDeviceInterfaceID), + (LPVOID *) & privateDataRef->deviceInterface); + + // Now done with the plugin interface. + (*plugInInterface)->Release(plugInInterface); + + if (res || privateDataRef->deviceInterface == NULL) + { + // fprintf(stderr, "QueryInterface returned %d.\n", (int) res); + continue; + } + + { + IOUSBFindInterfaceRequest interfaceRequest; + IOReturn err; + io_iterator_t iterator; + io_service_t usbInterfaceRef; + IOUSBDeviceInterface **dev = NULL; + dev = privateDataRef->deviceInterface; + + interfaceRequest.bInterfaceClass = kIOUSBFindInterfaceDontCare; + interfaceRequest.bInterfaceSubClass = kIOUSBFindInterfaceDontCare; + interfaceRequest.bInterfaceProtocol = kIOUSBFindInterfaceDontCare; + interfaceRequest.bAlternateSetting = kIOUSBFindInterfaceDontCare; + + err = (*dev)->CreateInterfaceIterator(dev, &interfaceRequest, + &iterator); + if (err) + { + error(0, "dealWithDevice: can't create interface iterator\n"); + (*dev)->USBDeviceClose(dev); + (*dev)->Release(dev); + return; + } + + while ( (usbInterfaceRef = IOIteratorNext(iterator)) ) + { + debug(1, "found interface: %ld\n", (long)usbInterfaceRef); + dealWithInterface(usbInterfaceRef, privateDataRef); + IOObjectRelease(usbInterfaceRef); + } + + IOObjectRelease(iterator); + iterator = 0; + } + + // Register for an interest notification of this device being removed. + // Use a reference to our + // private data as the refCon which will be passed to the notification + // callback. + kr = IOServiceAddInterestNotification( + gNotifyPort, // notifyPort + usbDevice, // service + kIOGeneralInterest, // interestType + DeviceNotification, // callback + privateDataRef, // refCon + &(privateDataRef->notification) // notification + ); + + if (KERN_SUCCESS != kr) + { + // printf("IOServiceAddInterestNotification returned 0x%08x.\n", + // kr); + } + + // Done with this USB device; release the reference added by + // IOIteratorNext + kr = IOObjectRelease(usbDevice); + } +} + +// ============================================================================ +// main +// ============================================================================ + +int +main(int argc, char *argv[]) +{ + CFMutableDictionaryRef matchingDict; + CFRunLoopSourceRef runLoopSource; + CFNumberRef numberRef; + kern_return_t kr; + HOTPLUG *hp; + int c; + + while ( (c = getopt(argc, argv, "D:V:?h")) != EOF) + switch (c) + { + case 'D': Debug = atoi(optarg); break; + case 'V': printf("%s\n", Version); exit(0); + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + for (hp = &HotPlug[0]; hp->path != NULL; ++hp) + { + // Interested in instances of class + matchingDict = IOServiceMatching(kIOUSBDeviceClassName); + + // IOUSBDevice and its subclasses + if (matchingDict == NULL) + { + // fprintf(stderr, "IOServiceMatching returned NULL.\n"); + return -1; + } + + // We are interested in all USB devices (as opposed to USB interfaces). + // The Common Class Specification + // tells us that we need to specify the idVendor, idProduct, and + // bcdDevice fields, or, if we're not interested + // in particular bcdDevices, just the idVendor and idProduct. + // Note that if we were trying to match an + // IOUSBInterface, we would need to set more values in the matching + // dictionary (e.g. idVendor, idProduct, bInterfaceNumber, + // and bConfigurationValue. + + // Create a CFNumber for the VID and set the value in the dictionary + numberRef = + CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &hp->vid); + CFDictionarySetValue(matchingDict, CFSTR(kUSBVendorID), numberRef); + CFRelease(numberRef); + + // Create a CFNumber for the PID and set the value in the dictionary + numberRef = + CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &hp->pid); + CFDictionarySetValue(matchingDict, CFSTR(kUSBProductID), numberRef); + CFRelease(numberRef); + numberRef = NULL; + + // Create a notification port and add its run loop event source to our + // run loop. This is how async notifications get set up. + gNotifyPort = IONotificationPortCreate(kIOMasterPortDefault); + runLoopSource = IONotificationPortGetRunLoopSource(gNotifyPort); + + gRunLoop = CFRunLoopGetCurrent(); + CFRunLoopAddSource(gRunLoop, runLoopSource, kCFRunLoopDefaultMode); + + // Now set up a notification to be called when a device is first + // matched by I/O Kit. + kr = IOServiceAddMatchingNotification( + gNotifyPort, // notifyPort + kIOFirstMatchNotification, // notificationType + matchingDict, // matching + DeviceFound, // callback + hp, // refCon + &gAddedIter // notification + ); + + // Iterate once to get already-present devices and arm the notification + DeviceFound(hp, gAddedIter); + } + + // Start the run loop. Now we'll receive notifications. + printf("Waiting for LaserJet Printer Firmware DL...\n\n"); + CFRunLoopRun(); + + // We should never get here + error(0, "Unexpectedly back from CFRunLoopRun()!\n"); + return 0; +} diff --git a/ppd-adjust b/ppd-adjust new file mode 100755 index 0000000..5436b90 --- /dev/null +++ b/ppd-adjust @@ -0,0 +1,3 @@ +sed -e '/~*% For /i \ +*% (c) Copyright Rick Richardson 2008 \ +*%' -e '/~*NickName:/s/(/rkkda.com (/' diff --git a/printer-profile.1in b/printer-profile.1in new file mode 100644 index 0000000..0f52054 --- /dev/null +++ b/printer-profile.1in @@ -0,0 +1,68 @@ +.TH printer-profile 1 "${MODpage}" "printer-profile ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +printer-profile \- Profile using X-Rite ColorMunki and Argyll CMS +.SH SYNOPSIS +.B printer-profile +.RI [ options "] manuf model [rgb|cmyk] [patches] [ink-limit]" +.SH DESCRIPTION +.B printer-profile +prints a test chart, uses the ColorMunki instrument to scan it in, then +computes an ICM profile using the Argyll Color Management System. + +Manuf is "sam". Model is "clp-300", "clp-315", "clp-325" or "clp-365". +.br +Manuf is "hp". Model is "2600" or "cp1215". +.br +Manuf is "km". Model is "2300" or "2530". +.br +Manuf is "dell". Model is "1355". +.br + +"rgb" is the usual setting. "patches" is a multiple 196 per page. + +Edit the script for additional models. + +.SH OPTIONS + -b 1|2 Bits per pixel (1) + -r XRESxYRES Resolution. Default=''. () + -P rem-print Remote print (64-bit) machine, or none (amd) + -S rem-scan Remote scan (ColorMunki) machine, or none (mac) + -D lvl Debug level + +.SH EXAMPLES +Profile the Samsung clp-315: + +.nf +.ft CW +$ printer-profile sam 315 rgb 196 +.ft P +.fi + +.SH BUGS +gs 8.64 and before has problems with 32-bit machines and color profile +data. Don't use! + +You need Argyll_V1.5.1 or later. +.SH FILES +.BR /usr/bin/printer-profile, +.BR /usr/share/foo2*/icm/testing.icm +.SH SEE ALSO +firefox http://www.xritephoto.com/html/colormunkisplash.htm +.br +firefox http://www.argyllcms.com/ +.br +firefox http://www.argyllcms.com/Argyll_V1.5.1_src.zip +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/printer-profile.sh b/printer-profile.sh new file mode 100755 index 0000000..39268ee --- /dev/null +++ b/printer-profile.sh @@ -0,0 +1,357 @@ +#!/bin/bash + +PROGNAME="$0" + +usage() { + cat <&2 + exit 1 +} + +debug() { + if [ $DEBUG -ge $1 ]; then + echo "`basename $PROGNAME`: $2" >&2 + fi +} + +# +# Execute a command as root +# +root() { + if [ -x /usr/bin/root ]; then + /usr/bin/root $@ + else + su -c "$*" + fi +} + +# +# trap on error +# +trap "exit 1" ERR + +# +# Process the options +# +ARGYLL_VER=1.3.2 +ARGYLL_VER=1.3.3 +ARGYLL_VER=1.3.4 +ARGYLL_VER=1.3.5 +ARGYLL_VER=1.5.0 +ARGYLL_VER=1.5.1 +ARGYLL_VER=1.6.3 +ARGYLL_ROOT=$HOME/src/Argyll_V${ARGYLL_VER} +ARGYLL_REF=$ARGYLL_ROOT/ref +ARGYLL_BIN=$ARGYLL_ROOT/bin +export PATH=$ARGYLL_BIN:$PATH + +REMPRINT=amd +REMPRINT=none +REMSCAN=mac +REMSCAN=none +RGB=rgb +PATCHES=196 #Per page! +BPP=1 +RES= +DEBUG=0 +while getopts "b:g:r:P:S:D:h?" opt +do + case $opt in + b) BPP="$OPTARG";; + g) export GSBIN="$OPTARG";; + r) RES="$OPTARG";; + P) REMPRINT="$OPTARG";; + S) REMSCAN="$OPTARG";; + D) DEBUG="$OPTARG";; + h|\?) usage;; + esac +done +shift `expr $OPTIND - 1` + +if [ ! -x $ARGYLL_BIN/printtarg ]; then + error "No Argyll bin in $ARGYLL_BIN!" +fi + +# +# Reference ICM for colprof +# +reficm=$ARGYLL_REF/sRGB.icm +if [ ! -r $reficm ]; then + error "No ref. icm in '$reficm'" +fi + +# +# Main Program +# +if [ $# -lt 2 ]; then + usage +fi + +MANUF="$1" +MODEL="$2" +if [ $# -ge 3 ]; then + RGB="$3" +fi +if [ $# -ge 4 ]; then + if [ "$4" -lt 10 ]; then + PATCHES=`expr $4 \* 196` + else + PATCHES="$4" + fi +fi + +if [ $# -ge 5 ]; then + INK="$5" +else + INK=250 +fi + +BPP_b="-b$BPP" +RES_r= +if [ "$RES" != "" ]; then + RES_r="-r$RES" +fi + +case "$MANUF" in +km) + MANUF=km + case "$MODEL" in + *1600*) + FOO=foo2lava + WRAPPER="foo2lava-wrapper $RES_r -z2 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp1" + ;; + *2530*) + FOO=foo2lava + WRAPPER="foo2lava-wrapper $RES_r -z0 -c -C10 -Gnone.icm" + OUT="nc 192.168.1.13 9100 < xxx.prn" + ;; + *2300*) + FOO=foo2zjs + WRAPPER="foo2zjs-wrapper $RES_r -c -C10 -Gnone.icm" + OUT="nc 192.168.1.10 9100 < xxx.prn" + ;; + *) + usage + ;; + esac + ;; +sam*) + MANUF=sam + FOO=foo2qpdl + case "$MODEL" in + *300*) + WRAPPER="foo2qpdl-wrapper $RES_r -z0 -c -C10 -Gnone.icm" + OUT="nc 192.168.1.11 9100 < xxx.prn" + ;; + *315*|*325*) + WRAPPER="foo2qpdl-wrapper $RES_r -z2 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp1" + ;; + *365*) + WRAPPER="foo2qpdl-wrapper $RES_r -z3 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp1" + ;; + *) + usage + ;; + esac + ;; +hp*) + MANUF=hp + case "$MODEL" in + *2600*) + FOO=foo2hp + WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z0 -c -C10 -Gnone.icm" + OUT="nc 192.168.1.12 9100 < xxx.prn" + ;; + *cp1215*) + FOO=foo2hp + WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z1 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp2" + ;; + *cp1025*) + FOO=foo2zjs + WRAPPER="foo2zjs-wrapper $RES_r -z3 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp2" + OUT="nc 192.168.1.16 9100 < xxx.prn" + ;; + *) + usage + ;; + esac + ;; +dell*) + MANUF=dell + case "$MODEL" in + *1355*|*1765*) + FOO=foo2hbpl2 + WRAPPER="foo2hbpl2-wrapper $RES_r -c -C10 -Gnone.icm" + OUT="nc 192.168.178.41 9100 < xxx.prn" + ;; + *) + usage + ;; + esac + ;; +*) + usage + ;; +esac + +mrp="$MANUF-$MODEL-$RGB-$PATCHES" +if [ "$INK" != "" ]; then + mrp="$mrp-ink$INK" +fi +if [ "$BPP" != "" ]; then + mrp="$mrp-bpp$BPP" +fi +if [ "$RES" != "" ]; then + mrp="$mrp-$RES" +fi +echo "$mrp" + +targen_opts= +case "$RGB" in +rgb|RGB) targen_opts="$targen_opts -d2";; +cmyk|CMYK) targen_opts="$targen_opts -d4";; +*) error "Parm2: Must be rgb or cmyk";; +esac + +targen_opts="$targen_opts -f$PATCHES" + +if [ "$INK" != "" ]; then + targen_opts="$targen_opts -l$INK" +fi + +echo +echo "******************************** targen ********************************" +echo "targen $targen_opts $mrp" +if ! targen $targen_opts $mrp >$mrp.err1; then + cat $mrp.err1 + exit 1 +fi + +echo +echo "******************************* printtarg ******************************" +# -h Use double density for CM +# -v Verbose mode +# -iCM Select target instrument, CM = ColorMunki +# -pLetter +# -R0 Use given random start number +echo "$ARGYLL_BIN/printtarg -h -v -iCM -p Letter -R0 $mrp" +$ARGYLL_BIN/printtarg -h -v -iCM -p Letter -R0 $mrp + +evince $mrp.ps & + +echo +echo "******************************* print it *******************************" +echo "$WRAPPER" +case "$REMPRINT" in +''|none) + $WRAPPER <$mrp.ps >$mrp.prn + ;; +*) + ssh $REMPRINT "$WRAPPER" <$mrp.ps >$mrp.prn + ;; +esac +ls -l $mrp.prn +echo -n "Print it? [y|n]? " +read yes +case "$yes" in +y|Y) + cp $mrp.prn xxx.prn + echo " $OUT" + eval $OUT + rm -f xxx.prn +esac + +echo +echo "******************************* chartread ******************************" +case "$REMSCAN" in +''|none) + echo "$ARGYLL_BIN/chartread $mrp" + $ARGYLL_BIN/chartread $mrp + ;; +*) + echo "scp $mrp.ti2 $REMSCAN:" + scp $mrp.ti2 $REMSCAN: + echo "$ARGYLL_BIN/chartread $mrp" + echo -n "Scanned on remote system $REMSCAN? [y/n]? " + read yes + case "$yes" in + y|Y) + scp $REMSCAN:$mrp.ti3 . + ;; + esac + ;; +esac + +echo +echo "******************************** colprof *******************************" +case $RGB in +rgb) + echo "colprof -v -D\"$mrp\" -S $reficm -qm -cmt -dpp $mrp" + colprof -v -D"$mrp" -S $reficm -qm -cmt -dpp $mrp + ;; +cymk) + echo "colprof -v -D\"$mrp\" -S $reficm -qm -cmt -dpp -kr $mrp" + colprof -v -D"$mrp" -S $reficm -qm -cmt -dpp -kr $mrp + ;; +esac + +mv $mrp.icc $mrp.icm +root cp $mrp.icm /usr/share/$FOO/icm/testing.icm +echo "/usr/share/$FOO/icm/testing.icm created!" +ls -l /usr/share/$FOO/icm/ diff --git a/qpdl.h b/qpdl.h new file mode 100644 index 0000000..3116285 --- /dev/null +++ b/qpdl.h @@ -0,0 +1,168 @@ +/* + * Manifest constants for the ZjStream protocol + * + * I'm told that a lot of this stuff came from a file called "zjrca.h". + * But a Google search does not turn up that file. I added my own + * improvements and missing pieces. -Rick + */ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +typedef enum { + DMBIN_AUTO = 1, + DMBIN_MANUAL = 2, + DMBIN_MULTI = 3, + DMBIN_TRAY1 = 4, +} DM_BIN; + +typedef enum { + DMMEDIA_PLAIN = 0, // Plain paper + DMMEDIA_THICK = 1, + DMMEDIA_THIN = 2, + DMMEDIA_BOND = 3, + DMMEDIA_COLOR = 4, + DMMEDIA_CARDSTOCK = 5, + DMMEDIA_LABELS = 6, // Labels + DMMEDIA_ENVELOPE = 7, // Envelope + DMMEDIA_PREPRINTED = 8, + DMMEDIA_COTTON = 9, + DMMEDIA_RECYCLED = 10, +} DMMEDIA; + +typedef enum { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2, +} DMCOLOR; + +typedef enum { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2, +} DMORIENT; + +typedef enum { + DMPAPER_LETTER = 1, // Letter, 8 1/2- by 11-inches + DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches + DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches + DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches + DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches + DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches + DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches + DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters + DMPAPER_A4 = 9, // A4 Sheet, 210- by 297-millimeters + DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters + DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters + DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters + DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper + DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper + DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper + DMPAPER_10X14 =16, // 10- by 14-inch sheet + DMPAPER_11X17 =17, // 11- by 17-inch sheet + DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches + DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches + DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches + DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches + DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches + DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches + DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches + DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches + DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches + DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters + DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters + DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters + DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters + DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters + DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters + DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters + DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters + DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters + DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters + DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches + DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches + DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches + DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in + DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in + + DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm + DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm + DMPAPER_9X11 =44, // 9 x 11 in + DMPAPER_10X11 =45, // 10 x 11 in + DMPAPER_15X11 =46, // 15 x 11 in + DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm + DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE + DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE + DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in + DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in + DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in + DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in + DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in + DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm + DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in + DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm + DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm + DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in + DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm + DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm + DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm + DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm + DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm + DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm + DMPAPER_A2 =66, // A2 420 x 594 mm + DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm + DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm +} DMPAPER; + +typedef union _SWAP_32{ + char byte[sizeof(uint32_t)]; + uint32_t dword; +} SWAP_32; + +typedef union _SWAP_16{ + char byte[sizeof(uint16_t)]; + uint16_t word; +} SWAP_16; + +static inline uint32_t +be32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +be16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} diff --git a/qpdldecode.1in b/qpdldecode.1in new file mode 100644 index 0000000..d8b2f35 --- /dev/null +++ b/qpdldecode.1in @@ -0,0 +1,132 @@ +.TH qpdldecode 1 "${MODpage}" "qpdldecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +qpdldecode \- Decode a QPDL stream into human readable form. +.SH SYNOPSIS +.B qpdldecode +.RI [ options "] <" qpdl-file +.SH DESCRIPTION +.B qpdldecode +decodes a QPDL stream into human readable form. +Only the JBIG compression format (0x13) is handled. +.P +An QPDL stream is the printer language used by the +Samsung CLP-300, CLP-600, CLX-3160 and the +Xerox Phaser 6110 +printers. + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an QPDL stream file created by foo2qpdl. + +.nf +.ft CW + 0: \\033%-12345X@PJL DEFAULT SERVICEDATE=20070212 + 2c: @PJL SET USERNAME="Unknown" + 49: @PJL SET JOBNAME="testpage.pdf" + 6a: @PJL SET COLORMODE=COLOR + 84: @PJL SET PAPERTYPE = NORMAL + a1: @PJL ENTER LANGUAGE = QPDL + bd: RECTYPE 0x0 len=17 + res=600, copies=1, papersize=letter(0), w=2550, h=3300 + papersource=auto, unk=0, duplex=0:0, unk=0,2, unk=268(0x10c) + ce: RECTYPE 0xc len=68(0x44) + stripe=0, WB=1248(0x4e0), H=128(0x80), plane=4, comp=0x13, + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 + DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON + 1 stripes, 0 layers, 1 planes + 112: RECTYPE 0xc len=68(0x44) + stripe=0, WB=1248(0x4e0), H=128(0x80), plane=1, comp=0x13, + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 + DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON + 1 stripes, 0 layers, 1 planes + 156: RECTYPE 0xc len=68(0x44) + stripe=0, WB=1248(0x4e0), H=128(0x80), plane=2, comp=0x13, + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 + DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON + 1 stripes, 0 layers, 1 planes + 19a: RECTYPE 0xc len=68(0x44) + stripe=0, WB=1248(0x4e0), H=128(0x80), plane=3, comp=0x13, + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 + DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON + 1 stripes, 0 layers, 1 planes + 1de: RECTYPE 0xc len=77488(0x12eb0) + stripe=1, WB=1248(0x4e0), H=128(0x80), plane=1, comp=0x13, + len=77476(0x12ea4) + magic=0x39abcdef, len=77440(0x12e80), unk=2000000,0,0,0,0,0, + checksum=0x9326d7 + 1308e: RECTYPE 0xc len=77680(0x12f70) + stripe=1, WB=1248(0x4e0), H=128(0x80), plane=2, comp=0x13, + len=77668(0x12f64) + magic=0x39abcdef, len=77632(0x12f40), unk=2000000,0,0,0,0,0, + checksum=0x9367e5 + 25ffe: RECTYPE 0xc len=69232(0x10e70) + stripe=1, WB=1248(0x4e0), H=128(0x80), plane=3, comp=0x13, + len=69220(0x10e64) + magic=0x39abcdef, len=69184(0x10e40), unk=2000000,0,0,0,0,0, + checksum=0x83938a + 36e6e: RECTYPE 0xc len=45616(0xb230) + stripe=1, WB=1248(0x4e0), H=128(0x80), plane=4, comp=0x13, + len=45604(0xb224) + magic=0x39abcdef, len=45568(0xb200), unk=2000000,0,0,0,0,0, + checksum=0x58015d + 4209e: RECTYPE 0x1 len=3 + copies=1 + 420a1: RECTYPE 0x9 len=0 + 420a2: \\033%-12345X + +.ft P +.fi + +.SH FILES +.BR /usr/bin/qpdldecode +.SH SEE ALSO +.BR foo2qpdl-wrapper (1), +.BR foo2qpdl (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLQPDL}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/qpdldecode.c b/qpdldecode.c new file mode 100644 index 0000000..d6336df --- /dev/null +++ b/qpdldecode.c @@ -0,0 +1,613 @@ +/* + * $Id: qpdldecode.c,v 1.41 2014/01/24 19:25:47 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *RawFile; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" qpdldecode [options] < qpdl-file.prn\n" +"\n" +" Decode a QPDL stream into human readable form.\n" +"\n" +" A Quick Page Description Langauge (QPDL) is the printer language" +" used by some Samsung printers, such as the CLP-600n.\n" +"\n" +" Also known as SPLC." +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +//" -r basename Basename of .jbg file for saving raw planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +static int +getBEdword(char buf[4]) +{ + unsigned char *b = (unsigned char *) buf; + return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | (b[3] << 0); +} + +static int +getLEdword(char buf[4]) +{ + unsigned char *b = (unsigned char *) buf; + return (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | (b[0] << 0); +} + +static int +getBEword(char buf[2]) +{ + unsigned char *b = (unsigned char *) buf; + return (b[0] << 8) | (b[1] << 0); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d, " + "%s\n", + bih[0], bih[1], bih[2], bih[3], xd, yd, + (xd % 256) ? "*** xd%256 != 0!" : ""); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +proff(int curOff) +{ + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); +} + +void +decode(FILE *fp) +{ + int c; + int rc; + FILE *dfp = NULL; + int pageNum = 0; + int i; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[5][20]; + int imageCnt[5] = {0,0,0,0}; + int pn = 0; + int ver, end; + char buf[5120*1024]; + + c = getc(fp); + if (c == EOF) + { + printf("EOF on file\n"); + return; + } + ungetc(c, fp); + if (c == '\033') + { + while (fgets(buf, sizeof(buf), fp)) + { + proff(curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if ((strcmp(buf, "@PJL ENTER LANGUAGE = QPDL\r\n") == 0) + || (strcmp(buf, "@PJL ENTER LANGUAGE = QPDL\n") == 0)) + break; + } + } + + for (;;) + { + int reclen; + int rectype, subtype; + int wb, h, comp, stripe; + int cksum; + + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "UNK" + char *strsize[] = { + /*00*/ "letter", "legal", "a4", "exec", "ledger", + /*05*/ "a3", "env#10", "envMonarch", "envC5", "envDL", + /*10*/ "b4", "b5jis", "b5iso", "UNK", "UNK", + /*15*/ "UNK", "a5", "a6", "UNK", "UNK", + /*20*/ "UNK", "custom", "UNK", "envC6", "folio", + /*25*/ "env6.75", "env#9", "UNK", "oficio", "UNK", + /*30*/ "statement", "UNK", "UNK", "UNK", "UNK", + }; + char *strsource[] = { + /*00*/ "unk", "auto", "manual", "multi", "tray1", + }; + + rectype = fgetc(fp); + if (rectype == EOF) + break; + + proff(curOff); + curOff++; + printf("RECTYPE 0x%x", rectype); + + switch (rectype) + { + case 0x01: + printf(" len=3\n"); + if (fread(buf+1, 2, 1, fp) != 1) + error(1, "Couldn't get 2 bytes\n"); + curOff += 2; + printf("\t\tcopies=%d\n", getBEword(buf+1)); + break; + case 0x11: // NOT JBIG!! + if (fread(buf+1, 4, 1, fp) != 1) + { + printf("\n"); + error(1, "Couldn't get 4 bytes\n"); + } + curOff += 4; + reclen = getBEdword(buf+1); + ++reclen; + printf(" len=%d(0x%x)\n", 5+reclen, 5+reclen); + if (fread(buf, reclen, 1, fp) != 1) + error(1, "Couldn't get 0x%x(%d) bytes\n", reclen, reclen); + curOff += reclen; + + break; + case 0x09: + printf(" len=0\n"); + goto done; + break; + case 0x00: + printf(" len=17 pageNum=%d\n", ++pageNum); + if (fread(buf+1, 16, 1, fp) != 1) + error(1, "Couldn't get 16 bytes\n"); + curOff += 16; + printf("\t\tyres=%d, copies=%d, papersize=%s(%d), w=%d, h=%d\n", + buf[1]*100, + getBEword(buf+2), + STRARY((int)buf[4], strsize), buf[4], + getBEword(buf+5), + getBEword(buf+7) + ); + printf("\t\tpapersource=%s, unk=%d, duplex=%d:%d, unk=%d,%d, " + " unk=%d(0x%x)\n" + , STRARY((int)buf[9], strsource) + , buf[0xA] + , buf[0xB] + , buf[0xC] + , buf[0xD] + , buf[0xE] + , getBEword(buf+15) + , getBEword(buf+15) + ); + printf("\t\txres=%d\n" + , (getBEword(buf+15) & 0xff) * 100 + ); + + pn = 0; + memset(imageCnt, 0, sizeof(imageCnt)); + break; + case 0x13: + printf(" len=15\n"); + if (fread(buf+1, 14, 1, fp) != 1) + error(1, "Couldn't get 14 bytes\n"); + curOff += 14; + printf("\t\t"); + for (i = 1; i <= 14; ++i) + printf("%02x, ", buf[i]); + printf("\n"); + break; + case 0x14: + if (fread(buf+1, 7, 1, fp) != 1) + error(1, "Couldn't get 7 bytes\n"); + curOff += 7; + subtype = buf[1]; + if (subtype == 0x10) + { + printf(" len=8\n"); + printf("\t\tunknown: "); + for (i = 1; i <= 7; ++i) + printf("%02x, ", (unsigned char) buf[i]); + printf("\n"); + } + else + { + /* BIH */ + printf(" len=25\n"); + if (fread(buf+7+1, 24-7, 1, fp) != 1) + error(1, "Couldn't get 24 bytes\n"); + curOff += 24-7; + if (0) + { + printf("\t\t"); + for (i = 1; i <= 16; ++i) + printf("%02x, ", (unsigned char) buf[i]); + printf("\n\t\t"); + for (i = 17; i <= 24; ++i) + printf("%02x, ", (unsigned char) buf[i]); + } + else + { + printf("\t\t"); + for (i = 21; i <= 24; ++i) + printf("%02x, ", (unsigned char) buf[i]); + printf("(Margin=%d)", (unsigned char) buf[24]); + } + printf("\n"); + print_bih( (unsigned char *) buf+1); + for (i = 0; i <=4; ++i) + memcpy(bih[i], buf+1, 20); + } + break; + case 0x0c: + if (fread(buf+1, 11, 1, fp) != 1) + { + printf("\n"); + error(1, "Couldn't get 11 bytes\n"); + } + curOff += 11; + stripe = buf[1]; + wb = getBEword(buf+2); + h = getBEword(buf+4); + pn = buf[6]; + comp = buf[7]; + reclen = getBEdword(buf+8); + if (comp == 0x12) + reclen++; + if (comp == 0x11) + reclen++; + printf("\tlen=%d(0x%x)\n", 12+reclen, 12+reclen); + printf("\t\tstripe=%d, WB=%d(0x%x), H=%d(0x%x), plane=%d, " + "comp=0x%x,\n\t\tlen=%d(0x%x)\n", + stripe, wb, wb, h, h, pn, comp, reclen, reclen); + + if (fread(buf, reclen, 1, fp) != 1) + error(1, "Couldn't get 0x%x(%d) bytes\n", reclen, reclen); + curOff += reclen; + + cksum = 0; + for (i = 0; i < reclen-4; ++i) + cksum += (unsigned char) buf[i]; + + if (comp == 0x15) + { + if (0) printf("pn=%d\n", pn); + } + else if ( ((unsigned char) buf[0]) == 0xef) + { + ver = getLEdword(buf+0) >> 28; + end = (getBEdword(buf+8) >> 24) - 1; + printf("\t\tmagic=0x%x, len=%d(0x%x), unk=%x,%x,%x,%x,%x,%x," + "\n\t\tend=%d, ver=%d, checksum WANT=0x%x GOT=0x%x\n" + , getLEdword(buf+0) + , getLEdword(buf+4) + , getLEdword(buf+4) + , getLEdword(buf+8) + , getLEdword(buf+12) + , getLEdword(buf+16) + , getLEdword(buf+20) + , getLEdword(buf+24) + , getLEdword(buf+28) + , end + , ver + , cksum + , getLEdword(buf+reclen-4) + ); + } + else + { + ver = getBEdword(buf+0) >> 28; + end = (getBEdword(buf+8) >> 24) - 1; + printf("\t\tmagic=0x%x, len=%d(0x%x), unk=%x,%x,%x,%x,%x,%x," + "\n\t\tend=%d, ver=%d, checksum WANT=0x%x GOT=0x%x\n" + , getBEdword(buf+0) + , getBEdword(buf+4) + , getBEdword(buf+4) + , getBEdword(buf+8) + , getBEdword(buf+12) + , getBEdword(buf+16) + , getBEdword(buf+20) + , getBEdword(buf+24) + , getBEdword(buf+28) + , end + , ver + , cksum + , getBEdword(buf+reclen-4) + ); + } + + if (comp == 0x13 || comp == 0x15) + { +if (0) printf("stripe=%d\n", stripe); + // if ( (comp == 0x13 && stripe == 0) || comp == 0x15) + if (comp == 0x13 && stripe == 0) + { + size_t cnt; + + memcpy(bih[pn], buf+32, 20); + print_bih(bih[pn]); + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih[pn], 20, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimpl feature\n"); + break; + } + else if (comp == 0x15) + { + size_t cnt; + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih[pn], 20, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimpl feature\n"); + } + else if (comp == 0x13 && stripe >= 1) + { + printf("\t\tData: "); + for (i = 0; i < 16; ++i) + printf("%02x ", (unsigned char) buf[32+i]); + printf("...\n"); + } + + if (DecFile) + { + if (comp == 0x15) + { + reclen -= 4; + i = 0; + } + else + i = 32; +if (0 && comp == 0x15) printf("c=%02x ", (unsigned char) buf[i]); + for (; i < reclen; ++i) + { + size_t cnt; + unsigned char ch = c; + + ch = c = buf[i]; + + rc = JBG_EAGAIN; +if (0 && comp == 0x15) printf("i=%d ", i); + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); +if (0 && comp == 0x15) printf("rc=%d ", rc); +if (0 && comp == 0x15 && i == (reclen-1)) printf("c=%02x ", ch); +if (0 && comp == 0x15 && i == (reclen-2)) printf("c=%02x ", ch); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + +if (0 && comp == 0x15) printf("OK\n"); +if (0) printf("OK\n"); + // debug(0, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + if (comp == 0x13 && image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, pn); + dfp = fopen(buf, + imageCnt[pn] ? "a" : "w"); + if (dfp) + { + if (imageCnt[pn] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + //imageCnt[pn] += incrY; + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + dfp = NULL; + } + } + else if (comp == 0x15 && image) + { + char buf[512]; + if (dfp == 0) + { + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, pn); + dfp = fopen(buf, + imageCnt[pn] ? "r+" : "w"); + } + if (dfp) + { + fseek(dfp, 0, SEEK_SET); + // if (imageCnt[pn] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h*stripe); + imageCnt[pn] += 1; + fseek(dfp, stripe * h * wb, SEEK_CUR); + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + dfp = NULL; + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + break; + } + } + } + } + break; + default: + printf("\n"); + error(1, "Unknown rectype 0x%x at 0x%x(%d)\n", + rectype, curOff, curOff); + break; + } + } + +done: + c = fgetc(fp); + if (c != 033) + return; + ungetc(c, fp); + + while (fgets(buf, sizeof(buf), fp)) + { + proff(curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (strcmp(buf, "@PJL ENTER LANGUAGE=HIPERC\n") == 0) + break; + } + printf("\n"); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hor:D:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'r': RawFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + decode(fp); + fclose(fp); + } + else + decode(stdin); + + exit(0); +} diff --git a/regress.txt b/regress.txt new file mode 100644 index 0000000..dd2333e --- /dev/null +++ b/regress.txt @@ -0,0 +1,79 @@ +# gs 7.05, gs 8.60, 8.61 +eafcf2ab43e8ecea78d1663491629869 testpage.zm 7.05 i386 +57e9101eb2b95db9ce519d108d06c2ec testpage.zm 8.60 x86_64 +3365dcef45a03b3686c00da0f5f711c3 testpage.zm 8.61 i386 +b0fe6c289308ebc086328c2944ce915c testpage.zm 9.07 x86_64 f19 +fd5e020d0c009f1733e51e7303820235 testpage.zm 9.14 x86_64 f19 +d9acc8761b0259ccd2439099465da068 testpage.zm 9.20 x86_64 f23 + +# +94b77586bab210ad54eaf7b652817a4c testpage.zc10 7.05 +1c35cb5f615ab68acea9c271c8aeaf63 testpage.zc10 8.60amd +e39c15277195366b9404c104640f275d testpage.zc10 8.61 +01244f6071a0394006b9482369d7cc16 testpage.zc10 8.62 +4d8fd851ce9b51c7b3d20e319c451874 testpage.zc10 8.61 ubuntu +e2b8cd9191afe74bf684e7655f48f372 testpage.zc10 8.71 +bcf8f73383eebb4da0d6a0fd03732c90 testpage.zc10 8.71 f16 +23546ba41a46973bc70664030a65cb6c testpage.zc10 9.07 x86_64 f19 +6f697e3c66bd22e19a8c25056beb5949 testpage.zc10 9.14 x86_64 f19 +d884b7684885abbec95b0d6867bbc5dd testpage.zc10 9.20 x86_64 f23 + +# +29788ba74874c9be35ab1f8bcc5719b6 testpage.zc1 7.05 +6c39935476de0dffa94fe518296bcff9 testpage.zc1 8.60amd +bf33fd5d11fbfb5c77215c83d24cb150 testpage.zc1 8.61 +699d7bb94cad6ec740a6fdc60772a09c testpage.zc1 8.61 ubuntu +0c7bb56596bf8ec32ab5291739d128dc testpage.zc1 8.71 +bcd629e6490474df232817f8be79e167 testpage.zc1 8.71 + +# +69985fd15f67a66e79e8313a3c53e0d2 testpage.zc2 7.05 +dde475751f73eea612df7f1b2af4e084 testpage.zc2 8.60amd +a3a5c601c846f90426368ebde349e42c testpage.zc2 8.61 +e6e9bd42e185eba3accc9170c97d6a4f testpage.zc2 8.61 ubuntu + +# +061b4f389141cd0c71b95ca57a9f918c testpage.zc3 7.05 +41f7b2322d6262deff7514581f0432d4 testpage.zc3 8.60amd +d0527fbf184f5f8594b9cafc2f8a266c testpage.zc3 8.61 +fb9defdcba1e5259f33e339f7f17e41e testpage.zc3 8.61 ubuntu + +# +8ad5eb57140eca3a4cddc76645bcb9b4 lj1000.zm 7.05 +f30e09990c7c2ad460074fb38c3a1720 lj1000.zm 8.60amd +89bb9a6748b9010d763e47ed5923460c lj1000.zm 8.61 +46d4a9157a2282a64a9b37e361b0059c lj1000.zm 8.62amd +98bda2da23dfd94c40f96ef7be1533b3 lj1000.zm 9.07 x86_64 f19 +3e1a545894d571061fca0ba443daa465 lj1000.zm 9.14 x86_64 f19 +12c9f616a7fba2a1234b2076cf91ea16 lj1000.zm 9.20 x86_64 f23 + +# +afed329ee495b7575b908680a2512c30 lj1020.zm 7.05 +d124d799527de22bc65a3ad26acc9dd4 lj1020.zm 8.60amd +b9c2e0cb9db463a219ec6decff4800f0 lj1020.zm 8.61 +41c692fa8af353ae36c7cc607b50440a lj1020.zm 8.62amd +d8f28750c1dacc2066eee1e0a050e60c lj1020.zm 8.71 +518482229bed6d3cb23f66b7f7f9a685 lj1020.zm 8.71 f16 +59c71a09255fe1d84e22c372d4d6704a lj1020.zm 9.07 x86_64 f19 +9900771e2963b03b61f163434de84c94 lj1020.zm 9.14 x86_64 f19 +dc91007cb42fc49101b5d97f9053193a lj1020.zm 9.20 x86_64 f23 + +# +b4ccadb72f1b386b1caabeed85c269dd lj2600.zm1 7.05 +282e09f3981560801842cc2b1c9bff0c lj2600.zm1 8.60amd +4551ad72c645ad165ea614f7cdd5b666 lj2600.zm1 8.61 +a768fc2854434276dd8a274896af5d4f lj2600.zm1 8.62amd +70b31b8f35702091da0673fb29a3d7c5 lj2600.zm1 9.07 x86_64 f19 +af3cb950122a621700ca71d73ae91d13 lj2600.zm1 9.14 x86_64 f19 +0637ceb08277689016ebc2d7309ad3ca lj2600.zm1 9.20 x86_64 f23 + +# +500ee54205b85d18407b56cfea5cbb02 lj2600.zc1 7.05 +cf06670c4ad27e58aca458e612e059f8 lj2600.zc1 8.60amd +452508bb8a7f8f501d47739ad25a9754 lj2600.zc1 8.61 +ddcdc6e87de6560bfc4e6053509ad575 lj2600.zc1 8.62amd +312ddcb33b16698866eb4aa5f2b595fd lj2600.zc1 8.61 ubuntu +3b0fa7c37af9c3069e285f5fc81b62a3 lj2600.zc1 8.71 +45ae0df794f2ada19fa63f7ca8edc5ac lj2600.zc1 8.71 f16 +80c09c01f555bc4fa9a27099d0a2ecfe lj2600.zc1 9.07 x86_64 f19 +5a8df35fef1da08cadf557b9d6582517 lj2600.zc1 9.20 x86_64 f23 diff --git a/slx.h b/slx.h new file mode 100644 index 0000000..1def925 --- /dev/null +++ b/slx.h @@ -0,0 +1,254 @@ +/* + * Manifest constants for the Software Imaging K.K. protocol + * for Lexmark printers. + * + * I.E. its a knock off of ZjStream... + */ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +typedef enum { + SLT_START_DOC = 0, + SLT_END_DOC = 1, + SLT_START_PAGE = 2, + SLT_END_PAGE = 3, + SLT_JBIG_BIH = 4, // Bi-level Image Header + SLT_JBIG_BID = 5, // Bi-level Image Data blocks + SLT_END_JBIG = 6, + SLT_SIGNATURE = 7, + SLT_RAW_IMAGE = 8, // full uncompressed plane follows + SLT_START_PLANE = 9, + SLT_END_PLANE =10, + + SLT_2600N_PAUSE =11, + SLT_2600N =12, // hplj2600n +} SL_TYPE; + +typedef struct _SL_HEADER { + DWORD size; /* total record size, includes sizeof(SL_HEADER) */ + DWORD type; /* SL_TYPE */ + DWORD items; /* use varies by Type, e.g. item count */ + WORD reserved; /* later to be sumcheck or CRC */ + WORD signature; /* 'ZZ' */ +} SL_HEADER; + +typedef enum { +/* + * 0x0000-0x7FFF : Zenographics reserved + */ + /* for START_DOC */ + SLI_PAGECOUNT = 0, // number of SLT_START_PAGE / SLT_END_PAGE + // pairs, if known + SLI_DMCOLLATE = 1, // + SLI_DMDUPLEX = 2, // + SLI_DISPLAY = 3, // Display string (16 letters max) + SLI_DISPLAY_PC = 4, // Display Paper Change string (4 letters max) + SLI_PRINT_SLOWLY = 5, // Print slowly + SLI_REMOVE_SLEEP_MODE= 6, // Remove Sleep Mode + SLI_USE_SEP_SHEETS = 8, // Use separator sheets + SLI_COUNT = 10, // An increasing count + + /* for START_PAGE */ + SLI_DMPAPER = 0x100, // E.G. letter, a4, etc. + SLI_DMCOPIES = 0x101, // from DEVMODE + SLI_DMDEFAULTSOURCE = 0x102, // from DEVMODE (DMBIN?) + SLI_DMMEDIATYPE = 0x103, // from DEVMODE + SLI_NBIE = 0x104, // number of Bi-level Image Entities, + // e.g. 1 for monochrome, 4 for color + SLI_RESOLUTION_X = 0x105, // dots per inch + SLI_RESOLUTION_Y = 0x106, + SLI_OFFSET_X = 0x107, // upper left corner + SLI_OFFSET_Y = 0x108, + SLI_RASTER_X = 0x109, // raster dimensions + SLI_RASTER_Y = 0x10a, + SLI_CUSTOM_X = 0x10b, // Custom Page Width + SLI_CUSTOM_Y = 0x10c, // Custom Page Width + SLI_VIDEO_X = 0x10d, // video dimensions (if diff. than raster) + SLI_VIDEO_Y = 0x10e, + + SLI_PAD =99, // bogus item type for padding stream + + SLI_LAST +} SL_ITEM; + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +typedef enum { + DMBIN_AUTO = 0, + DMBIN_CASSETTE1 = 1, +} DM_BIN; + +typedef enum { + DMMEDIA_STANDARD = 0, // Standard paper + DMMEDIA_TRANSPARENCY= 1, // Transparency + + DMMEDIA_GLOSSY = 3, // Glossy paper + DMMEDIA_USER = 4, // Device-specific media start here + + DMMEDIA_ENVELOPE = 0x101, // Envelope + DMMEDIA_LETTERHEAD = 0x103, // Letterhead + DMMEDIA_THICK_STOCK = 0x105, // Thick Stock + DMMEDIA_POSTCARD = 0x106, // Postcard + DMMEDIA_LABELS = 0x107, // Labels +} DMMEDIA; + +typedef enum { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2, +} DMCOLOR; + +typedef enum { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2, +} DMORIENT; + +typedef enum { + DMPAPER_A4 = 2, // A4 Sheet, 210- by 297-millimeters + DMPAPER_LETTER = 6, // Letter, 8 1/2- by 11-inches + + DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches + DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches + DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches + DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches + DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches + DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches + DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters + DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters + DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters + DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters + DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper + DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper + DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper + DMPAPER_10X14 =16, // 10- by 14-inch sheet + DMPAPER_11X17 =17, // 11- by 17-inch sheet + DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches + DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches + DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches + DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches + DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches + DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches + DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches + DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches + DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches + DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters + DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters + DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters + DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters + DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters + DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters + DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters + DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters + DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters + DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters + DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches + DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches + DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches + DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in + DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in + + DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm + DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm + DMPAPER_9X11 =44, // 9 x 11 in + DMPAPER_10X11 =45, // 10 x 11 in + DMPAPER_15X11 =46, // 15 x 11 in + DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm + DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE + DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE + DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in + DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in + DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in + DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in + DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in + DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm + DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in + DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm + DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm + DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in + DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm + DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm + DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm + DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm + DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm + DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm + DMPAPER_A2 =66, // A2 420 x 594 mm + DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm + DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm +} DMPAPER; + +typedef enum { + SLIT_UINT32 = 1, // unsigned integer + SLIT_INT32 = 2, // signed integer + SLIT_STRING = 3, // byte string, NUL-terminated, DWORD-aligned + SLIT_BYTELUT= 4 // DWORD count followed by that many byte entries +} SL_ITEM_TYPE; + +typedef struct _SL_ITEM_HEADER { + DWORD size; // total record size, includes sizeof(SL_ITEM_HEADER) + WORD item; // SL_ITEM + BYTE type; // SL_ITEM_TYPE + BYTE param; // general use +} SL_ITEM_HEADER; + +typedef struct _SL_ITEM_UINT32 { + SL_ITEM_HEADER header; + DWORD value; +} SL_ITEM_UINT32; + +typedef struct _SL_ITEM_INT32 { + SL_ITEM_HEADER header; + int32_t value; +} SL_ITEM_INT32; + +typedef union _SWAP_32{ + char byte[sizeof(uint32_t)]; + uint32_t dword; +} SWAP_32; + +typedef union _SWAP_16{ + char byte[sizeof(uint16_t)]; + uint16_t word; +} SWAP_16; + +static inline uint32_t +be32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +be16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} diff --git a/slxdecode.1in b/slxdecode.1in new file mode 100644 index 0000000..7f9ebc5 --- /dev/null +++ b/slxdecode.1in @@ -0,0 +1,109 @@ +.TH slxdecode 1 "${MODpage}" "slxdecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +slxdecode \- Decode a SLX stream into human readable form. +.SH SYNOPSIS +.B slxdecode +.RI [ options "] <" slx-file +.SH DESCRIPTION +.B slxdecode +decodes a SLX stream into human readable form. +.P +A SLX stream is the printer language used by some Lexmark +printers, such as the C500. +.P +More information on the Software Imaging K.K. SLX stream can be found at: +.P +.RS +http://softwareimaging.com/products-services/sorcerer/index.asp +.RE + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-r\0 basename +Basename of .jbg file for saving raw planes +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an SLX file created by foo2slx. + +.nf +.ft CW +$ slxdecode < testpage.zm +SLX_MAGIC, 0x584c53a5 (SLX) +SLT_START_DOC, 12 items + SLI_PAGECOUNT, 4294967295 (0xffffffff) + SLI_DMDUPLEX, 0 (0x0) + SLI_DMCOLLATE, 0 (0x0) + SLI_0x3, 0 (0x0) + SLI_DISPLAY, 0 (0x0) + SLI_0x5, 0 (0x0) + SLI_0x6, 0 (0x0) + SLI_0x7, 1 (0x1) + SLI_0x8, 0 (0x0) + SLI_0x9, 0 (0x0) + SLI_COUNT, 1 (0x1) + SLI_DMCOLLATE, 0 (0x0) +SLT_START_PAGE, 16 items [Page 1] + SLI_DMPAPER, 6 (0x6) + SLI_CUSTOM_X, 0 (0x0) + SLI_CUSTOM_Y, 0 (0x0) + SLI_DMCOPIES, 1 (0x1) + SLI_DMDEFAULTSOURCE, 0 (0x0) + SLI_DMMEDIATYPE, 0 (0x0) + SLI_NBIE, 0 (0x0) + SLI_RESOLUTION_X, 600 (0x258) + SLI_RESOLUTION_Y, 600 (0x258) + SLI_OFFSET_X, 102 (0x66) + SLI_OFFSET_Y, 102 (0x66) + SLI_RASTER_X, 4896 (0x1320) + SLI_RASTER_Y, 6392 (0x18f8) + SLI_0x10d, 4896 (0x1320) + SLI_0x10e, 6392 (0x18f8) + SLI_0x10f, 1 (0x1) +SLT_JBIG_BIH, 0 items + Data: 20 bytes + DL = 0, D = 0, P = 1, - = 0, XY = 4896 x 6392 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 8 TPBON + 50 stripes, 0 layers, 1 planes +SLT_JBIG_BID, 0 items + Data: 116 bytes +SLT_END_JBIG, 0 items +SLT_END_PAGE, 0 items +SLT_END_DOC, 0 items +.ft P +.fi + +.SH FILES +.BR /usr/bin/slxdecode +.SH SEE ALSO +.BR foo2slx-wrapper (1), +.BR foo2slx (1), +.BR jbg2pbm (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLSLX}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/slxdecode.c b/slxdecode.c new file mode 100644 index 0000000..069dead --- /dev/null +++ b/slxdecode.c @@ -0,0 +1,598 @@ +/* + * $Id: slxdecode.c,v 1.16 2014/01/24 19:25:47 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "slx.h" +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *RawFile; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" slxdecode [options] < zjs-file\n" +"\n" +" Decode a SLX stream into human readable form.\n" +"\n" +" A SLX stream is the printer language used by some Lexmark\n" +" printers, such as the C500n.\n" +"\n" +" More information on SLX Stream can be found at:\n" +"\n" +" http://softwareimaging.com/products-services/sorcerer/index.asp\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -r basename Basename of .jbg file for saving raw planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +decode(FILE *fp) +{ + DWORD magic; + SL_HEADER hdr; + int c; + int rc; + int size; + int items; + char *codestr; + FILE *dfp = NULL; + FILE *rfp = NULL; + int pageNum = 0; + int padding; + int len; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[20]; + int bihlen = 0; + int imageCnt[5] = {0,0,0,0,0}; + int pn = 0; + int incrY = 0; + int totSize = 0; + + /* + * Zenographics ZX format + */ + c = getc(fp); + if (c == EOF) + { + printf("EOF on file reading header.\n"); + return; + } + ungetc(c, fp); + if (c == '\033') + { + char buf[1024]; + + while (fgets(buf, sizeof(buf), fp)) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (strcmp(buf, "@PJL ENTER LANGUAGE = ZJS\r\n") == 0) + break; + if (strcmp(buf, "@PJL USTATUS TIMED = 30\n") == 0) + { + rc = fread(buf, 52, 1, fp); + break; + } + } + if (feof(fp)) + { + printf("\n"); + return; + } + } + + /* + * Software Imaging K.K. SLX_MAGIC format + */ + rc = fread(&magic, len = sizeof(magic), 1, fp); + if (rc != 1) + { + printf("Missing SLX Magic number\n"); + return; + } + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + printf("SLX_MAGIC, 0x%lx (%.3s)\n", (long)magic, (char *) &magic + 1); + + if (memcmp((char *) &magic, "\245SLX", 4) && + memcmp((char *) &magic, "XLS\245", 4)) + { + printf(" Don't understand magic number 0x%lx\n", (long)magic); + return; + } + + curOff += len; + for (;;) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + + rc = fread(&hdr, len = sizeof(hdr), 1, fp); + if (rc != 1) break; + curOff += len; + + hdr.type = be32(hdr.type); + hdr.size = be32(hdr.size); + hdr.items = be32(hdr.items); + hdr.reserved = be16(hdr.reserved); + hdr.signature = be16(hdr.signature); + + #define CODESTR(X) case X: codestr = #X; + switch (hdr.type) + { + CODESTR(SLT_START_DOC) break; + CODESTR(SLT_END_DOC) break; + CODESTR(SLT_START_PAGE) ++pageNum; + memset(imageCnt, 0, sizeof(imageCnt)); + totSize = 0; + break; + CODESTR(SLT_END_PAGE) pn = 0; + break; + CODESTR(SLT_JBIG_BIH) break; + CODESTR(SLT_JBIG_BID) break; + CODESTR(SLT_END_JBIG) break; + CODESTR(SLT_SIGNATURE) break; + CODESTR(SLT_RAW_IMAGE) break; + CODESTR(SLT_START_PLANE) break; + CODESTR(SLT_END_PLANE) break; + CODESTR(SLT_2600N_PAUSE) break; + CODESTR(SLT_2600N) break; + default: codestr = NULL; break; + } + + if (codestr) + printf("%s, %ld items", codestr, (long) hdr.items); + else + printf("SLT_0x%lx, %ld items", (long) hdr.type, (long) hdr.items); + if (hdr.size & 3) + { + printf(" (unaligned size)"); + padding = 4 - (hdr.size & 3); + } + else + padding = 0; + if (hdr.reserved) + printf(" (reserved=0x%x)", hdr.reserved); + if (hdr.signature != 0xa5a5) + printf(" (funny siggy 0x%x)", hdr.signature); + if (hdr.type == SLT_START_PAGE) + printf(" [Page %d]", pageNum); + if (hdr.type == SLT_JBIG_BIH) + { + switch (++pn) + { + case 1: printf(" [black]"); break; + case 2: printf(" [cyan]"); break; + case 3: printf(" [magenta]"); break; + case 4: printf(" [yellow]"); break; + } + } + printf("\n"); + fflush(stdout); + + items = hdr.items; + size = hdr.size - sizeof(hdr); + + while (items--) + { + SL_ITEM_HEADER ihdr; + int isize; + DWORD val; + char buf[512]; + int i, c; + + if (PrintOffset) + printf(" %d: ", curOff); + else if (PrintHexOffset) + printf(" %6x: ", curOff); + + size -= sizeof(ihdr); + + rc = fread(&ihdr, len = sizeof(ihdr), 1, fp); + if (rc != 1) break; + curOff += len; + + ihdr.size = be32(ihdr.size); + ihdr.item = be16(ihdr.item); + + isize = ihdr.size - sizeof(ihdr); + size -= isize; + + switch (ihdr.item) + { + CODESTR(SLI_PAGECOUNT) break; + CODESTR(SLI_DMCOLLATE) break; + CODESTR(SLI_DMDUPLEX) break; + CODESTR(SLI_DISPLAY) break; + CODESTR(SLI_DISPLAY_PC) break; + CODESTR(SLI_PRINT_SLOWLY) break; + CODESTR(SLI_REMOVE_SLEEP_MODE) break; + CODESTR(SLI_USE_SEP_SHEETS) break; + CODESTR(SLI_COUNT) break; + + CODESTR(SLI_DMPAPER) break; + CODESTR(SLI_DMCOPIES) break; + CODESTR(SLI_DMDEFAULTSOURCE) break; + CODESTR(SLI_DMMEDIATYPE) break; + CODESTR(SLI_NBIE) break; + CODESTR(SLI_RESOLUTION_X) break; + CODESTR(SLI_RESOLUTION_Y) break; + CODESTR(SLI_OFFSET_X) break; + CODESTR(SLI_OFFSET_Y) break; + CODESTR(SLI_RASTER_X) break; + CODESTR(SLI_RASTER_Y) break; + CODESTR(SLI_CUSTOM_X) break; + CODESTR(SLI_CUSTOM_Y) break; + CODESTR(SLI_VIDEO_X) break; + CODESTR(SLI_VIDEO_Y) break; + default: codestr = NULL; break; + } + + switch (ihdr.type) + { + case SLIT_UINT32: + rc = fread(&val, len = sizeof(val), 1, fp); + curOff += len; + val = be32(val); + isize -= 4; + if (codestr) + printf(" %s, %ld (0x%lx) %s", + codestr, (long) val, (long) val, + ihdr.type == SLIT_INT32 ? "(int)" : ""); + else + printf(" SLI_0x%x, %ld (0x%lx) %s", + ihdr.item, (long) val, (long) val, + ihdr.type == SLIT_INT32 ? "(int)" : ""); + if (ihdr.item == SLI_NBIE) + ; // pn = (val & 7); + break; + case SLIT_INT32: + case SLIT_STRING: + for (i = 0; i < sizeof(buf) - 1; ) + { + c = fgetc(fp); + if (c == EOF) break; + ++curOff; + buf[i++] = c; + --isize; + if (isize == 0 || c == 0) break; + } + buf[i] = 0; + if (codestr) + printf(" %s, '%s'", codestr, buf); + else + printf(" SLI_0x%x, '%s'", ihdr.item, buf); + break; + default: + case SLIT_BYTELUT: + rc = fread(&val, len = sizeof(val), 1, fp); + curOff += len; + val = be32(val); + isize -= 4; + if (codestr) + printf(" %s, BYTELUT (len=%d)", codestr, val); + else + printf(" SLI_0x%x, BYTELUT (len=%d)", ihdr.item, val); + if (0) // ihdr.item == SLI_JBIG_BIH && val == 20) + { + bihlen = fread(bih, 1, len = sizeof(bih), fp); + if (bihlen <= 0) + isize = 0; + else + { + isize -= bihlen; + curOff += len; + } + if (bihlen == 20) + { + printf("\n"); + print_bih(bih); + } + } + break; + } + + if (ihdr.param != 0) + printf(" (reserved=0x%x)", ihdr.param); + printf("\n"); + fflush(stdout); + + while (isize-- > 0) + { + fgetc(fp); + ++curOff; + } + + if (size <= 0 && items) + { + printf(" #items is wrong!\n"); + break; + } + } + + if (size) + { + if (PrintOffset) + printf(" %d:", curOff); + else if (PrintHexOffset) + printf(" %6x:", curOff); + printf(" Data: %d bytes\n", size); + fflush(stdout); + totSize += size; + + if (hdr.type == SLT_JBIG_BIH) + { + bihlen = fread(bih, 1, len = sizeof(bih), fp); + if (bihlen <= 0) + size = 0; + else + { + size -= bihlen; + curOff += len; + } + if (bihlen == 20) + print_bih(bih); + } + + if ( (RawFile || DecFile) && + (hdr.type == SLT_JBIG_BIH || hdr.type == SLT_JBIG_BID + || hdr.type == SLT_2600N) ) + { + if (hdr.type == SLT_JBIG_BIH) + { + if (RawFile) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.jbg", + RawFile, pageNum, pn); + rfp = fopen(buf, "w"); + } + if (rfp) + rc = fwrite(bih, bihlen, 1, rfp); + if (DecFile) + { + size_t cnt; + + // debug(1, "pn = %d\n", pn); + imageCnt[pn] = 0; + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + } + } + while (size--) + { + int c; + c = fgetc(fp); + ++curOff; + if (rfp) + fputc(c, rfp); + if (DecFile) + { + size_t cnt; + unsigned char ch = c; + + rc = JBG_EAGAIN; + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + + // debug(1, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + if (image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, pn); + dfp = fopen(buf, + imageCnt[pn] ? "a" : "w"); + if (dfp) + { + if (imageCnt[pn] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + imageCnt[pn] += incrY; + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + } + } + } + } + else + { + while (size--) + { + fgetc(fp); + ++curOff; + } + if (rfp) + { + fclose(rfp); + rfp = NULL; + } + } + } + + while (padding--) + { + fgetc(fp); + ++curOff; + } + + if (hdr.type == SLT_END_DOC) + break; + } + if (rfp) + fclose(rfp); + printf("Total size: %d bytes\n", totSize); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hor:D:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'r': RawFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + for(;;) + { + decode(stdin); + c = getc(stdin); ungetc(c, stdin); + if (feof(stdin)) + break; + } + + exit(0); +} diff --git a/testpage.ps b/testpage.ps new file mode 100644 index 0000000..3184363 --- /dev/null +++ b/testpage.ps @@ -0,0 +1,416 @@ +%!PS-Adobe-2.0 +%%Title: testpage.fig +%%Creator: fig2dev Version 3.2.3 Patchlevel +%%CreationDate: Wed Aug 30 15:28:56 2000 +%%For: prospector@porky.devel.redhat.com () +%%Orientation: Portrait +%%Pages: 1 +%%BoundingBox: 0 0 612 792 +%%BeginSetup +%%IncludeFeature: *PageSize Letter +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 792 moveto 0 0 lineto 612 0 lineto 612 792 lineto closepath clip newpath +0.0 792.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +%%Page: 1 1 +10 setmiterlimit + 0.06000 0.06000 sc +%%Page: 1 1 +/Helvetica-Bold ff 270.00 scf sf +4800 2100 m +gs 1 -1 sc (This is the Red Hat Printconf) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 2445 m +gs 1 -1 sc (US Letter PostScript Test Page) dup sw pop 2 div neg 0 rm col-1 sh gr +% Polyline +7.500 slw +n 2400 7200 m 3000 7200 l 3000 7500 l 2400 7500 l + cp gs col10 1.00 shd ef gr gs col-1 s gr +% Polyline +n 3600 7200 m 4200 7200 l 4200 7500 l 3600 7500 l + cp gs col6 1.00 shd ef gr gs col-1 s gr +% Polyline +n 4200 7200 m 4800 7200 l 4800 7500 l 4200 7500 l + cp gs col5 1.00 shd ef gr gs col-1 s gr +% Polyline +n 4800 7200 m 5400 7200 l 5400 7500 l 4800 7500 l + cp gs col26 1.00 shd ef gr gs col-1 s gr +% Polyline +n 5400 7200 m 6000 7200 l 6000 7500 l 5400 7500 l + cp gs col31 1.00 shd ef gr gs col-1 s gr +% Polyline +n 6000 7200 m 6600 7200 l 6600 7500 l 6000 7500 l + cp gs col3 1.00 shd ef gr gs col-1 s gr +% Polyline +n 3000 7200 m 3600 7200 l 3600 7500 l 3000 7500 l + cp gs col20 1.00 shd ef gr gs col-1 s gr +% Polyline +n 6600 7200 m 7200 7200 l 7200 7500 l 6600 7500 l + cp gs col2 1.00 shd ef gr gs col-1 s gr +/Helvetica-Bold ff 150.00 scf sf +5100 7800 m +gs 1 -1 sc (Brown) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 150.00 scf sf +5700 7800 m +gs 1 -1 sc (Gold) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 150.00 scf sf +6900 7800 m +gs 1 -1 sc (Green) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 150.00 scf sf +3900 7800 m +gs 1 -1 sc (Yellow) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 150.00 scf sf +3300 7800 m +gs 1 -1 sc (Red) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 150.00 scf sf +2700 7800 m +gs 1 -1 sc (Blue) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 150.00 scf sf +4500 7800 m +gs 1 -1 sc (Purple) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 150.00 scf sf +6300 7800 m +gs 1 -1 sc (Cyan) dup sw pop 2 div neg 0 rm col-1 sh gr +% Polyline +15.000 slw +n 600 600 m 9600 600 l 9600 12600 l 600 12600 l + cp gs col-1 s gr +% Polyline +n 1200 1200 m 9000 1200 l 9000 12000 l 1200 12000 l + cp gs col-1 s gr +% Polyline +% +% Originally from a GIF File: redhat-logo-new.gif + +% Begin Imported PCX File: redhat-logo-new.gif + +n gs +2925 3135 tr +15.000000 -15.000000 sc +0 -91 tr +0 0 tr +sa +/showpage {} def +% PCX image follows: +250 91 sc +%*********************************************************************** +%* * +%* Object: Image decoding PS-routine Date: 01.02.93 * +%* Author: Evgeni CHERNYAEV (chernaev@vxcern.cern.ch) * +%* * +%* Function: Display a run-length encoded color image. * +%* The image is displayed in color on viewers and printers * +%* that support color Postscript, otherwise it is displayed * +%* as grayscale. * +%* * +%*********************************************************************** +/byte 1 string def +/color 3 string def +systemdict /colorimage known { /cnt 3 def } { /cnt 1 def } ifelse +/String 256 cnt mul string def +%*********************************************************************** +/DecodePacket % Decode color packet * +%*********************************************************************** +{ + currentfile byte readhexstring pop 0 get + /Nbyte exch 1 add cnt mul def + /color ColorMap currentfile byte readhexstring pop 0 get get def + String dup + 0 cnt Nbyte 1 sub { color putinterval dup } for + pop 0 Nbyte getinterval +} bind def +%*********************************************************************** +/DisplayImage % Display run-length encoded color image * +%*********************************************************************** +{ + gsave + currentfile String readline pop + token { /columns exch def } { } ifelse + token { /rows exch def pop } { } ifelse + currentfile String readline pop + token { /Ncol exch def pop } { } ifelse + /ColorMap Ncol array def + systemdict /colorimage known { + 0 1 Ncol 1 sub { + ColorMap exch + currentfile 3 string readhexstring pop put + } for + columns rows 8 + [ columns 0 0 rows neg 0 rows ] + { DecodePacket } false 3 colorimage + }{ + 0 1 Ncol 1 sub { + ColorMap exch + 1 string dup 0 + currentfile color readhexstring pop pop + color 0 get 0.299 mul + color 1 get 0.587 mul add + color 2 get 0.114 mul add + cvi put put + } for + columns rows 8 + [ columns 0 0 rows neg 0 rows ] + { DecodePacket } image + } ifelse + grestore +} bind def +%*********************************************************************** +%* Image decoding * +%*********************************************************************** +DisplayImage +250 91 +256 +000000 390000 7b7b7b 737373 636363 fefefe fcfcfc d4d4d4 1f1f1f 843129 +c0c0c0 bebebe c63121 ff0000 787878 ef1010 fdfdfd 521010 424242 efefef +dddddd a53129 101010 bdbdbd 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 +000000 000000 000000 000000 000000 000000 +360a0112080000160012e70a0004001613000012df0a00121a000012d90a000200161f00 +d60a00162300d20a00162700ce0a00122a000016cb0a1b0003010e000012c70a00120a00 +00010011000c040f000c010903010009000c010f010d020f000c001100010a000016c50a +00160a000001000c180d000c001100010a00c20a000200160a000001000f100d000f000c +00150209000c000f020d001500010a000004bf0a00020c000015120d010f000c00150011 +000000010015020d00090b000012be0a0c000001000f160d000901000001000f020d0011 +0b000012bc0a0d000011160d000c0001000000010015030d000c0c000012ba0a0e000015 +150d000f010c000f060d00110c000004b80a00160e00000f020d0015000f1b0d00150d00 +0002b60a00120e000001020d000c00010009000f1a0d000f00010d00b60a0f000009020d +0015010000010109000c001502090015000f120d00090d000016b40a10000015020d000c +000109000001000f110d000c0e000012b20a00161000000c030d00090300000100110009 +0015010c000f130d00110e00b10a000410000001000f040d00090101000c1a0d00150e00 +0016b00a11000001060d010f1b0d000f00010e00af0a001211000001250d00090f00ae0a +12000001000f240d000c0f00ad0a00120700000100090015010c050f00000009240d000f +00010f00ac0a060000010015000f080d000f000000010015240d00110f00ab0a00040500 +0011000f0a0d0015010000010009000f220d00150f000016aa0a001604000011000f0b0d +0009030000010009000f200d000c1000aa0a050000150c0d00150500000100110015000c +1d0d000f10000012a80a00040500000c0c0d000f00110800000100090015000f190d000f +1100a80a0016050000150d0d000f00110a00000100110009000f160d000c000000120016 +0e00a80a060000110f0d001500010b0000010011000c140d00150001000f000d000c0011 +00010b000004a70a06000001000c0f0d000f000900010b0000010015130d00110009030d +000f0009000109000016a60a001207000011110d000f001500010a000001000f110d000f +0001000f050d000c00110900a60a001608000009130d000c001100010800000c110d000f +0015080d001500010700420a0002021200160002260a001700020013330a090000010015 +140d000c00090001060000151d0d001500010600350a00170300070a001203000002260a +001200000004330a0a0000010015150d000f0015001104000011000f1d0d00090600350a +0013011700020000070a001300170013001600000002260a001200000012330a0b000001 +0015170d000c00090001020000111d0d000c06000012370a001700000a0a001200000002 +260a001200000012330a0c0000010009190d000c00150109000c1d0d000105000012370a +001700000a0a001200000002000a0013021700130d0a001700020103000200170c0a0012 +00000012330a0e000009000f3a0d000105000016370a001700000a0a0012000000020003 +040000040013090a00130012050000120013070a001300160600001600132e0a0f000011 +000f390d00010600120a001701020017070a0013000400160100001600040013090a0013 +00020016000000160012011700000a0a0012030001120016010000120013080a00120100 +00120102001201000012070a00130700001600132e0a100000010009380d000106000a0a +00020300000a0017001200000012001600000002050a0017011600020117000201160013 +070a00130012000000040017000200120000000300000a0a0012010000120013020a0003 +01000002070a001701000004030a000401000013070a001300170012000000120217300a +12000011000c350d000f000106000a0a00130117000200000013001600120013000a0013 +00000016050a001600120013030a001300160012070a000300160017030a000401000a0a +001201000013040a001200000012070a00170200030a001701000017090a001200000012 +330a130000010009000f330d001507000d0a0017000000120004020a00020100040a0002 +00000017050a001700000017050a001300000002050a001600000a0a001200000012050a +000200000012070a0013001200000012030a000201000017090a001200000012330a1500 +00010015000f310d001107000d0a001700000012030a001300020017040a0112070a0012 +0003050a000200000013050a000200000a0a001200000003050a000201000b0a01170002 +000402000017090a001200000012330a1100000e00060105000600080011000c2f0d0009 +070000120d0a0017000000170b0a00120016071200160012050a00020012060a00020000 +0a0a001200000002050a00020100080a0017001207000017090a001200000012330a1000 +00080505000e00000011000c2c0d000c0001070000120d0a001700000c0a01120902050a +00020012060a000200000a0a001200000002050a00020100070a00020300001600120003 +000201000017090a001200000012020a0003000000022d0a1000000b0605000801000011 +000c290d000c0001080000120d0a001700000c0a001200040f0a00020012060a00020000 +0a0a001200000002050a00020100060a00130016000000160017030a001701000017000a +00120002060a001200000012020a0012000000022d0a100000140605000603000011000c +260d000c000109000e0a001700000c0a00030016070a00030002050a001700000013050a +001200000a0a001200000002050a00020100060a001701000017040a0002010000170013 +0100060a001200000012020a0012000000022d0a100000140705000b0000010e01000011 +0015000f220d000900010a000e0a001700000c0a001700000002050a001300000002050a +001300160002040a001701000a0a001200000002050a000200000016060a001701000017 +040a00120100001700130100060a001200000012020a0012000000022d0a00120f000008 +08050006010500140008010000010009000f1e0d000f00110c000e0a001700000d0a0004 +00160017030a00170112070a000200000002020a0017001601000a0a001200000004050a +00030100060a0013010000120013010a001300120200011700000012060a000201000017 +000a0017010000172d0a00031000000b0b0500060300000100110009000c000f180d000f +000900010d000c0a01020004000002020a0a001300120000001201020012000000120013 +080a0004000000120002001205000002040a000200160012020000120016001700130016 +001200160100001200160002040a000302000116010001160000011600000012060a0017 +050000122e0a00020200070e0005000e0008030000140b0500140600000100110015000c +000f110d000f000c001100010e0000120c0a000305120c0a001700030112000400020b0a +000202120102010401170013040a000306000002001706000012050a0002001603000012 +01170016010000160017070a000200160200001200172f0a02000a050006000801000008 +0c05000b09000101001100090015010c060f010c010901011100440a0117020a0117010a +0117020a00130017080a02170013110a01170013310a0012010000060a0500060200000e +0c05000b2e00a80a0002010e0c0500140200000800060b050014000807000008000e0008 +0b00001613000016a90a00080e0500060008010000140e05050603050006011402050006 +03140005001413000003a80a1205010625050007120000167a0a00120200001200030012 +270a3a05000e1100001600127b0a00120017001200160112270a3a051100011600027b0a +001200170012001600000012280a38050014110001167c0a000200130302280a29050114 +0205010607050014100001160002ab0a28050014010000080007000b0000000e0705000b +100000120016ad0a27050006000e000803000014070500080f000116af0a290502140006 +0705000610000112af0a3505000e0300000b040a020e0007000e0008001200160010af0a +3405000e0400000a0d05b00a320500140500000a0d05b10a310500080300000e00060d05 +b30a2f05000e0200000b1005b40a2d0500140100000800061005b50a2c05000602000006 +1005b70a2b050008010000141005b90a2905000e0000000800061005bb0a2805000e0014 +1105bd0a3a05c00a3705c20a3405c50a3205c80a2e05cc0a2b05ce0a2805d30a2305d70a +1e05de0a1705e60a0d05ff0aff0aff0aff0aff0a960a +restore grestore +% +% End Imported PIC File: redhat-logo-new.gif +% +/Times-Roman ff 180.00 scf sf +4800 12375 m +gs 1 -1 sc (0.5") col-1 sh gr +/Times-Roman ff 180.00 scf sf +4725 900 m +gs 1 -1 sc (0.5") col-1 sh gr +/Times-Roman ff 180.00 scf sf +4800 11850 m +gs 1 -1 sc (1") col-1 sh gr +/Times-Roman ff 180.00 scf sf +4800 1500 m +gs 1 -1 sc (1") col-1 sh gr +/Times-Roman ff 180.00 scf sf +750 7500 m +gs 1 -1 sc (0.5") col-1 sh gr +/Times-Roman ff 180.00 scf sf +1350 7500 m +gs 1 -1 sc (1") col-1 sh gr +/Times-Roman ff 180.00 scf sf +8700 7500 m +gs 1 -1 sc (1") col-1 sh gr +/Times-Roman ff 180.00 scf sf +9225 7500 m +gs 1 -1 sc (0.5") col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 5040 m +gs 1 -1 sc (This logo has a red hat, so) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 5385 m +gs 1 -1 sc (if your printer is configured for) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 5730 m +gs 1 -1 sc (color it should be red!) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 6420 m +gs 1 -1 sc (Here are some other colors; they) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 6765 m +gs 1 -1 sc (will appear as greys on a B&W printer...) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 9225 m +gs 1 -1 sc (are spaced at 0.5" and 1") dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 8880 m +gs 1 -1 sc (The boxes bordering this page) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 9600 m +gs 1 -1 sc (from the sides of the paper.) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 10500 m +gs 1 -1 sc (It is not unusual for the 0.5" bottom margin) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 10845 m +gs 1 -1 sc (not to show. Many printers cannot) dup sw pop 2 div neg 0 rm col-1 sh gr +/Helvetica-Bold ff 270.00 scf sf +4800 11190 m +gs 1 -1 sc (print that close to the bottom of the page.) dup sw pop 2 div neg 0 rm col-1 sh gr +$F2psEnd +rs +showpage diff --git a/usb_printerid.1in b/usb_printerid.1in new file mode 100644 index 0000000..0454ef6 --- /dev/null +++ b/usb_printerid.1in @@ -0,0 +1,50 @@ +.TH usb_printerid 1 "${MODpage}" "usb_printerid ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +usb_printerid \- prints the ID of the printer on a USB port +.SH SYNOPSIS +.B usb_printerid +.RI [ options "] /dev/usb/lpNNN" +.SH DESCRIPTION +.B usb_printerid +prints the identification of the printer on a USB port using +the ioctl control +\fBLPIOC_GET_DEVICE_ID\fP. + +.SH EXAMPLES +Print the USB info before and after downloading the firmware. + +.nf +.ft CW +# usb_printerid /dev/usb/lp0 +GET_DEVICE_ID string: +MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS:PRINTER;\e +DES:HP LaserJet 1020; + +# cp /usr/share/foo2zjs/firmware/sihp1020.dl /dev/usb/lp0 + +# usb_printerid /dev/usb/lp0 +GET_DEVICE_ID string: +MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS:PRINTER;\e +DES:HP LaserJet 1020;FWVER:20050309; +.ft P +.fi + +.SH FILES +.BR /usr/bin/usb_printerid, +.BR /usr/share/foo2*/firmware/* +.SH SEE ALSO +.BR arm2hpdl (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/usb_printerid.c b/usb_printerid.c new file mode 100644 index 0000000..8207d67 --- /dev/null +++ b/usb_printerid.c @@ -0,0 +1,74 @@ +/* + * Test program to try to query device id from printer. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define IOCNR_GET_DEVICE_ID 1 +#define LPIOC_GET_DEVICE_ID(len) \ + _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len) // get device_id string +#define LPGETSTATUS 0x060b // drivers/char/lp.c + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +int +main (int argc, char *argv[]) +{ + int fd; + unsigned char argp[1024]; + int length; + + --argc; + ++argv; + + if (argc != 1) + error(1, "usage: usb_printerid /dev/usb/lp0\n"); + + fd = open(argv[0], O_RDWR); + if (fd < 0) + error(1, "can't open '%s'\n", argv[0]); + + if (ioctl(fd, LPIOC_GET_DEVICE_ID(sizeof(argp)), argp) < 0) + error(1, "GET_DEVICE_ID on '%s'\n", argv[0]); + + length = (argp[0] << 8) + argp[1] - 2; + printf("GET_DEVICE_ID string:\n"); + fwrite(argp + 2, 1, length, stdout); + printf("\n"); + + #if 0 + if (ioctl(fd, LPGETSTATUS, &status) < 0) + error(1, "LPGETSTATUS on '%s'\n", argv[0]); + + printf("Status: 0x%02x\n", status); + #endif + + close(fd); + exit(0); +} diff --git a/xqx.h b/xqx.h new file mode 100644 index 0000000..a7b97ee --- /dev/null +++ b/xqx.h @@ -0,0 +1,224 @@ +/* + * Manifest constants for the ZjStream protocol + * + * I'm told that a lot of this stuff came from a file called "zjrca.h". + * But a Google search does not turn up that file. I added my own + * improvements and missing pieces. -Rick + */ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +typedef enum { + XQX_START_DOC = 1, + XQX_END_DOC = 2, + XQX_START_PAGE = 3, + XQX_END_PAGE = 4, + XQX_START_PLANE = 5, + XQX_END_PLANE = 6, + XQX_JBIG = 7, + + // XQX_2600N_PAUSE =11, + // XQX_2600N =12, +} XQX_TYPE; + +typedef struct _XQX_HEADER { + DWORD type; /* ZJ_TYPE */ + DWORD items; /* total record size, includes sizeof(ZJ_HEADER) */ +} XQX_HEADER; + +typedef enum { + XQXI_DMDUPLEX = 0x10000002, // from DEVMODE (DMBIN?) + XQXI_DMDEFAULTSOURCE= 0x20000006, // from DEVMODE (DMBIN?) + XQXI_DMMEDIATYPE = 0x20000000, // from DEVMODE + XQXI_RESOLUTION_X = 0x20000008, // dots per inch + XQXI_RESOLUTION_Y = 0x20000009, + XQXI_RASTER_X = 0x2000000d, // dots per inch + XQXI_RASTER_Y = 0x2000000e, + XQXI_VIDEO_BPP = 0x2000000a, // video bits per pixel + XQXI_VIDEO_X = 0x2000000f, // video dimensions + XQXI_VIDEO_Y = 0x20000010, + XQXI_ECONOMODE = 0x20000011, // HP's "EconoMode", 0=OFF, 1=ON + XQXI_DMPAPER = 0x20000001, + XQXI_DUPLEX_PAUSE = 0x20000012, // 0,1=front side; 2-3=back side + XQXI_BIH = 0x40000002, + XQXI_END = 0x80000001, + + ZJI_LAST +} XQX_ITEM; + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +typedef enum { + DMBIN_TRAY1 = 1, + DMBIN_MANUAL = 4, + DMBIN_AUTO = 7, +} DM_BIN; + +typedef enum { + DMMEDIA_UNSPECIFIED = 0, // Unspecified + DMMEDIA_PLAIN = 1, // Plain paper + DMMEDIA_HP_MULTIPURPOSE = 301, + DMMEDIA_HP_OFFICE = 300, + DMMEDIA_HP_ALL_IN_ONE = 303, + DMMEDIA_HP_LASERJET = 302, + DMMEDIA_HP_PREMIUM_LASERJET = 304, + DMMEDIA_PREPRINTED = 514, + DMMEDIA_LETTERHEAD = 513, // Letterhead + DMMEDIA_TRANSPARENCY = 2, // Transparency + DMMEDIA_PREPUNCHED = 515, + DMMEDIA_LABELS = 265, // Labels + DMMEDIA_BOND = 260, + DMMEDIA_RECYCLED = 516, + DMMEDIA_COLOR = 512, + DMMEDIA_LIGHT = 258, + DMMEDIA_HEAVY = 262, + DMMEDIA_CARDSTOCK = 261, + DMMEDIA_ENVELOPE = 267, // Envelope + DMMEDIA_ROUGH = 263, +} DMMEDIA; + +typedef enum { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2, +} DMCOLOR; + +typedef enum { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2, +} DMORIENT; + +typedef enum { + DMPAPER_LETTER = 1, // Letter, 8 1/2- by 11-inches + DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches + DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches + DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches + DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches + DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches + DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches + DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters + DMPAPER_A4 = 9, // A4 Sheet, 210- by 297-millimeters + DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters + DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters + DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters + DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper + DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper + DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper + DMPAPER_10X14 =16, // 10- by 14-inch sheet + DMPAPER_11X17 =17, // 11- by 17-inch sheet + DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches + DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches + DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches + DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches + DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches + DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches + DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches + DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches + DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches + DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters + DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters + DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters + DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters + DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters + DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters + DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters + DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters + DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters + DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters + DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches + DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches + DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches + DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in + DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in + + DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm + DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm + DMPAPER_9X11 =44, // 9 x 11 in + DMPAPER_10X11 =45, // 10 x 11 in + DMPAPER_15X11 =46, // 15 x 11 in + DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm + DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE + DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE + DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in + DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in + DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in + DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in + DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in + DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm + DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in + DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm + DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm + DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in + DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm + DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm + DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm + DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm + DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm + DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm + DMPAPER_A2 =66, // A2 420 x 594 mm + DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm + DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm +} DMPAPER; + +typedef struct _XQX_ITEM_HEADER { + DWORD type; // type + DWORD size; // total record size following +} XQX_ITEM_HEADER; + +typedef struct _XQX_ITEM_UINT32 { + XQX_ITEM_HEADER header; + DWORD value; +} XQX_ITEM_UINT32; + +typedef union _SWAP_32{ + char byte[sizeof(uint32_t)]; + uint32_t dword; +} SWAP_32; + +typedef union _SWAP_16{ + char byte[sizeof(uint16_t)]; + uint16_t word; +} SWAP_16; + +static inline uint32_t +be32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +be16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} diff --git a/xqxdecode.1in b/xqxdecode.1in new file mode 100644 index 0000000..488d192 --- /dev/null +++ b/xqxdecode.1in @@ -0,0 +1,111 @@ +.TH xqxdecode 1 "${MODpage}" "xqxdecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +xqxdecode \- Decode a XQX stream into human readable form. +.SH SYNOPSIS +.B xqxdecode +.RI [ options "] <" xqx-file +.SH DESCRIPTION +.B xqxdecode +decodes a XQX stream into human readable form. +.P +An XQX stream is the printer language used by some HP LaserJet +printers, such as the HP LaserJet M1005 (MFP). + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an XQX stream file created by foo2xqx. + +.nf +.ft CW +$ xqxdecode -h < testpage.xm + 0: \\033%-12345X@PJL JOB + 12: @PJL SET JAMRECOVERY=OFF + 2b: @PJL SET DENSITY=3 + 3e: @PJL SET ECONOMODE=OFF + 55: @PJL SET RET=MEDIUM + 69: @PJL INFO STATUS + 7a: @PJL USTATUS DEVICE = ON + 93: @PJL USTATUS JOB = ON + a9: @PJL USTATUS PAGE = ON + c0: @PJL USTATUS TIMED = 30 + 10c: @PJL SET JOBATTR="JobAttr4=20061118160242" + 10c: XQX_MAGIC, 0x5851582c (,XQX) + 110: XQX_START_DOC(1), 7 items + 118: XQXI_0x80000000, 84 (0x54) + 124: XQXI_0x10000005, 1 (0x1) + 130: XQXI_0x10000001, 0 (0x0) + 13c: XQXI_DMDUPLEX, 0 (0x0) + 148: XQXI_0x10000000, 0 (0x0) + 154: XQXI_0x10000003, 1 (0x1) + 160: XQXI_END, 3735928559 (0xdeadbeef) + 16c: XQX_START_PAGE(3), 15 items [Page 1] + 174: XQXI_0x80000000, 180 (0xb4) + 180: XQXI_0x20000005, 1 (0x1) + 18c: XQXI_DMDEFAULTSOURCE, 7 (0x7) + 198: XQXI_DMMEDIATYPE, 1 (0x1) + 1a4: XQXI_0x20000007, 1 (0x1) + 1b0: XQXI_RESOLUTION_X, 600 (0x258) + 1bc: XQXI_RESOLUTION_Y, 600 (0x258) + 1c8: XQXI_RASTER_X, 9856 (0x2680) + 1d4: XQXI_RASTER_Y, 6432 (0x1920) + 1e0: XQXI_VIDEO_BPP, 2 (0x2) + 1ec: XQXI_VIDEO_X, 4923 (0x133b) + 1f8: XQXI_VIDEO_Y, 6432 (0x1920) + 204: XQXI_ECONOMODE, 0 (0x0) + 210: XQXI_DMPAPER, 1 (0x1) + 21c: XQXI_END, 3735928559 (0xdeadbeef) + 228: XQX_START_PLANE(5), 4 items + 230: XQXI_0x80000000, 64 (0x40) + 23c: XQXI_0x40000000, 0 (0x0) + 248: XQXI_BIH(0x40000002) + DL = 0, D = 0, P = 1, - = 0, XY = 9856 x 6432 + L0 = 128, MX = 16, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON + 51 stripes, 0 layers, 1 planes + + 264: XQXI_END, 3735928559 (0xdeadbeef) + 270: XQX_JBIG(7), 110 items + 2e6: XQX_END_PLANE(6), 0 items + 2ee: XQX_END_PAGE(4), 0 items + 2f6: XQX_END_DOC(2), 0 items +Total size: 110 bytes + 0: \\033%-12345X@PJL EOJ + 12: \\033%-12345X + +.ft P +.fi + +.SH FILES +.BR /usr/bin/xqxdecode +.SH SEE ALSO +.BR foo2xqx-wrapper (1), +.BR foo2xqx (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLXQX}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/xqxdecode.c b/xqxdecode.c new file mode 100644 index 0000000..f0ece6c --- /dev/null +++ b/xqxdecode.c @@ -0,0 +1,456 @@ +/* + * $Id: xqxdecode.c,v 1.19 2014/01/24 19:25:48 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "xqx.h" +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" xqxdecode [options] < zjs-file\n" +"\n" +" Decode a XQX stream into human readable form.\n" +"\n" +" A XQX stream is the printer language used by some HP LaserJet\n" +" printers, such as the HP LaserJet M1005 (MFP).\n" +"\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -o Print file offsets\n" +" -h Print hex file offsets\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +proff(int curOff) +{ + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); +} + +void +decode(FILE *fp) +{ + DWORD magic; + XQX_HEADER hdr; + int c; + int rc; + int i; + char *codestr; + FILE *dfp = NULL; + int planeNum = 4; + int pageNum = 0; + int len; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[20]; + int bihlen = 0; + int imageCnt[5] = {0,0,0,0,0}; + int pn = 0; + int incrY = 0; + int totSize = 0; + + /* + * XQX format + */ + c = getc(fp); + if (c == EOF) + { + printf("EOF on file reading header.\n"); + return; + } + ungetc(c, fp); + if (c == '\033') + { + char buf[1024]; + + while (fgets(buf, sizeof(buf), fp)) + { + proff(curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (0) {} + else if (strncmp(buf, "@PJL USTATUS TIMED = ", 21) == 0) + { + rc = fread(buf, 52, 1, fp); + if (rc != 1) return; + debug(2, "buf=%s\n", buf); + proff(curOff); + buf[51] = 0; + printf("%s\n", buf); + curOff += 43; + proff(curOff); + printf("\\033%s\n", buf+44); + curOff += 9; + break; + } + else if (strncmp(buf, "@PJL SET JOBATTR=", 17) == 0) + { + rc = fread(buf, 9, 1, fp); + if (rc != 1) return; + buf[9] = 0; + curOff += 9; + proff(curOff); + printf("\\033%s\n", buf+1); + curOff += 9; + break; + } + } + if (feof(fp)) + return; + } + + /* + * ??? XQX_MAGIC format + */ + rc = fread(&magic, len = sizeof(magic), 1, fp); + if (rc != 1) + { + printf("Missing XQX Magic number\n"); + return; + } + + proff(curOff); + printf("XQX_MAGIC, 0x%lx (%.4s)\n", (long)magic, (char *) &magic); + + if (memcmp((char *) &magic, ",XQX", 4)) + { + printf(" Don't understand magic number 0x%lx\n", (long)magic); + return; + } + + curOff += len; + for (;;) + { + proff(curOff); + + rc = fread(&hdr, len = sizeof(hdr), 1, fp); + if (rc != 1) break; + curOff += len; + + hdr.type = be32(hdr.type); + hdr.items = be32(hdr.items); + + #define CODESTR(X) case X: codestr = #X; + switch (hdr.type) + { + CODESTR(XQX_START_DOC) break; + CODESTR(XQX_END_DOC) break; + CODESTR(XQX_START_PAGE) ++pageNum; break; + CODESTR(XQX_END_PAGE) break; + CODESTR(XQX_START_PLANE) break; + CODESTR(XQX_END_PLANE) break; + CODESTR(XQX_JBIG) break; + default: codestr = NULL; break; + } + + if (codestr) + printf("%s(%ld), %ld items", + codestr, (long) hdr.type, (long) hdr.items); + else + printf("XQX_0x%lx, %ld items", (long) hdr.type, (long) hdr.items); + + if (hdr.type == XQX_START_PAGE) + printf(" [Page %d]", pageNum); + printf("\n"); + + if (hdr.type == XQX_JBIG) + { + for (i = 0; i < hdr.items; ++i) + { + c = fgetc(fp); + if (DecFile) + { + size_t cnt; + unsigned char ch = c; + + rc = JBG_EAGAIN; + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + + // debug(0, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + if (image) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, planeNum); + dfp = fopen(buf, + imageCnt[planeNum] ? "a" : "w"); + if (dfp) + { + if (imageCnt[planeNum] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + imageCnt[planeNum] += incrY; + rc = fwrite(image, 1, len, dfp); + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + } + } + } + curOff += hdr.items; + totSize += hdr.items; + } + else if (hdr.type == 2 && hdr.items == 0) + break; + else + { + for (i = 0; i < hdr.items; ++i) + { + XQX_ITEM_HEADER item; + DWORD val; + int j; + + proff(curOff); + rc = fread(&item, len = sizeof(item), 1, fp); + if (rc != 1) break; + curOff += len; + + item.type = be32(item.type); + item.size = be32(item.size); + switch (item.type) + { + CODESTR(XQXI_DMDUPLEX) break; + CODESTR(XQXI_DMDEFAULTSOURCE) break; + CODESTR(XQXI_DMMEDIATYPE) break; + CODESTR(XQXI_RESOLUTION_X) break; + CODESTR(XQXI_RESOLUTION_Y) break; + CODESTR(XQXI_RASTER_X) break; + CODESTR(XQXI_RASTER_Y) break; + CODESTR(XQXI_VIDEO_BPP) break; + CODESTR(XQXI_VIDEO_X) break; + CODESTR(XQXI_VIDEO_Y) break; + CODESTR(XQXI_ECONOMODE) break; + CODESTR(XQXI_DMPAPER) break; + CODESTR(XQXI_DUPLEX_PAUSE) break; + CODESTR(XQXI_BIH) break; + CODESTR(XQXI_END) break; + default: codestr = NULL; break; + } + if (item.size == 4) + { + rc = fread(&val, len = sizeof(val), 1, fp); + if (rc != 1) break; + val = be32(val); + if (codestr) + printf(" %s, %ld (0x%lx)", + codestr, (long) val, (long) val); + else + printf(" XQXI_0x%x, %ld (0x%lx)", + item.type, (long) val, (long) val); + } + else if (item.size == 20) + { + rc = fread(bih, bihlen = sizeof(bih), 1, fp); + if (rc != 1) break; + printf(" %s(0x%lx)\n", codestr, (long) item.type); + print_bih(bih); + if (DecFile) + { + size_t cnt; + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + } + } + else + { + printf(" XQXI_0x%lx, %ld size,", + (long) item.type, (long) item.size); + + for (j = 0; j < item.size; ++j) + { + c = fgetc(fp); + printf(" %02x" , c); + } + } + curOff += item.size; + printf("\n"); + } + } + } + printf("Total size: %d bytes\n", totSize); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hoD:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'o': PrintOffset = 1; break; + case 'h': PrintHexOffset = 1; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + for (;;) + { + decode(fp); + c = getc(fp); ungetc(c, fp); + if (feof(fp)) + break; + } + fclose(fp); + } + else + { + for(;;) + { + decode(stdin); + c = getc(stdin); ungetc(c, stdin); + if (feof(stdin)) + break; + } + } + printf("\n"); + + exit(0); +} diff --git a/zjs.h b/zjs.h new file mode 100644 index 0000000..e6c0bce --- /dev/null +++ b/zjs.h @@ -0,0 +1,318 @@ +/* + * Manifest constants for the ZjStream protocol + * + * I'm told that a lot of this stuff came from a file called "zjrca.h". + * But a Google search does not turn up that file. I added my own + * improvements and missing pieces. -Rick + */ + +#include +typedef uint32_t DWORD; +typedef uint16_t WORD; +typedef uint8_t BYTE; + +typedef enum { + ZJT_START_DOC = 0, + ZJT_END_DOC = 1, + ZJT_START_PAGE = 2, + ZJT_END_PAGE = 3, + ZJT_JBIG_BIH = 4, // Bi-level Image Header + ZJT_JBIG_BID = 5, // Bi-level Image Data blocks + ZJT_END_JBIG = 6, + ZJT_SIGNATURE = 7, + ZJT_RAW_IMAGE = 8, // full uncompressed plane follows + ZJT_START_PLANE = 9, + ZJT_END_PLANE =10, + + ZJT_2600N_PAUSE =11, + ZJT_2600N =12, // hplj2600n + + ZJT_ZX_0x0d =0x0d, + ZJT_ZX_0x0e =0x0e, + ZJT_ZX_0x0f =0x0f +} ZJ_TYPE; + +typedef struct _ZJ_HEADER { + DWORD size; /* total record size, includes sizeof(ZJ_HEADER) */ + DWORD type; /* ZJ_TYPE */ + DWORD items; /* use varies by Type, e.g. item count */ + WORD reserved; /* later to be sumcheck or CRC */ + WORD signature; /* 'ZZ' */ +} ZJ_HEADER; + +typedef enum { +/* + * 0x0000-0x7FFF : Zenographics reserved + */ + /* for START_DOC */ + ZJI_PAGECOUNT = 0, // number of ZJT_START_PAGE / ZJT_END_PAGE + // pairs, if known + ZJI_DMCOLLATE = 1, // from DEVMODE + ZJI_DMDUPLEX = 2, // from DEVMODE + + /* for START_PAGE */ + ZJI_DMPAPER = 3, // from DEVMODE + ZJI_DMCOPIES = 4, // from DEVMODE + ZJI_DMDEFAULTSOURCE = 5, // from DEVMODE (DMBIN?) + ZJI_DMMEDIATYPE = 6, // from DEVMODE + ZJI_NBIE = 7, // number of Bi-level Image Entities, + // e.g. 1 for monochrome, 4 for color + ZJI_RESOLUTION_X = 8, // dots per inch + ZJI_RESOLUTION_Y = 9, + ZJI_OFFSET_X =10, // upper left corner + ZJI_OFFSET_Y =11, + ZJI_RASTER_X =12, // raster dimensions + ZJI_RASTER_Y =13, + + ZJI_COLLATE =14, // asks for collated copies + ZJI_QUANTITY =15, // copy count + + ZJI_VIDEO_BPP =16, // video bits per pixel + ZJI_VIDEO_X =17, // video dimensions (if different than raster) + ZJI_VIDEO_Y =18, + ZJI_INTERLACE =19, // 0 or 1 + ZJI_PLANE =20, // Plane number, 1=C, 2=M, 3=Y, 4=K + ZJI_PALETTE =21, // translation table (dimensions in item type) + ZJI_RET =22, // HP's Resolution Enhancement Technology + ZJI_ECONOMODE =23, // HP's "EconoMode", 0=OFF, 1=ON + + ZJI_BITMAP_TYPE =0x65, // hp2600: ? + ZJI_JBIG_BIH =0x66, // Bi-level Image Header + ZJI_BITMAP_PIXELS =0x68, // hp2600: ? + ZJI_INCRY =0x69, // Incremental Y + ZJI_BITMAP_BPP =0x6a, // hp2600: ? + ZJI_BITMAP_STRIDE =0x6b, // hp2600: ? + + ZJI_ZX_0x6c =0x6c, // ZX: color order ??? + // cmyk=04030201, rgb=0b0a09, mono=0c + ZJI_ZX_COLOR_OPT =0x6e, // ZX: Color Options. 1=mono, 3=rgb, 4=cmyk + ZJI_ZX_0x6f =0x6f, // ZX: ??? + + ZJI_PAD =99, // bogus item type for padding stream + +/* + * 0x8000-0x80FF : Item tags for QMS specific features. + */ + ZJI_QMS_FINEMODE = 0x8000, // for 668, 671 + ZJI_QMS_OUTBIN = 0x8001, // for 671 output bin + +/* + * 0x8100-0x81FF : Item tags for Minolta specific features. + */ + /* for START_DOC */ + ZJI_MINOLTA_USERNAME = 0x810e, // C string + ZJI_MINOLTA_FILENAME = 0x8115, // C string + // Also 8100-810F; meanings unknown + + /* for START_PAGE */ + ZJI_MINOLTA_PAGE_NUMBER = 0x8110, // Number of this page + // Also 8111, 8116-811D; meanings unknown + ZJI_MINOLTA_CUSTOM_X = 0x8113, // Custom Page Width + ZJI_MINOLTA_CUSTOM_Y = 0x8114, // Custom Page Height + + /* for END_PAGE */ + // Also 8101, 8110; meanings unknown + +/* + * 0x8200-0x82FF : Item tags for the next OEM specific features. + */ + ZJI_HP_CDOTS = 0x8200, // Cyan Dots? + ZJI_HP_MDOTS = 0x8201, // Magenta Dots? + ZJI_HP_YDOTS = 0x8202, // Yellow Dots? + ZJI_HP_KDOTS = 0x8203, // Black Dots? + ZJI_HP_CWHITE = 0x8204, // Cyan White Dots? + ZJI_HP_MWHITE = 0x8205, // Magenta White Dots? + ZJI_HP_YWHITE = 0x8206, // Yellow White Dots? + ZJI_HP_KWHITE = 0x8207, // Black White Dots? + + ZJI_LAST +} ZJ_ITEM; + +typedef enum +{ + DMDUPLEX_OFF = 1, + DMDUPLEX_LONGEDGE = 2, + DMDUPLEX_SHORTEDGE = 3, + DMDUPLEX_MANUALLONG = 4, + DMDUPLEX_MANUALSHORT= 5 +} DMDUPLEX; + +typedef enum { + DMBIN_UPPER = 1, + DMBIN_ONLYONE = 1, + DMBIN_LOWER = 2, + DMBIN_MIDDLE = 3, + DMBIN_MANUAL = 4, + DMBIN_ENVELOPE = 5, + DMBIN_ENVMANUAL = 6, + DMBIN_AUTO = 7, + DMBIN_TRACTOR = 8, + DMBIN_SMALLFMT = 9, + DMBIN_LARGEFMT =10, + DMBIN_LARGECAPACITY =11, + DMBIN_CASSETTE =14, + DMBIN_FORMSOURCE =15 +} DM_BIN; + +typedef enum { + DMMEDIA_STANDARD = 1, // Standard paper + DMMEDIA_TRANSPARENCY= 2, // Transparency + DMMEDIA_GLOSSY = 3, // Glossy paper + DMMEDIA_USER = 4, // Device-specific media start here + + DMMEDIA_ENVELOPE = 0x101, // Envelope + DMMEDIA_LETTERHEAD = 0x103, // Letterhead + DMMEDIA_THICK_STOCK = 0x105, // Thick Stock + DMMEDIA_POSTCARD = 0x106, // Postcard + DMMEDIA_LABELS = 0x107, // Labels +} DMMEDIA; + +typedef enum { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2, +} DMCOLOR; + +typedef enum { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2, +} DMORIENT; + +typedef enum { + DMPAPER_LETTER = 1, // Letter, 8 1/2- by 11-inches + DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches + DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches + DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches + DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches + DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches + DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches + DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters + DMPAPER_A4 = 9, // A4 Sheet, 210- by 297-millimeters + DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters + DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters + DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters + DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper + DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper + DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper + DMPAPER_10X14 =16, // 10- by 14-inch sheet + DMPAPER_11X17 =17, // 11- by 17-inch sheet + DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches + DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches + DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches + DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches + DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches + DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches + DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches + DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches + DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches + DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters + DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters + DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters + DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters + DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters + DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters + DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters + DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters + DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters + DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters + DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches + DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches + DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches + DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in + DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in + + DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm + DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm + DMPAPER_9X11 =44, // 9 x 11 in + DMPAPER_10X11 =45, // 10 x 11 in + DMPAPER_15X11 =46, // 15 x 11 in + DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm + DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE + DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE + DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in + DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in + DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in + DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in + DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in + DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm + DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in + DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm + DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm + DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in + DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm + DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm + DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm + DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm + DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm + DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm + DMPAPER_A2 =66, // A2 420 x 594 mm + DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm + DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm +} DMPAPER; + +typedef enum { + ZJIT_UINT32 = 1, // unsigned integer + ZJIT_INT32 = 2, // signed integer + ZJIT_STRING = 3, // byte string, NUL-terminated, DWORD-aligned + ZJIT_BYTELUT= 4 // DWORD count followed by that many byte entries +} ZJ_ITEM_TYPE; + +typedef struct _ZJ_ITEM_HEADER { + DWORD size; // total record size, includes sizeof(ZJ_ITEM_HEADER) + WORD item; // ZJ_ITEM + BYTE type; // ZJ_ITEM_TYPE + BYTE param; // general use +} ZJ_ITEM_HEADER; + +typedef struct _ZJ_ITEM_UINT32 { + ZJ_ITEM_HEADER header; + DWORD value; +} ZJ_ITEM_UINT32; + +typedef struct _ZJ_ITEM_INT32 { + ZJ_ITEM_HEADER header; + int32_t value; +} ZJ_ITEM_INT32; + +typedef union _SWAP_32{ + char byte[sizeof(uint32_t)]; + uint32_t dword; +} SWAP_32; + +typedef union _SWAP_16{ + char byte[sizeof(uint16_t)]; + uint16_t word; +} SWAP_16; + +static inline uint32_t +be32(uint32_t dword) +{ + SWAP_32 swap; + uint32_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[3] = (( SWAP_32 )dword).byte[0]; + swap.byte[2] = (( SWAP_32 )dword).byte[1]; + swap.byte[1] = (( SWAP_32 )dword).byte[2]; + swap.byte[0] = (( SWAP_32 )dword).byte[3]; + return swap.dword; + } + else + return dword; +} + +static inline uint16_t +be16(uint16_t word) +{ + SWAP_16 swap; + uint16_t probe = 1; + + if (((char *)&probe)[0] == 1) + { + swap.byte[1] = (( SWAP_16 )word).byte[0]; + swap.byte[0] = (( SWAP_16 )word).byte[1]; + return swap.word; + } + else + return word; +} diff --git a/zjsdecode.1in b/zjsdecode.1in new file mode 100644 index 0000000..ea6c443 --- /dev/null +++ b/zjsdecode.1in @@ -0,0 +1,105 @@ +.TH zjsdecode 1 "${MODpage}" "zjsdecode ${MODver}" +#ifndef OLDGROFF +#include "macros.man" +#endif +'\"========================================================================== +'\" MANUAL PAGE SOURCE +'\"========================================================================== +.SH NAME +zjsdecode \- Decode a ZjStream into human readable form. +.SH SYNOPSIS +.B zjsdecode +.RI [ options "] <" zjs-file +.SH DESCRIPTION +.B zjsdecode +decodes a ZjStream into human readable form. +.P +A ZjStream is the printer language used by some Minolta/QMS and +HP printers, such as the 2300DL and LJ-1000. +.P +More information on Zenographics ZjStream can be found at: +.P +.RS +http://ddk.zeno.com +.RE + +.SH COMMAND LINE OPTIONS +These are the options that can appear on the command line. +.TP +.BI \-d\0 basename +Basename of .pbm file for saving decompressed planes. +.TP +.BI \-r\0 basename +Basename of .jbg file for saving raw planes +.TP +.BI \-h +Print hex file offsets. +.TP +.BI \-o +Print file offsets. +.TP +.BI \-p +Don't do 4 byte padding +.TP +.BI \-D\0 level +Set Debug level [0]. + +.SH EXAMPLES +Decode an ZjStream file created by foo2zjs. + +.nf +.ft CW +$ zjsdecode < testpage.zm +ZJT_START_DOC, 3 items + ZJI_PAGECOUNT, 0 (0x0) + ZJI_DMDUPLEX, 1 (0x1) + ZJI_QUANTITY, 1 (0x1) +ZJT_START_PAGE, 17 items + ZJI_0x17, 0 (0x0) + ZJI_0x16, 1 (0x1) + ZJI_VIDEO_X, 10200 (0x27d8) + ZJI_VIDEO_Y, 6600 (0x19c8) + ZJI_VIDEO_BPP, 1 (0x1) + ZJI_RASTER_X, 10200 (0x27d8) + ZJI_RASTER_Y, 6600 (0x19c8) + ZJI_OFFSET_X, 0 (0x0) + ZJI_OFFSET_Y, 0 (0x0) + ZJI_NBIE, 1 (0x1) + ZJI_RESOLUTION_X, 1200 (0x4b0) + ZJI_RESOLUTION_Y, 600 (0x258) + ZJI_DMDEFAULTSOURCE, 7 (0x7) + ZJI_DMCOPIES, 1 (0x1) + ZJI_DMPAPER, 1 (0x1) + ZJI_DMMEDIATYPE, 1 (0x1) + ZJI_MINOLTA_PAGE_NUMBER, 1 (0x1) +ZJT_JBIG_BIH, 0 items + Data: 20 bytes + DL = 0, D = 0, P = 1, - = 0, XY = 10200 x 6600 + L0 = 128, MX = 16, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON + 52 stripes, 0 layers, 1 planes +ZJT_JBIG_BID, 0 items + Data: 65536 bytes +ZJT_JBIG_BID, 0 items + Data: 29120 bytes +ZJT_END_JBIG, 0 items +ZJT_END_PAGE, 0 items +ZJT_END_DOC, 0 items +.ft P +.fi + +.SH FILES +.BR /usr/bin/zjsdecode +.SH SEE ALSO +.BR foo2zjs-wrapper (1), +.BR foo2zjs (1), +.BR jbg2pbm (1) +.SH "AUTHOR" +Rick Richardson +.br +${URLZJS}/ +'\" +'\" +'\" +.em pdf_outline diff --git a/zjsdecode.c b/zjsdecode.c new file mode 100644 index 0000000..05ac22d --- /dev/null +++ b/zjsdecode.c @@ -0,0 +1,888 @@ +/* + * $Id: zjsdecode.c,v 1.84 2014/01/24 19:25:48 rick Exp $ + */ + +/*b + * Copyright (C) 2003-2006 Rick Richardson + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Rick Richardson +b*/ + +#include +#include +#include +#include +#include +#include + +#include "zjs.h" +#include "jbig.h" + +/* + * Global option flags + */ +int Debug = 0; +char *RawFile; +char *DecFile; +int PrintOffset = 0; +int PrintHexOffset = 0; +int DoPad = 1; + +void +debug(int level, char *fmt, ...) +{ + va_list ap; + + if (Debug < level) + return; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); +} + +int +error(int fatal, char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, fatal ? "Error: " : "Warning: "); + if (errno) + fprintf(stderr, "%s: ", strerror(errno)); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (fatal > 0) + exit(fatal); + else + { + errno = 0; + return (fatal); + } +} + +void +usage(void) +{ + fprintf(stderr, +"Usage:\n" +" zjsdecode [options] < zjs-file\n" +"\n" +" Decode a ZjStream into human readable form.\n" +"\n" +" A ZjStream is the printer language used by some Minolta/QMS and\n" +" HP printers, such as the 2300DL and LJ-1000.\n" +"\n" +" More information on Zenographics ZjStream can be found at:\n" +"\n" +" http://ddk.zeno.com\n" +"\n" +"Options:\n" +" -d basename Basename of .pbm file for saving decompressed planes\n" +" -r basename Basename of .jbg file for saving raw planes\n" +" -h Print hex file offsets\n" +" -o Print file offsets\n" +" -p Don't do 4 byte padding\n" +" -D lvl Set Debug level [%d]\n" + , Debug + ); + + exit(1); +} + +void +print_bih(unsigned char bih[20]) +{ + unsigned int xd, yd, l0; + + xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); + yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); + l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); + + printf(" DL = %d, D = %d, P = %d, - = %d, XY = %d x %d\n", + bih[0], bih[1], bih[2], bih[3], xd, yd); + + printf(" L0 = %d, MX = %d, MY = %d\n", + l0, bih[16], bih[17]); + + printf(" Order = %d %s%s%s%s%s\n", bih[18], + bih[18] & JBG_HITOLO ? " HITOLO" : "", + bih[18] & JBG_SEQ ? " SEQ" : "", + bih[18] & JBG_ILEAVE ? " ILEAVE" : "", + bih[18] & JBG_SMID ? " SMID" : "", + bih[18] & 0xf0 ? " other" : ""); + + printf(" Options = %d %s%s%s%s%s%s%s%s\n", bih[19], + bih[19] & JBG_LRLTWO ? " LRLTWO" : "", + bih[19] & JBG_VLENGTH ? " VLENGTH" : "", + bih[19] & JBG_TPDON ? " TPDON" : "", + bih[19] & JBG_TPBON ? " TPBON" : "", + bih[19] & JBG_DPON ? " DPON" : "", + bih[19] & JBG_DPPRIV ? " DPPRIV" : "", + bih[19] & JBG_DPLAST ? " DPLAST" : "", + bih[19] & 0x80 ? " other" : ""); + printf(" %u stripes, %d layers, %d planes\n", + ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, + bih[1] - bih[0], bih[2]); +} + +void +proff(int curOff) +{ + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); +} + +void +decode(FILE *fp) +{ + DWORD magic; + ZJ_HEADER hdr; + int c; + int rc; + int size; + int items; + char *codestr; + FILE *dfp = NULL; + FILE *rfp = NULL; + int planeNum = 1; + int pageNum = 0; + int padding; + int len; + int curOff = 0; + struct jbg_dec_state s[5]; + unsigned char bih[20]; + int bihlen = 0; + int imageCnt[5] = {0,0,0,0,0}; + int pn = 0; + int incrY = 0; + int bpp = 1; + int totSize = 0; + int i; + char *strmedia[600+1]; + char *strpage[300+1]; + char *strsource[] = { + /*00*/ "eject", "tray1", "unk", "unk", "tray2", + /*05*/ "unk", "unk", "auto" + }; + #define STRARY(X, A) \ + ((X) >= 0 && (X) < sizeof(A)/sizeof(A[0])) \ + ? A[X] : "UNK" + + for (i = 0; i < sizeof(strmedia)/sizeof(strmedia[0]); ++i) + strmedia[i] = "unk"; + /* Konica / HP */ + strmedia[1] = "standard / plain"; + strmedia[2] = "transparency / transparency"; + strmedia[3] = "glossy / unknown"; + strmedia[257] = "envelope"; + strmedia[258] = "unk / light"; + strmedia[259] = "letterhead"; + strmedia[260] = "unk / bond"; + strmedia[261] = "thickstock / cardstock"; + strmedia[262] = "postcard / heavy 111-130g"; + strmedia[263] = "labels / rough"; + strmedia[265] = "unk / labels"; + strmedia[267] = "unk / envelope"; + strmedia[273] = "unk / vellum"; + strmedia[276] = "unk / z3: hp tough paper"; + strmedia[282] = "unk / medium / z3: mid-weight 96-110g"; + strmedia[283] = "unk / extra heavy 131-175g"; + strmedia[284] = "unk / z3: heavy glossy 111-130g"; + strmedia[285] = "unk / z3: extra heavy glossy 131-175g"; + strmedia[286] = "unk / z3: card glossy 176-220g"; + strmedia[287] = "unk / z3: heavy envelope"; + strmedia[289] = "unk / z3: heavy rough"; + strmedia[305] = "unk / z3: hp laserjet 90g"; + strmedia[306] = "unk / z3: hp color laser matte 105g"; + strmedia[307] = "unk / z3: hp premium choice matte 120g"; + strmedia[308] = "unk / z3: hp color laser brochure matte 160g"; + strmedia[309] = "unk / z3: hp superior laser matte 160g"; + strmedia[310] = "unk / z3: hp cover matte 200g"; + strmedia[311] = "unk / z3: hp presentation glossy 130g"; + strmedia[312] = "unk / z3: hp color laser brochure glossy 160g"; + strmedia[313] = "unk / z3: hp superior laser glossy 160g"; + strmedia[314] = "unk / z3: hp color laser photo glossy 220g"; + strmedia[316] = "unk / z3: hp tri-fold color laser brochure 160g"; + strmedia[317] = "unk / z3: hp matte photo 200g"; + strmedia[318] = "unk / z3: hp professional laser glossy 130g"; + strmedia[512] = "unk / color"; + strmedia[513] = "unk / letterhead"; + strmedia[514] = "unk / preprinted"; + strmedia[515] = "unk / prepunched"; + strmedia[516] = "unk / recycled"; + strmedia[600] = "unk / unspecified"; + + for (i = 0; i < sizeof(strpage)/sizeof(strpage[0]); ++i) + strpage[i] = "unk"; + strpage[1] = "letter"; + strpage[5] = "legal"; + strpage[9] = "a4"; + strpage[7] = "executive"; + strpage[258] = "fanfold german legal"; + strpage[11] = "a5"; + strpage[70] = "z2-a6"; /* p1102 */ + strpage[13] = "b5jis"; + strpage[259] = "b5iso"; + strpage[264] = "16k 195x270"; + strpage[263] = "16k 184x260"; + strpage[257] = "16k 197x273"; + strpage[260] = "z1-postcard"; + strpage[261] = "z1-double postcard"; + strpage[262] = "z1-a6"; /* hp 1020 */ + strpage[43] = "postcard"; + strpage[82] = "z2-double postcard rotated"; + strpage[20] = "env#10"; + strpage[37] = "envMonarch"; + strpage[34] = "envB5"; + strpage[28] = "envC5"; + strpage[27] = "envDL"; + strpage[268] = "z3-4x6"; + strpage[269] = "z3-5x8"; + strpage[270] = "z3-10x15cm"; + + /* + * Zenographics ZX format + */ + c = getc(fp); + if (c == EOF) + { + printf("EOF on file reading header.\n"); + return; + } + ungetc(c, fp); + if (c == '\033') + { + char buf[1024]; + + while (fgets(buf, sizeof(buf), fp)) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + if (buf[0] == '\033') + { + printf("\\033"); + fputs(buf+1, stdout); + } + else + fputs(buf, stdout); + curOff += strlen(buf); + if (strcmp(buf, "@PJL ENTER LANGUAGE = ZJS\r\n") == 0) + break; + if (0) {} + else if (strncmp(buf, "@PJL USTATUS TIMED = ", 21) == 0) + { + rc = fread(buf, 52, 1, fp); + if (rc != 1) return; + debug(2, "buf=%s\n", buf); + proff(curOff); + buf[51] = 0; + printf("%s\n", buf); + curOff += 43; + proff(curOff); + printf("\\033%s\n", buf+44); + curOff += 9; + break; + } + else if (strncmp(buf, "@PJL SET JOBATTR=", 17) == 0) + { + rc = fread(buf, 9, 1, fp); + if (rc != 1) return; + buf[9] = 0; + curOff += 9; + proff(curOff); + printf("\\033%s\n", buf+1); + curOff += 9; + break; + } + } + if (feof(fp)) + { + printf("\n"); + return; + } + } + + /* + * Zenographics ZJS_MAGIC format + */ + rc = fread(&magic, len = sizeof(magic), 1, fp); + if (rc != 1) + { + printf("Missing ZJS Magic number\n"); + return; + } + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + printf("ZJS_MAGIC, 0x%lx (%.4s)\n", (long)magic, (char *) &magic); + + if (memcmp((char *) &magic, "JZJZ", 4) + && memcmp((char *) &magic, ",XQX", 4)) + { + printf(" Don't understand magic number 0x%lx\n", (long)magic); + return; + } + + curOff += len; + for (;;) + { + if (PrintOffset) + printf("%d: ", curOff); + else if (PrintHexOffset) + printf("%6x: ", curOff); + + rc = fread(&hdr, len = sizeof(hdr), 1, fp); + if (rc != 1) break; + curOff += len; + + hdr.type = be32(hdr.type); + hdr.size = be32(hdr.size); + hdr.items = be32(hdr.items); + hdr.reserved = be16(hdr.reserved); + hdr.signature = be16(hdr.signature); + + #define CODESTR(X) case X: codestr = #X; + switch (hdr.type) + { + CODESTR(ZJT_START_DOC) break; + CODESTR(ZJT_END_DOC) break; + CODESTR(ZJT_START_PAGE) ++pageNum; + memset(imageCnt, 0, sizeof(imageCnt)); + totSize = 0; + break; + CODESTR(ZJT_END_PAGE) planeNum = 1; + break; + CODESTR(ZJT_JBIG_BIH) break; + CODESTR(ZJT_JBIG_BID) break; + CODESTR(ZJT_END_JBIG) break; + CODESTR(ZJT_SIGNATURE) break; + CODESTR(ZJT_RAW_IMAGE) break; + CODESTR(ZJT_START_PLANE) break; + CODESTR(ZJT_END_PLANE) break; + CODESTR(ZJT_2600N_PAUSE) break; + CODESTR(ZJT_2600N) break; + + CODESTR(ZJT_ZX_0x0d) break; + CODESTR(ZJT_ZX_0x0e) break; + CODESTR(ZJT_ZX_0x0f) break; + default: codestr = NULL; break; + } + + if (codestr) + printf("%s, %ld items", codestr, (long) hdr.items); + else + printf("ZJT_0x%lx, %ld items", (long) hdr.type, (long) hdr.items); + if (DoPad == 0) + padding = 0; + else if (hdr.size & 3) + { + printf(" (unaligned size)"); + padding = 4 - (hdr.size & 3); + } + else + padding = 0; + if (hdr.reserved) + printf(" (reserved=0x%x)", hdr.reserved); + if (hdr.signature != 0x5a5a) + printf(" (funny siggy 0x%x)", hdr.signature); + if (hdr.type == ZJT_START_PAGE) + printf(" [Page %d]", pageNum); + printf("\n"); + fflush(stdout); + + items = hdr.items; + size = hdr.size - sizeof(hdr); + + if (hdr.type == ZJT_ZX_0x0e) + { + int c; + + if (PrintOffset) + printf(" %d:", curOff); + else if (PrintHexOffset) + printf(" %6x:", curOff); + printf(" Data: %d bytes (0x%x)\n", size, size); + fflush(stdout); + totSize += size; + + printf("%s0:\t", (PrintOffset||PrintHexOffset) ? "\t\t" : "\t"); + for (i = 0; size--; ++i) + { + c = fgetc(fp); + ++curOff; + if (i < 16) + printf("%02x ", c); + else if (size < 16) + printf("%02x ", c); + if (i == 16) + printf(" ...\n%s", + (PrintOffset||PrintHexOffset) ? "\t\t" : "\t"); + if (size == 16) + printf("%x:\t", i); + } + printf("\n"); + continue; + } + + while (items--) + { + ZJ_ITEM_HEADER ihdr; + int isize; + DWORD val; + char buf[512]; + int c; + + if (PrintOffset) + printf(" %d: ", curOff); + else if (PrintHexOffset) + printf(" %6x: ", curOff); + + size -= sizeof(ihdr); + + rc = fread(&ihdr, len = sizeof(ihdr), 1, fp); + if (rc != 1) break; + curOff += len; + + ihdr.size = be32(ihdr.size); + ihdr.item = be16(ihdr.item); + + isize = ihdr.size - sizeof(ihdr); + size -= isize; + + switch (ihdr.item) + { + CODESTR(ZJI_PAGECOUNT) break; + CODESTR(ZJI_DMCOLLATE) break; + CODESTR(ZJI_DMDUPLEX) break; + CODESTR(ZJI_DMPAPER) break; + CODESTR(ZJI_DMCOPIES) break; + CODESTR(ZJI_DMDEFAULTSOURCE) break; + CODESTR(ZJI_DMMEDIATYPE) break; + CODESTR(ZJI_NBIE) break; + CODESTR(ZJI_RESOLUTION_X) break; + CODESTR(ZJI_RESOLUTION_Y) break; + CODESTR(ZJI_OFFSET_X) break; + CODESTR(ZJI_OFFSET_Y) break; + CODESTR(ZJI_RASTER_X) break; + CODESTR(ZJI_RASTER_Y) break; + CODESTR(ZJI_MINOLTA_CUSTOM_X) break; + CODESTR(ZJI_MINOLTA_CUSTOM_Y) break; + CODESTR(ZJI_COLLATE) break; + CODESTR(ZJI_QUANTITY) break; + CODESTR(ZJI_VIDEO_BPP) break; + CODESTR(ZJI_VIDEO_X) break; + CODESTR(ZJI_VIDEO_Y) break; + CODESTR(ZJI_INTERLACE) break; + CODESTR(ZJI_PLANE) break; + CODESTR(ZJI_PALETTE) break; + CODESTR(ZJI_PAD) break; + CODESTR(ZJI_QMS_FINEMODE) break; + CODESTR(ZJI_QMS_OUTBIN) break; + CODESTR(ZJI_MINOLTA_PAGE_NUMBER) break; + CODESTR(ZJI_MINOLTA_FILENAME) break; + CODESTR(ZJI_MINOLTA_USERNAME) break; + CODESTR(ZJI_BITMAP_TYPE) break; + CODESTR(ZJI_BITMAP_PIXELS) break; + CODESTR(ZJI_BITMAP_BPP) break; + CODESTR(ZJI_BITMAP_STRIDE) break; + CODESTR(ZJI_INCRY) break; + CODESTR(ZJI_JBIG_BIH) break; + CODESTR(ZJI_RET) break; + CODESTR(ZJI_ECONOMODE) break; + CODESTR(ZJI_HP_CDOTS) break; + CODESTR(ZJI_HP_MDOTS) break; + CODESTR(ZJI_HP_YDOTS) break; + CODESTR(ZJI_HP_KDOTS) break; + CODESTR(ZJI_HP_CWHITE) break; + CODESTR(ZJI_HP_MWHITE) break; + CODESTR(ZJI_HP_YWHITE) break; + CODESTR(ZJI_HP_KWHITE) break; + + // Zenographics ZJ format + CODESTR(ZJI_ZX_0x6c) break; + CODESTR(ZJI_ZX_COLOR_OPT) break; + CODESTR(ZJI_ZX_0x6f) break; + default: codestr = NULL; break; + } + + switch (ihdr.type) + { + case ZJIT_UINT32: + case ZJIT_INT32: + rc = fread(&val, len = sizeof(val), 1, fp); + curOff += len; + val = be32(val); + isize -= 4; + if (codestr) + printf(" %s, %ld (0x%lx)", + codestr, (long) val, (long) val); + else + printf(" ZJI_0x%x, %ld (0x%lx)", + ihdr.item, (long) val, (long) val); + if (ihdr.item == ZJI_PLANE) + { + switch (planeNum = val) + { + case 0: case 4: printf(" [black]"); break; + case 1: printf(" [cyan]"); break; + case 2: printf(" [yellow]"); break; + case 3: printf(" [magenta]"); break; + } + } + else if (ihdr.item == ZJI_DMMEDIATYPE) + printf(" [%s]", STRARY(val, strmedia)); + else if (ihdr.item == ZJI_DMPAPER) + printf(" [%s]", STRARY(val, strpage)); + else if (ihdr.item == ZJI_DMDEFAULTSOURCE) + printf(" [%s]", STRARY(val, strsource)); + else if (ihdr.item == ZJI_INCRY) + incrY = val; + else if (ihdr.item == ZJI_VIDEO_BPP) + bpp = val; + else if (ihdr.item == ZJI_ZX_COLOR_OPT) + { + switch (val) + { + case 1: printf(" [mono]"); break; + case 3: printf(" [rgb]"); break; + case 4: printf(" [cmyk]"); break; + } + } + break; + case ZJIT_STRING: + for (i = 0; i < sizeof(buf) - 1; ) + { + c = fgetc(fp); + if (c == EOF) break; + ++curOff; + buf[i++] = c; + --isize; + if (isize == 0 || c == 0) break; + } + buf[i] = 0; + if (codestr) + printf(" %s, '%s'", codestr, buf); + else + printf(" ZJI_0x%x, '%s'", ihdr.item, buf); + break; + default: + case ZJIT_BYTELUT: + rc = fread(&val, len = sizeof(val), 1, fp); + curOff += len; + val = be32(val); + isize -= 4; + if (codestr) + printf(" %s, BYTELUT (len=%d)", codestr, val); + else + printf(" ZJI_0x%x, BYTELUT (len=%d)", ihdr.item, val); + if (ihdr.item == ZJI_JBIG_BIH && val == 20) + { + bihlen = fread(bih, 1, len = sizeof(bih), fp); + if (bihlen <= 0) + isize = 0; + else + { + isize -= bihlen; + curOff += len; + } + if (bihlen == 20) + { + printf("\n"); + print_bih(bih); + } + } + break; + } + + if (ihdr.param != 0) + printf(" (reserved=0x%x)", ihdr.param); + printf("\n"); + fflush(stdout); + + while (isize-- > 0) + { + fgetc(fp); + ++curOff; + } + + if (size <= 0 && items) + { + printf(" #items is wrong!\n"); + break; + } + } + + if (size) + { + int totlen = size; + + if (PrintOffset) + printf(" %d:", curOff); + else if (PrintHexOffset) + printf(" %6x:", curOff); + printf(" Data: %d bytes\n", size); + fflush(stdout); + totSize += size; + + if (hdr.type == ZJT_JBIG_BIH) + { + bihlen = fread(bih, 1, len = sizeof(bih), fp); + if (bihlen <= 0) + size = 0; + else + { + size -= bihlen; + curOff += len; + } + if (bihlen == 20) + print_bih(bih); + } + + if (hdr.type == ZJT_2600N && hdr.items < 6) + { + pn = planeNum; + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, 20, NULL); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + } + + if ( (RawFile || DecFile) && + (hdr.type == ZJT_JBIG_BIH || hdr.type == ZJT_JBIG_BID + || hdr.type == ZJT_2600N) ) + { + if (hdr.type == ZJT_JBIG_BIH) + { + if (RawFile) + { + char buf[512]; + sprintf(buf, "%s-%02d-%d.jbg", + RawFile, pageNum, planeNum); + rfp = fopen(buf, "w"); + } + ++planeNum; + if (rfp) + rc = fwrite(bih, bihlen, 1, rfp); + if (DecFile) + { + size_t cnt; + + jbg_dec_init(&s[pn]); + rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); + if (rc == JBG_EIMPL) + error(1, "JBIG uses unimplemented feature\n"); + } + } + while (size--) + { + int c; + c = fgetc(fp); + ++curOff; + if ((totlen-size) <= 16) + { + if ((totlen-size) == 1) + printf("\t"); + printf(" %02x", c); + if ((totlen-size) == 16) + printf("\n\t..."); + } + else if (size < 20) + { + printf(" %02x", c); + if (size == 0) + printf("\n"); + } + if (rfp) + fputc(c, rfp); + if (DecFile) + { + size_t cnt; + unsigned char ch = c; + + rc = JBG_EAGAIN; + rc = jbg_dec_in(&s[pn], &ch, 1, &cnt); + if (rc == JBG_EOK) + { + int h, w, len; + unsigned char *image; + int i, gray4; + char gray[4]; + + // debug(0, "JBG_EOK: %d\n", pn); + h = jbg_dec_getheight(&s[pn]); + w = jbg_dec_getwidth(&s[pn]); + image = jbg_dec_getimage(&s[pn], 0); + len = jbg_dec_getsize(&s[pn]); + if (image) + { + char buf[512]; + if (bpp == 1) + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, planeNum-1); + else + sprintf(buf, "%s-%02d-%d.pgm", + DecFile, pageNum, planeNum-1); + dfp = fopen(buf, + imageCnt[planeNum-1] ? "a" : "w"); + if (dfp) + { + if (bpp == 1) + { + if (imageCnt[planeNum-1] == 0) + fprintf(dfp, "P4\n%8d %8d\n", w, h); + rc = fwrite(image, 1, len, dfp); + } + else + { + if (imageCnt[planeNum-1] == 0) + fprintf(dfp, "P5\n%8d %8d 3\n", + w/2, h); + for (i = 0; i < len; ++i) + { + gray4 = image[i]; + gray[0] = ~(gray4 >> 6) & 3; + gray[1] = ~(gray4 >> 4) & 3; + gray[2] = ~(gray4 >> 2) & 3; + gray[3] = ~(gray4 >> 0) & 3; + rc = fwrite(gray, 4, 1, dfp); + } + } + imageCnt[planeNum-1] += incrY; + fclose(dfp); + } + } + else + debug(0, "Missing image %dx%d!\n", h, w); + jbg_dec_free(&s[pn]); + } + } + } + if (hdr.type == ZJT_2600N && hdr.items == 3) + { + char buf[512]; + if (bpp == 1) + sprintf(buf, "%s-%02d-%d.pbm", + DecFile, pageNum, planeNum-1); + else + sprintf(buf, "%s-%02d-%d.pgm", + DecFile, pageNum, planeNum-1); + dfp = fopen(buf, "r+"); + fseek(dfp, 12, 0); + fprintf(dfp, "%8d", imageCnt[planeNum-1]); + fclose(dfp); + } + } + else + { + while (size--) + { + c = fgetc(fp); + ++curOff; + if ((totlen-size) <= 16) + { + if ((totlen-size) == 1) + printf("\t"); + printf(" %02x", c); + if ((totlen-size) == 16) + printf("\n\t..."); + } + else if (size < 20) + { + printf(" %02x", c); + if (size == 0) + printf("\n"); + } + } + if (rfp) + { + fclose(rfp); + rfp = NULL; + } + } + } + + while (padding--) + { + fgetc(fp); + ++curOff; + } + + if (hdr.type == ZJT_END_DOC) + break; + } + if (rfp) + fclose(rfp); + printf("Total size: %d bytes\n", totSize); +} + +int +main(int argc, char *argv[]) +{ + extern int optind; + extern char *optarg; + int c; + + while ( (c = getopt(argc, argv, "d:hopr:D:?h")) != EOF) + switch (c) + { + case 'd': DecFile = optarg; break; + case 'r': RawFile = optarg; break; + case 'h': PrintHexOffset = 1; break; + case 'o': PrintOffset = 1; break; + case 'p': DoPad = 0; break; + case 'D': Debug = atoi(optarg); break; + default: usage(); exit(1); + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + FILE *fp; + + fp = fopen(argv[0], "r"); + if (!fp) + error(1, "file '%s' doesn't exist\n", argv[0]); + for (;;) + { + decode(fp); + c = getc(fp); ungetc(c, fp); + if (feof(fp)) + break; + } + fclose(fp); + } + else + { + for(;;) + { + decode(stdin); + c = getc(stdin); ungetc(c, stdin); + if (feof(stdin)) + break; + } + } + + exit(0); +} -- cgit v1.2.3 From a6edc599edb43e67a6e9c5b61d0d0e18b14e5758 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Sun, 18 Jun 2017 17:05:18 +0200 Subject: Import foo2zjs_20170320dfsg0-2.debian.tar.xz [dgit import tarball foo2zjs 20170320dfsg0-2 foo2zjs_20170320dfsg0-2.debian.tar.xz] --- .git-dpm | 8 + NEWS | 13 + README.Debian | 48 + README.source | 10 + changelog | 1157 +++++++++++++++ compat | 1 + control | 57 + copyright | 141 ++ gbp.conf | 4 + ...Update-makefiles-to-Debian-best-practices.patch | 228 +++ patches/0002-Fix-icc2ps-build.patch | 40 + ...-icc2ps-but-use-psicc-from-liblcms2-utils.patch | 107 ++ patches/0004-Use-the-Debian-provided-libjbig.patch | 33 + patches/0005-Link-against-system-liblcms1.patch | 33 + patches/0006-Correct-the-udev-rules.patch | 89 ++ .../0007-Remove-Encoding-from-.desktop-file.patch | 19 + .../0008-Do-not-display-the-icon-by-default.patch | 19 + ..._gui.tcl-directly-instead-of-launching-wi.patch | 23 + ...ct-the-path-for-the-usb_printerid-program.patch | 22 + ...e-getweb-also-for-installing-the-firmware.patch | 317 ++++ ...me-firmware-folder-for-all-HP-LJ-printers.patch | 97 ++ ...irectory-is-lib-firmware-hp-Closes-517957.patch | 73 + ...-t-delete-printer-profile-in-clean-target.patch | 312 ++++ ...es-errors-and-hyphen-as-minus-in-manpages.patch | 1552 ++++++++++++++++++++ patches/0016-Fix-various-spelling-errors.patch | 129 ++ ...are-transfer-for-UDEV-automatic-printer-s.patch | 29 + ...-lines-in-the-UDEV-script-for-the-automat.patch | 33 + ...e-upload-script-tried-to-upload-the-firmw.patch | 54 + ...n-infinite-loop-when-loading-the-firmware.patch | 58 + ...ges-reproducibly-through-reading-the-MODT.patch | 39 + patches/series | 21 + printer-driver-foo2zjs-common.doc-base | 11 + printer-driver-foo2zjs-common.install | 68 + printer-driver-foo2zjs-common.ppd-updater | 2 + printer-driver-foo2zjs.dirs | 1 + printer-driver-foo2zjs.install | 23 + printer-driver-foo2zjs.links | 11 + printer-driver-foo2zjs.lintian-overrides | 28 + printer-driver-foo2zjs.postinst | 12 + printer-driver-foo2zjs.preinst | 15 + rules | 104 ++ source/format | 1 + svn-deblayout | 1 + tests/control | 3 + tests/printer-driver-foo2zjs | 7 + ubuntu/apport-hook.py | 11 + watch | 1 + 47 files changed, 5065 insertions(+) create mode 100644 .git-dpm create mode 100644 NEWS create mode 100644 README.Debian create mode 100644 README.source create mode 100644 changelog create mode 100644 compat create mode 100644 control create mode 100644 copyright create mode 100644 gbp.conf create mode 100644 patches/0001-Update-makefiles-to-Debian-best-practices.patch create mode 100644 patches/0002-Fix-icc2ps-build.patch create mode 100644 patches/0003-Don-t-build-icc2ps-but-use-psicc-from-liblcms2-utils.patch create mode 100644 patches/0004-Use-the-Debian-provided-libjbig.patch create mode 100644 patches/0005-Link-against-system-liblcms1.patch create mode 100644 patches/0006-Correct-the-udev-rules.patch create mode 100644 patches/0007-Remove-Encoding-from-.desktop-file.patch create mode 100644 patches/0008-Do-not-display-the-icon-by-default.patch create mode 100644 patches/0009-Launch-the-_gui.tcl-directly-instead-of-launching-wi.patch create mode 100644 patches/0010-Correct-the-path-for-the-usb_printerid-program.patch create mode 100644 patches/0011-Improve-getweb-also-for-installing-the-firmware.patch create mode 100644 patches/0012-Use-the-same-firmware-folder-for-all-HP-LJ-printers.patch create mode 100644 patches/0013-Firmware-directory-is-lib-firmware-hp-Closes-517957.patch create mode 100644 patches/0014-Don-t-delete-printer-profile-in-clean-target.patch create mode 100644 patches/0015-Fixes-errors-and-hyphen-as-minus-in-manpages.patch create mode 100644 patches/0016-Fix-various-spelling-errors.patch create mode 100644 patches/0017-Delay-firmware-transfer-for-UDEV-automatic-printer-s.patch create mode 100644 patches/0018-Removed-the-lines-in-the-UDEV-script-for-the-automat.patch create mode 100644 patches/0019-The-firmware-upload-script-tried-to-upload-the-firmw.patch create mode 100644 patches/0020-Prevent-an-infinite-loop-when-loading-the-firmware.patch create mode 100644 patches/0021-Build-manpages-reproducibly-through-reading-the-MODT.patch create mode 100644 patches/series create mode 100644 printer-driver-foo2zjs-common.doc-base create mode 100644 printer-driver-foo2zjs-common.install create mode 100644 printer-driver-foo2zjs-common.ppd-updater create mode 100644 printer-driver-foo2zjs.dirs create mode 100644 printer-driver-foo2zjs.install create mode 100644 printer-driver-foo2zjs.links create mode 100644 printer-driver-foo2zjs.lintian-overrides create mode 100644 printer-driver-foo2zjs.postinst create mode 100644 printer-driver-foo2zjs.preinst create mode 100755 rules create mode 100644 source/format create mode 100644 svn-deblayout create mode 100644 tests/control create mode 100755 tests/printer-driver-foo2zjs create mode 100644 ubuntu/apport-hook.py create mode 100644 watch diff --git a/.git-dpm b/.git-dpm new file mode 100644 index 0000000..afcd8cc --- /dev/null +++ b/.git-dpm @@ -0,0 +1,8 @@ +# see git-dpm(1) from git-dpm package +11ab90b6a6c2e67f38ccebbf944b377fa7c18718 +11ab90b6a6c2e67f38ccebbf944b377fa7c18718 +a3e3b3b78a966c5b7718425c5caaaf3cec692b8a +a3e3b3b78a966c5b7718425c5caaaf3cec692b8a +foo2zjs_20170320dfsg0.orig.tar.xz +aa4a79bdf35e77875d4da43c9e251a36c4a6d67c +563196 diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..c1d9d36 --- /dev/null +++ b/NEWS @@ -0,0 +1,13 @@ +foo2zjs (20090908dfsg-2) unstable; urgency=low + + Starting with this version all HP firmwares are looked for into + /lib/firmware/hp/ instead of upstream /usr/share/foo2zjs/firmware/ + (thus solving bug #517957). + + The upstream /usr/bin/getweb and /lib/udev/hplj1000 scripts have + been patched to use this new location. foo2zjs postinst should + automatically handle the migration of every firmware present in + the old location to the new one. + + -- Luca Capello Mon, 22 Mar 2010 13:15:37 +0100 + diff --git a/README.Debian b/README.Debian new file mode 100644 index 0000000..43c1953 --- /dev/null +++ b/README.Debian @@ -0,0 +1,48 @@ +foo2zjs for Debian +------------------ + +* Files removed from upstream tarball + +Please understand that I had to delete some files which the author is +still providing, because I got no source code for them. +This is necessary to get the package into Debian main. +If you really need these programs, please freel free to download +them from http://foo2zjs.rkkda.com/foo2zjs.tar.gz on your own risk. +In addition to that I also deleted all binary files (.e.g. .icm). +(Type "wget http://foo2zjs.rkkda.com/foo2zjs.tar.gz"). +Then run the following commands: + +tar -xvvzf foo2zjs.tar.gz +cd foo2zjs +make + + +* Additional firmwares required by some printers + +Some printers need additional firmware to be installed. For downloading and +installing the right firmware for your printer, you can use the Foo2ZJS +firmware downloader and installer (codename Hannah). You will find it in +your Desktop Menu or by running the command "hannah-foo2zjs" as the root +user. Note that "hannah-foo2zjs" is not part of the "foo2zjs" package but +in its own package also called "hannah-foo2zjs". + +It's also possible to use a pure command line tool called "getweb". This +tools allows download and installation without using a graphical user +interface, e.g. on servers. + + +* Replacing paper for the HP LaserJet 10xx printers + +Upstream provides a GUI to replace the paper on HP LaserJet 10xx +printers, whose entry is available in the "Applications -> System +Tools" menu. + +It has been however disabled, given that this entry clutters the +default GNOME menu on Debian. To re-enable it, please use the menu +editor available via the "System -> Preferences -> Main Menu" entry. + +Please also note that you need to install the suggested "tk8.4" and +"tix" packages. + + + -- Luca Capello , Wed, 30 Mar 2011 22:39:20 +0200 diff --git a/README.source b/README.source new file mode 100644 index 0000000..32d036c --- /dev/null +++ b/README.source @@ -0,0 +1,10 @@ +Debian foo2zjs source +--------------------- + +This package uses quilt to manage all modifications to the upstream +source. Changes are stored in the source package as diffs in +debian/patches and applied during the build. + +Read /usr/share/doc/quilt/README.source for further explanations. + + -- Luca Capello , Sat, 13 Mar 2010 15:28:40 +0100 diff --git a/changelog b/changelog new file mode 100644 index 0000000..c36a9ac --- /dev/null +++ b/changelog @@ -0,0 +1,1157 @@ +foo2zjs (20170320dfsg0-2) unstable; urgency=low + + * Migrate 20170320 to unstable + + -- Didier Raboud Sun, 18 Jun 2017 17:05:18 +0200 + +foo2zjs (20170320dfsg0-1) experimental; urgency=low + + * New 20170320 upstream release + - Add ddstdecode, for decoding some Ricoh printers: + - Ricoh SP 112 + - Ricoh SP 201Nw + + * Install the ddstdecode-related files + * DFSG repack (no changes from previous releases) + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + -- Didier Raboud Tue, 02 May 2017 11:58:23 +0200 + +foo2zjs (20160902dfsg0-2) unstable; urgency=medium + + * Update patch to getweb to fix installation of icm files + (Closes: #840129) + + -- Didier Raboud Sat, 08 Oct 2016 18:38:08 +0200 + +foo2zjs (20160902dfsg0-1) unstable; urgency=medium + + * New 20160902 upstream release + - New printers: + + Xerox Phaser 3010 using the foo2hbpl2 driver + + Xerox Phaser 3040 using the foo2hbpl2 driver + + * DFSG repack (no changes from previous releases) + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Initialize git-dpm and rephrase most patches' descriptions + + -- Didier Raboud Tue, 04 Oct 2016 11:54:01 +0200 + +foo2zjs (20160313dfsg0-2) unstable; urgency=medium + + [ Colin Watson ] + * Explicitly prefer cups-filters as the real provider of foomatic-filters + + -- Didier Raboud Sat, 18 Jun 2016 15:06:36 +0200 + +foo2zjs (20160313dfsg0-1) unstable; urgency=medium + + * New 20160313 upstream release + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Refresh patches + * Bump S-V to 3.9.8 without changes needed + + -- Didier Raboud Mon, 25 Apr 2016 22:04:14 +0200 + +foo2zjs (20151024dfsg0-2) unstable; urgency=medium + + * Add patch to build manpages & manual reproducibly + + -- Didier Raboud Fri, 26 Feb 2016 11:35:42 +0100 + +foo2zjs (20151024dfsg0-1) unstable; urgency=medium + + * New 20151024 upstream release + - New Printer: Epson AcuLaser CX17NF using the foo2hbpl2 driver + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Refresh patches + + -- Didier Raboud Sat, 12 Dec 2015 17:29:39 +0100 + +foo2zjs (20150704dfsg0-2) unstable; urgency=medium + + * Upload to unstable + + -- Didier Raboud Sun, 20 Sep 2015 18:02:31 +0200 + +foo2zjs (20150704dfsg0-1) experimental; urgency=low + + * New 20150704 upstream release + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Refresh patches + * Add gbp.conf + * Bump Standards-Version to 3.9.6 without changes needed + * Update the Vcs-* entries for the https variants + + -- Didier Raboud Thu, 27 Aug 2015 13:48:47 +0200 + +foo2zjs (20150511dfsg0-1) unstable; urgency=medium + + * New 20150511 upstream release + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Refresh patches + * Update get-orig-source to cope with the new branch names + + -- Didier Raboud Sun, 05 Jul 2015 17:17:01 +0200 + +foo2zjs (20140925dfsg0-3) unstable; urgency=medium + + [ Peter De Wachter ] + * Fix laserjet1018 appearance and disappearance loop: (Closes: #663868) + - update the 30-udev-rules.patch to add an 'ACTION="add"' to avoid running + the firmware upload script on unplug, + - add patch 97-hplj1000-fix-firmware-upload-infite-loop.patch to ignore the + irrelevant events and thus cut the loop short. + + -- Didier Raboud Thu, 02 Oct 2014 22:51:47 +0200 + +foo2zjs (20140925dfsg0-2) unstable; urgency=medium + + * Put tix to Recommends on Debian and to Suggests on Ubuntu and derivatives + + -- Didier Raboud Tue, 30 Sep 2014 18:03:18 +0200 + +foo2zjs (20140925dfsg0-1) unstable; urgency=medium + + * New 20140925 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Refresh patches + * Push the system-lcms patch from Michael up the pile + + -- Didier Raboud Tue, 30 Sep 2014 09:58:06 +0200 + +foo2zjs (20140519dfsg0-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Use psicc from lcms2 (closes: #757384). + + -- Michael Gilbert Sun, 28 Sep 2014 21:34:38 +0000 + +foo2zjs (20140519dfsg0-2) unstable; urgency=medium + + * Add autopkgtest suite + * Use the Debian-provided liblcms1 + - Add liblcms1-dev to Build-Depends; + - Add 20-system-liblcms.patch. + + -- Didier Raboud Fri, 01 Aug 2014 16:59:15 +0200 + +foo2zjs (20140519dfsg0-1) unstable; urgency=medium + + * New 20140519 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Refresh patches to fix three more typos and hyphen-as-minus. + + -- Didier Raboud Thu, 05 Jun 2014 14:57:56 +0200 + +foo2zjs (20140322dfsg0-1) unstable; urgency=medium + + * New 20140322 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + -- Didier Raboud Mon, 24 Mar 2014 13:14:56 +0100 + +foo2zjs (20140302dfsg0-1) unstable; urgency=medium + + * New 20140302 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Move the repository from collab-maint to printing; update the VCS-* fields + accordingly + * Refresh patches + + -- Didier Raboud Thu, 06 Mar 2014 17:23:13 +0100 + +foo2zjs (20140209dfsg0-1) unstable; urgency=medium + + * New 20140209 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Use dh_pyppd's --archive-filename option instead of renaming the + archive by hand + * Refresh patches, update the spelling fixes' + * Bump Standards-Version to 3.9.5 without changes needed + + -- Didier Raboud Tue, 11 Feb 2014 09:57:22 +0100 + +foo2zjs (20131225dfsg0-6) unstable; urgency=low + + * Move the ppd-updater cups trigger to -common, where it belongs + + -- Didier Raboud Fri, 10 Jan 2014 11:24:02 +0100 + +foo2zjs (20131225dfsg0-5) unstable; urgency=low + + * Add dh_listpackage package conditionals to fix arch-only FTBFS + * Add lintian override for manpages not shipped in the same binary + package + + -- Didier Raboud Fri, 10 Jan 2014 10:12:49 +0100 + +foo2zjs (20131225dfsg0-4) unstable; urgency=low + + * Correct the name of the pyppd-compressed PPD set to correspond to + the earlier ppd-updater driver name, thanks to Till Kamppeter + * Let printer-driver-foo2zjs-common Recommend printer-driver-foo2zjs + + -- Didier Raboud Thu, 09 Jan 2014 22:32:17 +0100 + +foo2zjs (20131225dfsg0-3) unstable; urgency=low + + * Fix the patch to avoid the implicit declaration of swab() in + cmsio1.c + + -- Didier Raboud Wed, 08 Jan 2014 12:52:44 +0100 + +foo2zjs (20131225dfsg0-2) unstable; urgency=low + + * Split printer-driver-foo2zjs into -common to let all + arch-independent files be shared across architectures + * Fix leftover 'supress' typo in oakdecode + + -- Didier Raboud Tue, 07 Jan 2014 17:44:09 +0100 + +foo2zjs (20131225dfsg0-1) unstable; urgency=low + + * New 20131325 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Refresh all patches + * Add patch to avoid the implicit declaration of swab() in cmsio1.c + * Update Makefile patch to push CPPFLAGS and LDFLAGS to all needed + places + * Move getweb from usr/bin/ to usr/sbin/ as it needs to be run by root + (as patched by Debian) + * Stop installing the upstream changelog twice + * Update 90-manpages patch to fix more errors and all hyphen-as-minus- + sign occurences + * Update 91-spelling-fixes to fix more occurences of 'langauge' or + 'similiar' + * Move hplj1000 and all linked scripts from /usr/sbin/ to /lib/udev as + they are called by the package udev rules-file + * Add lintian override for /lib/firmware/hp empty directory + * Only ship command2foo2lava-pjl in cups filters + + -- Didier Raboud Tue, 07 Jan 2014 15:43:17 +0100 + +foo2zjs (20131118dfsg0-1) unstable; urgency=low + + * New 20131118 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Update patches to cope with new upstream release + * Drop foo2zjs transitional package which reached stable + + -- Didier Raboud Fri, 29 Nov 2013 18:30:05 +0100 + +foo2zjs (20130813dfsg0-1) unstable; urgency=low + + * New 20130813 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Don't block the get-orig-source if no patches are applied + * Rebuild against pyppd >= 1.0.1 + * Refresh patches for new upstream release + + -- Didier Raboud Thu, 12 Sep 2013 20:31:55 +0200 + +foo2zjs (20130513dfsg0-1) unstable; urgency=low + + * New 20130513 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + -- Didier Raboud Fri, 17 May 2013 11:21:27 +0200 + +foo2zjs (20130306dfsg0-2) experimental; urgency=low + + [ Till Kamppeter ] + * Removed "Recommends: foomatic-db-engine" (LP: #1152831) + + -- Didier Raboud Sat, 09 Mar 2013 12:43:40 +0100 + +foo2zjs (20130306dfsg0-1) experimental; urgency=low + + * New 20130306 upstream release. + - Cleanup on foo2hblp2. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Amend 20130220dfsg0-2 changelog entry to revert the + Depends/Recommends explanation between Ubuntu and Debian back to + what was implemented. + * Add get-orig-source target to facilitate new upstream version + import. + * Add foo2hblp2 in Description. + + -- Didier Raboud Fri, 08 Mar 2013 15:13:33 +0100 + +foo2zjs (20130303dfsg0-1) experimental; urgency=low + + * New 20130303 upstream release. (LP: #984424) + - Experimental support for three new printers: + - Fuji Xerox DocuPrint CP205 + - Dell 1355 + - Xerox WorkCentre 6015 + - Refresh all patches + - Add foo2hbpl2 binary, wrapper and manpages + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Rewrite the package content installation to allow the use of + --fail-missing in dh_install. + * Install all available PPDs before the pyppd run, to make sure we + don't forget one. + * Rewrite debian/copyright with Copyright-Format 1.0 style. + * Rebuild PPDs because we can. + - Add foomatic-db-engine to Build-Depends; + - Update 10-makefile.patch to use system-provided foomatic-ppdfile; + - Run 'all' and 'ppd' Makefile targets. + + -- Didier Raboud Tue, 05 Mar 2013 10:37:06 +0100 + +foo2zjs (20130220dfsg0-2) experimental; urgency=low + + [ Didier Raboud ] + * Add time to Build-Depends, helps getting the tests run further. + * Update 10-makefile.patch to enforce LDFLAGS usage and another case + of CFLAGS overriding; also add DEP-3 headers. + * Put mscompress to Recommends on Debian and to Depends on Ubuntu and + derivatives, drops the need of a hand-merge by Ubuntu. + + [ Till Kamppeter ] + * Add 96-hplj1000-fix-cups-usb-backend-firmware-upload.patch. + The firmware upload script tried to upload the firmware via the usblp + kernel module and with the CUPS USB backend (using libusb) in parallel, + making the printer crash. (LP: #1003843) + + -- Didier Raboud Thu, 21 Feb 2013 18:32:51 +0100 + +foo2zjs (20130220dfsg0-1) experimental; urgency=low + + * New 20130220 upstream release. (LP: #1130918) + - Install new printer's PPDs + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Refresh all patches. + + -- Didier Raboud Thu, 21 Feb 2013 08:29:02 +0100 + +foo2zjs (20130113dfsg0-1) experimental; urgency=low + + * New 20130113 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Refresh all patches. + + -- Didier Raboud Sun, 13 Jan 2013 17:01:27 +0100 + +foo2zjs (20120510dfsg0-1) unstable; urgency=low + + * New 20120510 upstream release. + - Acknowledge the expiration of the JBIG-KIT patent. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Refresh patches. + * Drop the source lintian override for debhelper 9. + + -- Didier Raboud Wed, 23 May 2012 17:59:07 +0200 + +foo2zjs (20120223dfsg0-2) unstable; urgency=low + + * Use the Debian-provided libjbig: + - Add libjbig-dev to Build-Depends; + - Add 20-system-libjbig.patch. + * Bump Standards-Version to 3.9.3 without changes needed. + * Bump debhelper Build-Dependency to 9. + + -- Didier Raboud Thu, 26 Apr 2012 10:22:26 +0200 + +foo2zjs (20120223dfsg0-1) unstable; urgency=low + + * New 20120223 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Refresh patches. + * Remove Michael Koch from the Uploaders field (Closes: #654017) + * Ship the devd hplj10xx.conf on kFreeBSD. (Closes: #662146) + * Ship the udev rules file on Linux only. + + -- Didier Raboud Sun, 04 Mar 2012 21:22:28 +0100 + +foo2zjs (20111202dfsg0-1) unstable; urgency=low + + * New 20111202 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Refresh patches. + * Bump Build-Depends on pyppd to 0.4.9-6~ to make sure the compressed + PPD archive is named correctly. + + -- Didier Raboud Fri, 23 Dec 2011 10:10:24 +0100 + +foo2zjs (20111023dfsg0-1) unstable; urgency=low + + * New 20111023 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Refresh patches, delete 96-udev-firmware-script-cups-libusb-support.patch: + included upstream. + * Rename foo2zjs to printer-driver-foo2zjs, add transitional package. + * Bump debhelper compat to 9, for auto- buildflags. + * Drop superflous ppd-updater shebang. + + -- Didier Raboud Tue, 25 Oct 2011 11:52:45 +0200 + +foo2zjs (20110811dfsg-1) unstable; urgency=low + + * New 20110811 upstream release. + + * DFSG repack (no changes from previous releases). + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + + * Replace the PPD-updater postinst code by CUPS' trigger. + - Breaks against too old cups versions. + - Add a ppd-updater file, to trigger with parameters. + * Compress PPDs using {dh_,}pyppd. + - Add versioned pyppd Build-Depends. + - Call dh_pyppd after installing the PPDs, don't compress them individually. + - Update the ppd-updater file with the new regexp. + + -- Didier Raboud Thu, 18 Aug 2011 14:00:20 +0200 + +foo2zjs (20110722dfsg-3) unstable; urgency=low + + * Update 60-getweb.in.patch to add set -e (Closes: #633870 again). + + -- Didier Raboud Tue, 26 Jul 2011 23:27:03 +0200 + +foo2zjs (20110722dfsg-2) unstable; urgency=low + + * Install usb_printerid and its manpage only in Linux (Closes: #635397). + + -- Didier Raboud Tue, 26 Jul 2011 15:09:41 +0200 + +foo2zjs (20110722dfsg-1) unstable; urgency=low + + New 20110525 upstream release. + + [ Didier Raboud ] + * DFSG repack + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * Uploaders: + - Add myself. + - Drop Steffen Joeris, with thanks for his past work. + * Package relationships: + - Demote cups and cups-client from Depends to Recommends (Closes: #622125). + This allows one to use foo2zjs with lprng. + - Add a Recommends on mscompress. + * Patches: + - Refresh all. + - Update 30-udev-rules patch to cope with cups' usblp blacklisting. + - Add 40-desktop-direct-launch.patch to remove the superfluous "wish" + launch (avoids a lintian warning). + - Update debian/patches/60-getweb.in.patch: + Fix CVE-2011-2684 "Insecure Temporary File" (CWE-277) in + /usr/bin/getweb by creating a safe temporary directory with mktemp. + (Closes: #633870, LP: #805370) + - Enhance 60-getweb.in.patch to forbid live update of /usr/bin/getweb as it + is packaged. Also correct the typo in getweb. (Closes: #632680) + - Update 60-hplj1000.patch to use the correct paths in kFreeBSD too. + - Update 90-manpages.patch to fix more hyphen-used-as-minus mistakes. + - Add 91-spelling-fixes.patch to fix 'precission' spelling mistake. + * Convert to source format 3.0 (quilt) + * Convert packaging to "tiny" dh7 style. + * Migrate packaging to Git from Subversion, update Vcs-* fields. + * Bump Standards-Version to 3.9.2 without changes needed. + + [ Till Kamppeter ] + * debian/rules: Added "-dNOINTERPOLATE" to the Ghostscript command lines to + make Ghostscript rendering the pages significantly faster. + * debian/patches/96-udev-firmware-script-cups-libusb-support.patch: + Added support for uploading firmwae into printers using the USB backend of + CUPS. This way the firmware upload also works without the usblp kernel + module. (Closes: #630227, #630228) + * debian/patches/95-udev-firmware-script-no-hplip-rules-removal.patch: + Removed the lines in the UDEV script for the automatic firmware upload + into the printer which remove the UDEV rules files for HPLIP's automatic + firmware upload. (LP: #783389) + + -- Didier Raboud Mon, 25 Jul 2011 17:53:17 +0200 + +foo2zjs (20110210dfsg-2) unstable; urgency=low + + [ Luca Capello ] + * debian/README.Debian: + + rephrase paragraph about "HPLJ 10xx Replaced Paper" icon. + + [ Till Kamppeter ] + * Merge from Ubuntu natty. + * debian/patches/series: update. + * debian/patches/40-desktop-nodisplay-true.patch: + + do not display the "HPLJ 10xx Replaced Paper" icon by default + (see #579154). + * debian/rules: + + install Apport hook on Ubuntu and derivatives. + * debian/ubuntu/apport-hook.py: new file. + + -- Luca Capello Wed, 30 Mar 2011 23:20:11 +0200 + +foo2zjs (20110210dfsg-1) unstable; urgency=low + + * Move to team maintenance: Debian Printing Team at + http://wiki.debian.org/Teams/Printing + + [ Luca Capello ] + * New upstream version (Closes: #594322). + * DFSG repack + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * debian/control: + + team maintenance. + + Build-Depends: on dc. + * debian/foo2zjs.dirs: + + add /usr/lib/cups/filter/. + * debian/foo2zjs-icc2ps.1: + - remove, upstream now ships a different version. + * debian/manpages: + - remove, now useless. + * debian/patches/series: update. + * debian/patches/20-honour-papersize.patch: + + add a note that this patch is now useless, given that + starting with this version it is done in debian/rules. + * debian/patches/20-PDF-input-data-in-PPDs.patch: + + fake patch to show differences with upstream, it is + done in debian/rules. + * debian/patches/40-desktop-encoding-correction.patch, + debian/patches/60-getweb.in.patch: + + Update to work with new foo2zjs source. + * debian/rules: + + add pointers to the patches above. + + [ Till Kamppeter ] + * Merge from Ubuntu maverick. + * debian/control: + + Add dependency on cups and cups-client to ensure that automatic + update of the PPDs of existing print queues works. + * debian/foo2zjs.postinst: + + Automatically update the PPD files for existing queues to the + versions supplied with this package. + * debian/patches/20-honour-papersize.patch, + debian/patches/30-udev-rules.patch, + debian/patches/70-lib-firwmare-hp.patch, + debian/patches/80-getweb.in.patch, + debian/patches/90-manpages.patch: + + Update to work with new foo2zjs source. + * debian/patches/60-getweb.in.patch: + + Install ICM files into the directories of the correct drivers. + * debian/rules: + + Add "CUPS_SERVERBIN=..." to the "make install" command line. + + Add "*cupsFilter" line to accept PDF input data to the PPDs. + + Add /etc/papersize support. + + Add useful comments. + + Correct upstream link to the CUPS filter. + + Install additional PPDs and compress them. + + [ Steve Langasek ] + * Merge from Ubuntu maverick. + * debian/patches/30-udev-rules.dpatch: + + Add udev rule for HP Laserjet P1505n. + + -- Luca Capello Sun, 20 Feb 2011 19:19:18 +0100 + +foo2zjs (20090908dfsg-5.1) unstable; urgency=low + + * Non-maintainer upload. + * debian/control: + + Depends: on dc (Closes: #609761). + + -- Didier Raboud Wed, 12 Jan 2011 14:49:08 +0100 + +foo2zjs (20090908dfsg-5) unstable; urgency=low + + [ Luca Capello ] + * debian/README.Debian: + + add a note about the "HPLJ 10xx Replaced Paper" GUI requiring + tk8.4 and tix, now Suggests:. + * debian/control: + + Standards-Version to 3.9.1, no changes needed, thanks to lintian. + * debian/copyright: + + add information for cups.h (from the CUPS Imaging library). + + add information for msexpand (Perl, no relationship with the + one from the mscompress package). + - remove obsolete information for hannah-foo2zjs. + + [ Till Kamppeter ] + * Merge from Ubuntu maverick. + * debian/control: + + Depends: on foomatic-filters. + * debian/patches/series: update. + * debian/patches/92-udev-firmware-script-fixes.patch: + + When loading firmware into the printer via UDEV script, wait 3 + seconds, so that UDEV scripts for automatic printer setup do not + interfere with the firmware transfer to the printer. + + [ Steve Langasek ] + * Merge from Ubuntu maverick. + * debian/control: + - Drop tk8.4 and tix Recommends: to Suggests: (Closes: #601591). + + -- Luca Capello Sun, 14 Nov 2010 19:45:26 +0100 + +foo2zjs (20090908dfsg-4) unstable; urgency=low + + * debian/control: + + list all the provided drivers for better searching, thanks to + Sam Morris (Closes: #579962). + * debian/foo2zjs.doc-base: + + new file to register the documentation via doc-base, thanks to + lintian. + * debian/NEWS: + + add trailing blank line for apt-listchanges, thanks to lintian. + * debian/README.Debian: + + add paragraph titles. + + add paragraph about "HPLJ 10xx Replaced Paper" icon (see #579154). + * debian/source/format: + + new file, keep 1.0 format for now, thanks to lintian. + + -- Luca Capello Sat, 15 May 2010 19:21:25 +0200 + +foo2zjs (20090908dfsg-3) unstable; urgency=low + + * debian/foo2zjs.postinst: + + move firmware files only if they are present, thus avoiding a + "No such file or directory" error from mv during upgrades. + + -- Luca Capello Tue, 23 Mar 2010 11:54:44 +0100 + +foo2zjs (20090908dfsg-2) unstable; urgency=low + + [ Luca Capello ] + * debian/control: + + Standards-Version to 3.8.4, no changes needed, thanks to lintian. + + Build-Depends: on quilt to manage patches. + + Recommends: unzip for 'getexe' function in getweb script. + + add ${misc:Depends}, thanks to lintian. + * debian/foo2zjs.dirs: + + add /lib/firmware/hp/. + - remove now useless /usr/share/foo2zjs/tmp/. + * debian/foo2zjs.postinst: + + move user-downloaded firmwares to /lib/firwmare/hp/. + * debian/NEWS: + + notice the new location for firmwares. + * debian/patches/*: + + convert to quilt and refresh. + * debian/patches/60-getweb.in.patch: + + working directory is /tmp/foo2zjs/. + + new 'puticm' function to install ICM files. + + extract firmware for HP LaserJet P1006/1008/1505 printers as well. + - remove wrong 'putfw' call for Minolta 2200 DL. + * debian/patches/70-lib-firmware-hp.patch: + + firmware directory is /lib/firmware/hp/ (Closes: #517957). + * debian/README.source: + + adapt to quilt. + * debian/rules: + + adapt to quilt. + - remove touch call for /usr/share/foo2zjs/tmp/.placeholder. + + [ Michael Koch ] + * Removed Luca Bedogni from Uploaders as he is MIA (Closes: 550268). + * Updated Build-Depends on debhelper to level 7. + * Replaced dh_clean -h by dh_prep. + + [ Steve Langasek ] + * debian/control: Breaks: udev (<< 136-1) to ensure the correct udev + version is used. + * debian/foo2zjs.preinst: when installing or upgrading, remove the + old udev rules file /etc/udev/rules.d/11-hplj10xx.rules if it has + not been locally modified. + * debian/patches/30-udev-rules.dpatch (Closes: #558978): + + 'BUS=="usb"' is deprecated, replaced with 'SUBSYSTEMS=="usb"'. + + Removed UDEV rule items which conflict with the general UDEV rules + for USB printers: 'NAME="usb/%k"', 'MODE="0666"'. + + Change SYSFS to ATTRS. + * debian/rules: install the udev rules file as + /lib/udev/rules.d/85-hplj10xx.rules. + + -- Luca Capello Mon, 22 Mar 2010 17:09:44 +0100 + +foo2zjs (20090908dfsg-1) unstable; urgency=low + + * New upstream release. + - supports Minolta mc1690MF (Closes: #545950) + * debian/patches/60-hplj1000.dpatch: Removed last hunk as it is + applied upstream. + * debian/patches/70-printer-profile.dpatch: Added to work around + deleting of printer-profile script in upstream Makefile. + * debian/patches/90-manpages.dpatch: Updated to also fix manpage + of printer-profile. + * debian/README.source: Renamed from debian/README.Debian-source. + + -- Michael Koch Mon, 14 Sep 2009 20:21:07 +0200 + +foo2zjs (20090301dfsg-5) unstable; urgency=low + + * Remove hannah-foo2zjs package as its now in its own source package. + * debian/README.Debian-source: New file to describe usage of dpatch. + * debian/control: Updated Standards-Version to 3.8.3. + * debian/control: Add Vcs-Browser field. + + -- Michael Koch Wed, 02 Sep 2009 08:49:26 +0200 + +foo2zjs (20090301dfsg-4) unstable; urgency=low + + * debian/hannah-package/gui.cpp: Fix list of argument names for getweb + (Closes: #537325). + * debian/patches/40-hplj1000.dpatch: Updated to also guard globbered + names in find call (Closes: #526781). + * debian/README.Debian: Clarify how hannah-foo2zjs and getweb are used + (Closes: #503373, #529300). + * debian/copyright: Link to /usr/share/common-licenses/GPL-2 + instead of /usr/share/common-licenses/GPL. + * debian/control: + + hannah-foo2zjs: Tighten Depends on kdebase-bin to (<< 4:4.4.0-1) + (Closes: #460480). + + Updated Standards-Version to 3.8.2. + * debian/patches/60-getweb.in.dpatch: Exit with failure when called + as non-root. + * debian/patches/90-manpages.dpatch: New dpatch to fix manpage errors. + + -- Michael Koch Sat, 01 Aug 2009 14:01:43 +0200 + +foo2zjs (20090301dfsg-3) unstable; urgency=low + + * debian/control: + + s/tik/tix/ in Recommends:, my fault. + * debian/foo2zjs.dirs: + + sort alphabetically. + + add /usr/share/pixmaps (Closes: #521992). + * debian/foo2zjs.links: + + list all links to be created for the hplj* helper programs. + + install links for HP LaserJet P1xxx printers. + * debian/patches/00list: update. + * debian/patches/60-getweb.in.dpatch: + + extract firmware for HP LaserJet P1005/1007 printers as well. + * debian/patches/60-hplj1000.dpatch: + + always load firmwares from /usr/share/foo2zjs/firmware. + * debian/rules: + + call dh_link only once. + + -- Luca Capello Thu, 02 Apr 2009 18:07:52 +0200 + +foo2zjs (20090301dfsg-2) unstable; urgency=low + + * debian/patches/30-udev-rules.dpatch: + + for some printers, HP is lowercase, thanks to ilf + (Closes: #519628). + + -- Luca Capello Wed, 18 Mar 2009 22:32:41 +0100 + +foo2zjs (20090301dfsg-1) unstable; urgency=low + + * New upstream version (Closes: #466758) + * DFSG repack + - remove binary file c5200mono.prn + - remove crd/qpdl/CLP* , because copyright is unclear + * debian/*.1: + - remove, use upstream instead. + * debian/control: + + Recommends: tk8.4 and tik for hplj10xx_gui.tcl, thanks to lintian. + * debian/hannah-package/hanna.desktop: + - remove now useless Encoding key, thanks to lintian. + * debian/manpages: + + install foo2zjs-icc2ps.1 only. + * debian/patches/00list: update. + * debian/patches/10-makefile.dpatch: refresh. + * debian/patches/30-udevs-rules.dpatch: refresh. + * debian/patches/40-desktop-encoding-correction.dpatch: + - remove now useless Encoding key, thanks to lintian. + * debian/patches/40-path-correction.dpatch: refresh. + * debian/patches/50-fix-grotty-warnings: + - do not apply, it requires a too long refresh and a better + solution would be to fix the upstream manpage generation system. + * debian/patches/60-getweb.in.dpatch: refresh. + * debian/patches/70-getweb.in.dpatch: + - remove, no more needed. + * debian/watch: + + new dummy file, thanks to lintian. + + -- Luca Capello Tue, 03 Mar 2009 09:43:35 +0100 + +foo2zjs (20070718dfsg-9) unstable; urgency=low + + * debian/control: + + add myself to Uploaders:. + * debian/patches/30-udev-rules.dpatch: + + backport upstream fix to support udev hotplugging, thanks to + ilf (Closes: #477923). + + -- Luca Capello Mon, 22 Dec 2008 13:13:25 +0100 + +foo2zjs (20070718dfsg-8) unstable; urgency=low + + * Fixed bashism in debian/patches/60-getweb.in.dpatch. Closes: #489576 + * Use su-to-root in debian/hannah-foo2zjs.menu and + debian/hannah-package/hannah.desktop. + * Use menu section Applications/System/Administration instead of + Applications/System. + * Use the Suggests from menu package for the Depends of hannah-foo2zjs + to make su-to-root -X work always. + * Build-Depends on ghostscript instead of gs-gpl. + * Build-Depends on libcups2-dev instead of libcupsys2-dev. + * Added Recommends for foo2zjs on wget. Neede by getweb script. + * Exclude the manual.pdf from dh_compress. + + -- Michael Koch Thu, 21 Aug 2008 18:16:23 +0200 + +foo2zjs (20070718dfsg-7.1) unstable; urgency=medium + + * Non-maintainer upload. + * Add '80-getweb.in.dpatch' to fix bashism in /bin/sh script + (Closes: #472895) + * Bump Standards-Version to 3.8.0. + + -- Chris Lamb Sat, 07 Jun 2008 20:17:48 +0100 + +foo2zjs (20070718dfsg-7) unstable; urgency=medium + + * Added menu file for hannah-foo2zjs package (Closes: #444850). + - Call dh_installmenu in debian/rules + - Adjust debian/hannah-foo2zjs.dirs accordingly + * Modified debian/rules to use /usr/share/dpatch/dpatch.make + * Added a patch from a newer getweb because the firmware location has + changed (Closes: #449426). + + -- Luca Bedogni Thu, 15 Nov 2007 17:40:37 +1100 + +foo2zjs (20070718dfsg-6) unstable; urgency=low + + * debian/control: + - Added the Homepage tag insted of displaing it in the long description + (Closes: #439579). + - Added Vcs-Svn tag. + * Now hannah-foo2zjs display the output of an error (Closes:444852) + + -- Luca Bedogni Fri, 02 Nov 2007 01:06:58 +0100 + +foo2zjs (20070718dfsg-5) experimental; urgency=low + + * Change name of package hannah to hannah-foo2zjs to make + it more related to foo2zjs (and because there is already + a package in the archive called hannah) + - Also rename the binary to hannah-foo2zjs and its references + + -- Steffen Joeris Sun, 07 Oct 2007 17:13:46 +1000 + +foo2zjs (20070718dfsg-4) experimental; urgency=low + + [ Luca Bedogni ] + * Now hannah is a standalone package + - Moved debian/hannah to debian/hannah-package + - Added the clean call for hannah-package in debian/rules + - Added new package information to debian/control + * Modified menu file for opening hannah with kdesu or gksu + (Closes: #444850) + + [ Steffen Joeris ] + * Fix cleanup for hannah and call it with make distclean + * Remove dependency against kdebase-bin | gksu from foo2zjs, because + this is satisfied via hannah now + * Add hannah as a suggests for foo2zjs + * Add foo2zjs as a depends to hannah + * Add debian/copyright information + + -- Luca Bedogni Sun, 07 Oct 2007 16:24:58 +1000 + +foo2zjs (20070718dfsg-3) experimental; urgency=low + + * Include first version of Hannah (GUI for downloading and installing + the printer firmware) (Closes: #443994) + - Add Hannah code to debian/hannah/* + - Modify debian/rules to build hannah from source + - Add build-depends against libqt4-dev + - Generate the standard directory for .desktop files in debian/dirs + - Install hannah.desktop into the standard desktop directory + - Update README.Debian to point to Hannah + - Renamed dpatch to 60-getweb.in.dpatch and adjusted it to match + for Hannah + - Use tmp file under /usr/share/foo2zjs/tmp for unpacking and + preparing downloaded firmware + - Add a depends against kdebase-bin | gksu to use either of both + programs to become root, when calling hannah + * Fix breaking line in 11-hplj10xx.rules to repair it + (Closes: #443917) Thanks to Cristian Ionescu-Idbohrn for the patch + + + -- Steffen Joeris Sun, 30 Sep 2007 18:10:33 +1000 + +foo2zjs (20070718dfsg-2) unstable; urgency=low + + [ Luca Bedogni ] + * Added 60-getweb.dpatch for improving the getweb script to install the + firmware too, instead of download-only (Closes: #419038) + + [ Steffen Joeris ] + * Update README.Debian and remove some useless information + + [ Michael Koch ] + * Improved 60-getweb.dpatch to delete local files after putting them into + firmware directory + + -- Michael Koch Sat, 22 Sep 2007 21:58:30 +0200 + +foo2zjs (20070718dfsg-1) experimental; urgency=low + + [ Luca Bedogni ] + * Modified patches to fit with new version + * Removed Finn-Arne Johansen (Requested on #427678) + * Added me (Luca Bedogni) as co-maintainer + * Added Michael Koch as co-maintainer + + [ Steffen Joeris ] + * Put the alioth list as maintainer and myself as co-maintainer + - The package is now team maintained (Closes: #429872) + * New upstream version (Closes: #427678) + * DFSG repack + - Removed binary file c5200mono.prn + - Removed crd/qpdl/CLP* , because copyright is unclear + * Make sure that the PPD files are installed (Closes: #427665) + + -- Steffen Joeris Fri, 20 Jul 2007 18:07:24 +0200 + +foo2zjs (20061224-3) unstable; urgency=low + + * Make sure that the patches are cleaned up before the general + cleanup and therefore avoid FTBFS during second build + (Closes: #424277) + * Make sure that upstream documentation and copyright information are + not installed as they are not needed for debian + * Make sure that the cleanup target is complete + + -- Steffen Joeris Wed, 16 May 2007 15:44:32 +1000 + +foo2zjs (20061224-2) unstable; urgency=low + + * Upload to unstable + + -- Steffen Joeris Sun, 06 May 2007 18:57:46 +1000 + +foo2zjs (20061224-1) experimental; urgency=low + + * New upstream release + * Bump debhelper level to 5 + * Change my maintainer address + * Change 30-udev-rules.dpatch to patch the path for the program + * Change the path for the hplj1000 script (Closes: #402633) + * Install the ChangeLog file from upstream + * Still provide the hplj1000 script + * Improve package description (Closes: #400036) + * Remove old debian diversions file + * Update debian/copyright + * Patch the build system properly (10-makefile.dpatch) + + -- Steffen Joeris Sat, 6 Jan 2007 00:56:38 +0100 + +foo2zjs (20060625dfsg-4) unstable; urgency=medium + + * Make sure that the symlinks are available (Closes: #390948) + Thanks to Petre Todorov + + -- Steffen Joeris Sun, 8 Oct 2006 14:21:29 +1000 + +foo2zjs (20060625dfsg-3) unstable; urgency=medium + + * Correct the udev rules (30-udev-rules.dpatch) to make sure all of + the supported hp models work as expected (Closes: #390948) + * Correct the path of the program location in hplj1000 + (40-path-correction.dpatch) + + -- Steffen Joeris Fri, 6 Oct 2006 19:21:40 +1000 + +foo2zjs (20060625dfsg-2) unstable; urgency=low + + * Upload this version to unstable + + * Upload sponsored by Petter Reinholdtsen. + + -- Steffen Joeris Fri, 11 Aug 2006 20:58:53 +1000 + +foo2zjs (20060625dfsg-1) experimental; urgency=low + + * New upstream release + * Bump standards version, no changes needed + * Repack for DFSG compatibility + * Provide usb_printerid again (Closes: #355576) + * Provide the new firmware download scripts from upstream + * Use modified hp10xx.rules file from upstream + * Thanks for suggestions from Philippe Teuwen + * Add build-dependency against foomatic-filters to make sure foomatic-rip + is available + + * Upload sponsored by Morten Werner Olsen. + + -- Steffen Joeris Thu, 27 Jul 2006 18:20:54 +1000 + +foo2zjs (20060124dfsg-1) unstable; urgency=low + + * new upstream release (Closes: #351413) + * repack for DFSG compatibility + * wrote manpage for okidecode, used authors description + + * Upload sponsored by Petter Reinholdtsen. + + -- Steffen Joeris Sun, 5 Feb 2006 15:31:09 +0100 + +foo2zjs (20051220dfsg-1) unstable; urgency=low + + * new upstream release + * again have to repack it for DFSG compatibility + * add additional explanation + (e.g. reason for repack and reformat of manpages) to README.Debian + + * Upload sponsored by Petter Reinholdtsen. + + -- Steffen Joeris Sun, 01 Jan 2006 14:45:28 +0100 + +foo2zjs (20051120dfsg-1) unstable; urgency=low + + [ Changes by Steffen Joeris ] + * new upstream release + * add some clean targets to debian/rules + * modify make install in debian/rules + * repack and rename to *dfsg because of binaries in source ;( + * modify Makefile to recognize the dfsg changes + * wrote README.Debian to inform users about the changes + + [ Changes by Finn-Arne Johansen ] + * Added code to honour /etc/papersize (Closes: #237967) + (20-honour-papersize.dpatch) + + * Upload sponsored by Petter Reinholdtsen. + + -- Finn-Arne Johansen Fri, 2 Dec 2005 16:16:09 +0100 + +foo2zjs (20051113-1) unstable; urgency=low + + * New Maintainer and Co-Maintainer (Closes: #294813) + * New upstream release (Closes: #339761) + * Added new clean rules because of new version + * bumped standard version + * cleaned up the debian/control + * provide the full source from the author (Closes: #279830, #279829) + * wrote all authors to debian/copyright + * reformat the manpages to make the package completely lintian clean + + -- Steffen Joeris Fri, 18 Nov 2005 18:40:40 +0100 + +foo2zjs (20050217-1) unstable; urgency=low + + * New upstream release. + * Please note that there is an RFA for this package. + + -- Chris Lawrence Thu, 17 Feb 2005 23:26:51 -0600 + +foo2zjs (20040210-2) unstable; urgency=low + + * Remove the binary-only components from the generated package; if you + need foo2oak, see http://foo2oak.rkkda.com/. (Closes: #233311) + + -- Chris Lawrence Tue, 17 Feb 2004 21:05:36 -0600 + +foo2zjs (20040210-1) unstable; urgency=low + + * New upstream release. + + -- Chris Lawrence Sun, 15 Feb 2004 02:04:03 -0600 + +foo2zjs (20030807-1) unstable; urgency=low + + * New upstream release. + + -- Chris Lawrence Sun, 7 Sep 2003 12:32:07 -0500 + +foo2zjs (20030702-1) unstable; urgency=low + + * New upstream release: + + Add XML files for Minolta Color PageWorks/Pro L + + If color has been selected, but there isn't any color on the page, + then produce a monochrome ZjStream. + + -- Chris Lawrence Wed, 2 Jul 2003 22:55:33 -0500 + +foo2zjs (20030531-1) unstable; urgency=low + + * New upstream release. + + -- Chris Lawrence Fri, 6 Jun 2003 22:55:43 -0500 + +foo2zjs (20030526-1) unstable; urgency=low + + * Initial Release. (Closes: #194572) + + -- Chris Lawrence Tue, 27 May 2003 16:03:54 -0500 + diff --git a/compat b/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +9 diff --git a/control b/control new file mode 100644 index 0000000..13ef4f5 --- /dev/null +++ b/control @@ -0,0 +1,57 @@ +Source: foo2zjs +Section: text +Priority: optional +Maintainer: Debian Printing Team +Uploaders: Luca Capello , Didier Raboud +Build-Depends: debhelper (>= 9), + ghostscript, + cups-filters | foomatic-filters, + foomatic-db-engine, + libcups2-dev, + liblcms2-utils, + dc, + time, + pyppd (>= 1.0.2-1~), + libjbig-dev +XS-Testsuite: autopkgtest +Standards-Version: 3.9.8 +Homepage: http://foo2zjs.rkkda.com/ +Vcs-Git: https://anonscm.debian.org/git/printing/foo2zjs.git +Vcs-Browser: https://anonscm.debian.org/cgit/printing/foo2zjs.git + +Package: printer-driver-foo2zjs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, ${ubuntu:mscompress}, cups-filters | foomatic-filters, dc, printer-driver-foo2zjs-common (>= ${source:Version}), liblcms2-utils +Recommends: wget, unzip, ${debian:mscompress}, cups, cups-client +Suggests: psutils, hannah-foo2zjs +Breaks: udev (<< 136-1), cups (<< 1.5.0-3~), foo2zjs (<< 20111023dfsg0-1~) +Replaces: foo2zjs (<< 20111023dfsg0-1~) +Description: printer driver for ZjStream-based printers + foo2zjs is an open source printer driver for printers that use the + Zenographics ZjStream wire protocol for their print data, such as the + Minolta magicolor 2200/2300/2430 DL, Minolta Color PageWorks/Pro L and + HP LaserJet 1000/1005/1018/1020/1022. These printers are often + erroneously referred to as "winprinters" or "GDI printers". + . + This package provides the following drivers: foo2hblp2, foo2hiperc, + foo2hp, foo2lava, foo2oak, foo2qpdl, foo2slx, foo2xqx, foo2zjs. + . + The psutils package is needed to enable n-up printing support. + +Package: printer-driver-foo2zjs-common +Architecture: all +Depends: ${misc:Depends} +Recommends: ${debian:tix}, tk, printer-driver-foo2zjs (>= ${source:Version}) +Suggests: ${ubuntu:tix} +Enhances: printer-driver-foo2zjs (>= ${source:Version}) +Breaks: udev (<< 136-1), cups (<< 1.5.0-3~), foo2zjs (<< 20111023dfsg0-1~), printer-driver-foo2zjs (<< 20131225dfsg0-5~) +Replaces: foo2zjs (<< 20111023dfsg0-1~), printer-driver-foo2zjs (<< 20131225dfsg0-5~) +Description: printer driver for ZjStream-based printers - common files + foo2zjs is an open source printer driver for printers that use the + Zenographics ZjStream wire protocol for their print data, such as the + Minolta magicolor 2200/2300/2430 DL, Minolta Color PageWorks/Pro L and + HP LaserJet 1000/1005/1018/1020/1022. These printers are often + erroneously referred to as "winprinters" or "GDI printers". + . + This package contains the architecture-independent files for + printer-driver-foo2zjs. diff --git a/copyright b/copyright new file mode 100644 index 0000000..c486086 --- /dev/null +++ b/copyright @@ -0,0 +1,141 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: foo2zjs +Upstream-Contact: Rick Richardson +Source: http://foo2zjs.rkkda.com/foo2zjs.tar.gz + +Files: * +Copyright: 2006-2013 Rick Richardson +License: GPL-2+ + +Files: command2foo2lava-pjl.c +Copyright: 1993-2000 Easy Software Products + 2008-2009 Apple Inc + 2010 Reinhold Kainhofer +License: GPL-2+ + +Files: hbpldecode.c +Copyright: 2011-2012 Rick Richardson + 2011-2012 Peter Korf +License: GPL-2+ + +Files: msexpand +Copyright: 2001 Paul Laufer +License: GPL-2+ + +Files: jbig.c jbig.h jbig_ar.c jbig_ar.h +Copyright: 1995-2008 Markus Kuhn +License: GPL-2+ + +Files: cups.h +Copyright: 1997-2006 by Easy Software Products. +License: GPL-2 with CUPS exceptions + 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, version 2 of the License. + . + The full text of the GPL is distributed as in + /usr/share/common-licenses/GPL-2 on Debian systems. + . + In addition, as the copyright holder of CUPS, Apple Inc. grants + the following special exceptions: + . + 1. Apple Operating System Development License Exception; + . + a. Software that is developed by any person or entity + for an Apple Operating System ("Apple OS-Developed + Software"), including but not limited to Apple and + third party printer drivers, filters, and backends + for an Apple Operating System, that is linked to the + CUPS imaging library or based on any sample filters + or backends provided with CUPS shall not be + considered to be a derivative work or collective work + based on the CUPS program and is exempt from the + mandatory source code release clauses of the GNU GPL. + You may therefore distribute linked combinations of + the CUPS imaging library with Apple OS-Developed + Software without releasing the source code of the + Apple OS-Developed Software. You may also use sample + filters and backends provided with CUPS to develop + Apple OS-Developed Software without releasing the + source code of the Apple OS-Developed Software. + . + b. An Apple Operating System means any operating system + software developed and/or marketed by Apple Computer, + Inc., including but not limited to all existing + releases and versions of Apple's Darwin, Mac OS X, + and Mac OS X Server products and all follow-on + releases and future versions thereof. + . + c. This exception is only available for Apple + OS-Developed Software and does not apply to software + that is distributed for use on other operating + systems. + . + d. All CUPS software that falls under this license + exception have the following text at the top of each + source file: + . + This file is subject to the Apple OS-Developed + Software exception. + . + 2. OpenSSL Toolkit License Exception; + . + a. Apple Inc. explicitly allows the compilation and + distribution of the CUPS software with the OpenSSL + Toolkit. + . + No developer is required to provide these exceptions in a + derived work. + +Files: icc2ps/*.c icc2ps/*.h +Copyright: 1998-2007 Marti Maria + 1994-1996 SunSoft, Inc. +License: MIT + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the Software + is furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO + THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Files: debian/* +Copyright: 2003-2005 Chris Lawrence + 2005-2007 Steffen Joeris + 2007 Luca Bedogni + 2007-2009 Michael Koch + 2008-2011 Luca Capello + 2011-2013 Didier Raboud +License: GPL-2+ + +License: GPL-2+ + 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 package; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, + Boston, MA 02110-1301 USA + . + On Debian systems, the full text of the GNU General Public + License version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 0000000..47e7402 --- /dev/null +++ b/gbp.conf @@ -0,0 +1,4 @@ +[DEFAULT] +debian-branch = debian/master +upstream-branch = upstream/latest +pristine-tar = True diff --git a/patches/0001-Update-makefiles-to-Debian-best-practices.patch b/patches/0001-Update-makefiles-to-Debian-best-practices.patch new file mode 100644 index 0000000..df15e88 --- /dev/null +++ b/patches/0001-Update-makefiles-to-Debian-best-practices.patch @@ -0,0 +1,228 @@ +From c8291b48413ee50d51a6c1f2b74f8a6c8a298e43 Mon Sep 17 00:00:00 2001 +From: Steffen Joeris +Date: Tue, 4 Oct 2016 11:43:43 +0200 +Subject: Update makefiles to Debian best-practices + +Author: Luca Capello +Author: Didier Raboud +--- + Makefile | 71 +++++++++++++++++++++++++++------------------------------ + icc2ps/Makefile | 4 ++-- + 2 files changed, 35 insertions(+), 40 deletions(-) + +diff --git a/Makefile b/Makefile +index addc4b5..ec81e21 100644 +--- a/Makefile ++++ b/Makefile +@@ -17,9 +17,7 @@ SYSNAME := $(shell uname -n) + VERSION=0.0 + + # Installation prefix... +-PREFIX=/usr/local + PREFIX=/usr +-PREFIX=$(DESTDIR)/usr + + # Pathnames for this package... + BIN=$(PREFIX)/bin +@@ -39,7 +37,7 @@ INSTALL=install + ROOT=root + + # Pathnames for referenced packages... +-FOODB=$(DESTDIR)/usr/share/foomatic/db/source ++FOODB=$(DESTDIR)/share/foomatic/db/source + + # User ID's + LPuid=-oroot +@@ -468,34 +466,34 @@ all-done: + + + foo2ddst: foo2ddst.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2ddst.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2ddst.o $(LIBJBG) $(LDFLAGS) + + foo2hbpl2: foo2hbpl2.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2hbpl2.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2hbpl2.o $(LIBJBG) $(LDFLAGS) + + foo2hp: foo2hp.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2hp.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2hp.o $(LIBJBG) $(LDFLAGS) + + foo2hiperc: foo2hiperc.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2hiperc.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2hiperc.o $(LIBJBG) $(LDFLAGS) + + foo2lava: foo2lava.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2lava.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2lava.o $(LIBJBG) $(LDFLAGS) + + foo2oak: foo2oak.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2oak.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2oak.o $(LIBJBG) $(LDFLAGS) + + foo2qpdl: foo2qpdl.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2qpdl.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2qpdl.o $(LIBJBG) $(LDFLAGS) + + foo2slx: foo2slx.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2slx.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2slx.o $(LIBJBG) $(LDFLAGS) + + foo2xqx: foo2xqx.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2xqx.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2xqx.o $(LIBJBG) $(LDFLAGS) + + foo2zjs: foo2zjs.o $(LIBJBG) +- $(CC) $(CFLAGS) -o $@ foo2zjs.o $(LIBJBG) ++ $(CC) $(CFLAGS) -o $@ foo2zjs.o $(LIBJBG) $(LDFLAGS) + + + foo2ddst-wrapper: foo2ddst-wrapper.in Makefile +@@ -581,49 +579,49 @@ ifeq ($(UNAME),Darwin) + endif + + ok: ok.o $(LIBJBG) +- $(CC) $(CFLAGS) ok.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) ok.o $(LIBJBG) -o $@ $(LDFLAGS) + + ddstdecode: ddstdecode.o $(LIBJBG) +- $(CC) $(CFLAGS) ddstdecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) ddstdecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + gipddecode: gipddecode.o $(LIBJBG) +- $(CC) $(CFLAGS) gipddecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) gipddecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + hbpldecode: hbpldecode.o $(LIBJBG) +- $(CC) $(CFLAGS) hbpldecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) hbpldecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + hipercdecode: hipercdecode.o $(LIBJBG) +- $(CC) $(CFLAGS) hipercdecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) hipercdecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + lavadecode: lavadecode.o $(LIBJBG) +- $(CC) $(CFLAGS) lavadecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) lavadecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + oakdecode: oakdecode.o $(LIBJBG) +- $(CC) $(CFLAGS) -g oakdecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) -g oakdecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + opldecode: opldecode.o $(LIBJBG) +- $(CC) $(CFLAGS) -g opldecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) -g opldecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + qpdldecode: qpdldecode.o $(LIBJBG) +- $(CC) $(CFLAGS) qpdldecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) qpdldecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + splcdecode: splcdecode.o $(LIBJBG) +- $(CC) $(CFLAGS) splcdecode.o $(LIBJBG) -lz -o $@ ++ $(CC) $(CFLAGS) splcdecode.o $(LIBJBG) -lz -o $@ $(LDFLAGS) + + slxdecode: slxdecode.o $(LIBJBG) +- $(CC) $(CFLAGS) slxdecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) slxdecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + xqxdecode: xqxdecode.o $(LIBJBG) +- $(CC) $(CFLAGS) xqxdecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) xqxdecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + zjsdecode: zjsdecode.o $(LIBJBG) +- $(CC) $(CFLAGS) zjsdecode.o $(LIBJBG) -o $@ ++ $(CC) $(CFLAGS) zjsdecode.o $(LIBJBG) -o $@ $(LDFLAGS) + + command2foo2lava-pjl: command2foo2lava-pjl.o +- $(CC) $(CFLAGS) -L/usr/local/lib command2foo2lava-pjl.o -lcups -o $@ ++ $(CC) $(CFLAGS) -L/usr/local/lib command2foo2lava-pjl.o -lcups -o $@ $(LDFLAGS) + + command2foo2lava-pjl.o: command2foo2lava-pjl.c +- $(CC) $(CFLAGS) -I/usr/local/include -c command2foo2lava-pjl.c ++ $(CC) $(CPPFLAGS) $(CFLAGS) -I/usr/local/include -c command2foo2lava-pjl.c + + # + # Installation rules +@@ -669,8 +667,6 @@ install-test: + # + + +-UDEVBIN=$(DESTDIR)/bin/ +- + install-prog: + # + # Install driver, wrapper, and development tools +@@ -679,7 +675,7 @@ install-prog: + $(INSTALL) -c $(PROGS) $(SHELLS) $(BIN)/ + if [ "$(BINPROGS)" != "" ]; then \ + $(INSTALL) -d $(UDEVBIN); \ +- $(INSTALL) -c $(BINPROGS) $(UDEVBIN); \ ++ $(INSTALL) -c $(BINPROGS) $(BIN); \ + fi + # + # Install gamma correction files. These are just templates, +@@ -873,7 +869,7 @@ install-extra: + done + + MODEL=$(PREFIX)/share/cups/model +-LOCALMODEL=$(DESTDIR)/usr/local/share/cups/model ++LOCALMODEL=$(DESTDIR)/local/share/cups/model + MACMODEL=/Library/Printers/PPDs/Contents/Resources + PPD=$(PREFIX)/share/ppd + VARPPD=/var/lp/ppd +@@ -934,9 +930,9 @@ install-ppd: + done; \ + fi + +-APPL=$(DESTDIR)/usr/share/applications +-OLDAPPL=$(DESTDIR)/usr/share/gnome/apps/System +-PIXMAPS=$(DESTDIR)/usr/share/pixmaps ++APPL=$(DESTDIR)/share/applications ++OLDAPPL=$(DESTDIR)/share/gnome/apps/System ++PIXMAPS=$(DESTDIR)/share/pixmaps + + install-desktop: + # +@@ -1491,10 +1487,9 @@ ppd: + *) driver=foo2zjs;; \ + esac; \ + echo $$driver - $$printer; \ +- ENGINE=../foomatic/foomatic-db-engine; \ + PERL5LIB=$$ENGINE/lib \ + FOOMATICDB=foomatic-db \ +- $$ENGINE/foomatic-ppdfile \ ++ /usr/bin/foomatic-ppdfile \ + -d $$driver -p $$printer \ + > PPD/$$printer.ppd; \ + done +@@ -1950,7 +1945,7 @@ FRC: + misc: pksm2bitcmyk phorum-logo.gif + + pksm2bitcmyk: pksm2bitcmyk.c +- $(CC) $(CFLAGS) pksm2bitcmyk.c -lnetpbm -o $@ ++ $(CC) $(CFLAGS) pksm2bitcmyk.c -lnetpbm -o $@ $(LDFLAGS) + + phorum-logo.gif: archhp.fig + fig2dev -L gif -m.25 archhp.fig | giftrans -t "#ffffff" -o $@ +diff --git a/icc2ps/Makefile b/icc2ps/Makefile +index f3abb99..215105b 100644 +--- a/icc2ps/Makefile ++++ b/icc2ps/Makefile +@@ -9,7 +9,7 @@ SRC= icc2ps.c xgetopt.c + LIB= cmscam97.c cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ + cmslut.c cmsmatsh.c cmsmtrx.c cmsnamed.c cmspack.c cmspcs.c cmsps2.c \ + cmssamp.c cmswtpnt.c cmsxform.c cmsio0.c cmsvirt.c +-CFLAGS= -O3 ++CFLAGS+= -O3 + INSTALL=install + ifeq ($(UNAME),SunOS) + INSTALL=/usr/ucb/install +@@ -21,7 +21,7 @@ endif + all: foo2zjs-icc2ps man + + foo2zjs-icc2ps: $(SRC) $(LIB) +- $(CC) $(CFLAGS) $(SRC) $(LIB) -lm -o $@ ++ $(CC) $(CPPFLAGS) $(CFLAGS) $(SRC) $(LIB) -lm -o $@ $(LDFLAGS) + + install: all + $(INSTALL) -c foo2zjs-icc2ps $(BIN) diff --git a/patches/0002-Fix-icc2ps-build.patch b/patches/0002-Fix-icc2ps-build.patch new file mode 100644 index 0000000..2a043e8 --- /dev/null +++ b/patches/0002-Fix-icc2ps-build.patch @@ -0,0 +1,40 @@ +From c56817bb895f5964b891f7c140d26be614087e4c Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:44 +0200 +Subject: Fix icc2ps build + +Include unistd.h to make sure the swab function is not implicitely declared, +also declare _XOPEN_SOURCE to have it available through unistd.h, and +therefore declare _GNU_SOURCE to have strcasecmp() and vsnprintf() +--- + icc2ps/Makefile | 4 ++++ + icc2ps/cmsio1.c | 1 + + 2 files changed, 5 insertions(+) + +diff --git a/icc2ps/Makefile b/icc2ps/Makefile +index 215105b..0aa49ba 100644 +--- a/icc2ps/Makefile ++++ b/icc2ps/Makefile +@@ -10,6 +10,10 @@ LIB= cmscam97.c cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ + cmslut.c cmsmatsh.c cmsmtrx.c cmsnamed.c cmspack.c cmspcs.c cmsps2.c \ + cmssamp.c cmswtpnt.c cmsxform.c cmsio0.c cmsvirt.c + CFLAGS+= -O3 ++ ++# _XOPEN_SOURCE is required for swab() but undefines strcasecmp(), so add _GNU_SOURCE as well: ++CFLAGS+= -D_XOPEN_SOURCE -D_GNU_SOURCE ++ + INSTALL=install + ifeq ($(UNAME),SunOS) + INSTALL=/usr/ucb/install +diff --git a/icc2ps/cmsio1.c b/icc2ps/cmsio1.c +index 1f02720..9f9d6e4 100644 +--- a/icc2ps/cmsio1.c ++++ b/icc2ps/cmsio1.c +@@ -71,6 +71,7 @@ void xswab(const void *from, void *to, size_t len) + #undef STEP + } + #else ++#include + #define xswab swab + #endif + diff --git a/patches/0003-Don-t-build-icc2ps-but-use-psicc-from-liblcms2-utils.patch b/patches/0003-Don-t-build-icc2ps-but-use-psicc-from-liblcms2-utils.patch new file mode 100644 index 0000000..11e1c87 --- /dev/null +++ b/patches/0003-Don-t-build-icc2ps-but-use-psicc-from-liblcms2-utils.patch @@ -0,0 +1,107 @@ +From da709450f3521ab85a75a829c26fe36368ef58ea Mon Sep 17 00:00:00 2001 +From: Michael Gilbert +Date: Tue, 4 Oct 2016 11:43:45 +0200 +Subject: Don't build icc2ps but use psicc from liblcms2-utils instead + +--- + Makefile | 22 +++++----------------- + 1 file changed, 5 insertions(+), 17 deletions(-) + +diff --git a/Makefile b/Makefile +index ec81e21..d1cae6e 100644 +--- a/Makefile ++++ b/Makefile +@@ -196,13 +196,6 @@ FILES = \ + foomatic-db/*/*.xml \ + foomatic-test \ + getweb.in \ +- icc2ps/*.[ch] \ +- icc2ps/*.1in \ +- icc2ps/Makefile \ +- icc2ps/AUTHORS \ +- icc2ps/COPYING \ +- icc2ps/README \ +- icc2ps/README.foo2zjs \ + osx-hotplug/Makefile \ + osx-hotplug/*.m \ + osx-hotplug/*.1in \ +@@ -393,7 +386,7 @@ JBGOPTS=-m 16 -d 0 -p 92 # Equivalent options for pbmtojbg + # The usual build rules + # + all: all-test $(PROGS) $(BINPROGS) $(SHELLS) getweb \ +- all-icc2ps all-osx-hotplug man doc \ ++ all-osx-hotplug man doc \ + all-done + + all-test: +@@ -626,7 +619,7 @@ command2foo2lava-pjl.o: command2foo2lava-pjl.c + # + # Installation rules + # +-install: all install-test install-prog install-icc2ps install-osx-hotplug \ ++install: all install-test install-prog install-osx-hotplug \ + install-extra install-crd install-foo install-ppd \ + install-gui install-desktop install-filter \ + install-man install-doc +@@ -1175,7 +1168,6 @@ uninstall: + -rm -f $(MANDIR)/man1/foo2ddst*.1 $(MANDIR)/man1/ddstdecode.1 + -rm -f $(MANDIR)/man1/gipddecode.1 + -rm -f $(MANDIR)/man1/arm2hpdl.1 $(MANDIR)/man1/usb_printerid.1 +- -rm -f $(MANDIR)/man1/foo2zjs-icc2ps.1 + -rm -rf /usr/share/foo2zjs/ + -rm -rf /usr/share/foo2hp/ + -rm -rf /usr/share/foo2oak/ +@@ -1202,7 +1194,6 @@ uninstall: + -rm -f /usr/bin/gipddecode + -rm -f /usr/bin/opldecode + -rm -f /usr/bin/rodecode +- -rm -f /usr/bin/foo2zjs-icc2ps + -rm -f /usr/bin/foo2zjs-pstops + -rm -f /usr/bin/command2foo2lava-pjl + -rm -f /usr/lib/cups/filter/command2foo2lava-pjl +@@ -1247,7 +1238,6 @@ clean: + -rm -f *.zjs *.zm *.zc *.zc? *.zc?? *.oak *.pbm *.pksm *.cmyk + -rm -f pksm2bitcmyk + -rm -f *.icm.*.ps +- cd icc2ps; $(MAKE) $@ + cd osx-hotplug; $(MAKE) $@ + + # +@@ -1401,7 +1391,7 @@ pprtest-3.oak: FRC + # + # icc2ps regression tests + # +-ICC2PS=./icc2ps/foo2zjs-icc2ps ++ICC2PS=/usr/bin/psicc + icctest: + for g in *.icm; do \ + for i in 0 1 2 3; do \ +@@ -1502,7 +1492,7 @@ oldppd: + # Manpage generation. No, I am not interested in "info" files or + # HTML documentation. + # +-man: $(MANPAGES) man-icc2ps man-osx-hotplug ++man: $(MANPAGES) man-osx-hotplug + + $(MANPAGES): macros.man includer-man + +@@ -1573,7 +1563,6 @@ install-man: man + $(INSTALL) -c -m 644 arm2hpdl.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 usb_printerid.1 $(MANDIR)/man1/ + $(INSTALL) -c -m 644 printer-profile.1 $(MANDIR)/man1/ +- cd icc2ps; $(MAKE) install-man + ifeq ($(UNAME),Darwin) + cd osx-hotplug; $(MAKE) install-man + endif +@@ -1594,10 +1583,9 @@ install-doc: doc + + GROFF=/usr/local/test/bin/groff + GROFF=groff +-manual.pdf: $(MANPAGES) icc2ps/foo2zjs-icc2ps.1 osx-hotplug/osx-hplj-hotplug.1 ++manual.pdf: $(MANPAGES) osx-hotplug/osx-hplj-hotplug.1 + -$(GROFF) -t -man \ + `ls $(MANPAGES) \ +- icc2ps/foo2zjs-icc2ps.1 \ + osx-hotplug/osx-hplj-hotplug.1 \ + | sort` \ + | ps2pdf - $@ diff --git a/patches/0004-Use-the-Debian-provided-libjbig.patch b/patches/0004-Use-the-Debian-provided-libjbig.patch new file mode 100644 index 0000000..32368ce --- /dev/null +++ b/patches/0004-Use-the-Debian-provided-libjbig.patch @@ -0,0 +1,33 @@ +From bb8bab316654333ca9fa92dcd3fe78a24fc54cfe Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:47 +0200 +Subject: Use the Debian-provided libjbig. + +--- + Makefile | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index d1cae6e..4410c6f 100644 +--- a/Makefile ++++ b/Makefile +@@ -126,10 +126,6 @@ FILES = \ + Makefile \ + foo2zjs.c \ + foo2zjs.1in \ +- jbig.c \ +- jbig.h \ +- jbig_ar.c \ +- jbig_ar.h \ + zjsdecode.c \ + zjsdecode.1in \ + zjs.h \ +@@ -286,7 +282,7 @@ MANPAGES+= foo2ddst-wrapper.1 foo2ddst.1 ddstdecode.1 + MANPAGES+= gipddecode.1 + MANPAGES+= foo2zjs-pstops.1 arm2hpdl.1 usb_printerid.1 + MANPAGES+= printer-profile.1 +-LIBJBG = jbig.o jbig_ar.o ++LIBJBG = -ljbig + BINPROGS= + + ifeq ($(UNAME),Linux) diff --git a/patches/0005-Link-against-system-liblcms1.patch b/patches/0005-Link-against-system-liblcms1.patch new file mode 100644 index 0000000..e1ed71f --- /dev/null +++ b/patches/0005-Link-against-system-liblcms1.patch @@ -0,0 +1,33 @@ +From d20224cb79790c6c25d0e95e1b635b6eb2e6fb7e Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:48 +0200 +Subject: Link against system liblcms1 + +--- + icc2ps/Makefile | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/icc2ps/Makefile b/icc2ps/Makefile +index 0aa49ba..87f57b5 100644 +--- a/icc2ps/Makefile ++++ b/icc2ps/Makefile +@@ -6,9 +6,7 @@ BIN= $(PREFIX)/bin + MANDIR=$(PREFIX)/share/man + + SRC= icc2ps.c xgetopt.c +-LIB= cmscam97.c cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ +- cmslut.c cmsmatsh.c cmsmtrx.c cmsnamed.c cmspack.c cmspcs.c cmsps2.c \ +- cmssamp.c cmswtpnt.c cmsxform.c cmsio0.c cmsvirt.c ++LIB= -llcms + CFLAGS+= -O3 + + # _XOPEN_SOURCE is required for swab() but undefines strcasecmp(), so add _GNU_SOURCE as well: +@@ -55,7 +53,7 @@ install-man: man + clean: + rm -f *.o foo2zjs-icc2ps *.1 + +-foo2zjs-icc2ps: icc34.h lcms.h ++foo2zjs-icc2ps: icc34.h + + regress: all + @./foo2zjs-icc2ps a b 2>&1 | grep "little cms P" diff --git a/patches/0006-Correct-the-udev-rules.patch b/patches/0006-Correct-the-udev-rules.patch new file mode 100644 index 0000000..8b253f3 --- /dev/null +++ b/patches/0006-Correct-the-udev-rules.patch @@ -0,0 +1,89 @@ +From a7d1c3e7206065ccc47d5d609e496d0927099452 Mon Sep 17 00:00:00 2001 +From: Luca Capello +Date: Tue, 4 Oct 2016 11:43:49 +0200 +Subject: Correct the udev rules: + + a) remove KERNEL=="lp*", as usblp is now blacklisted by CUPS (it will work without CUPS too). + b) Replace paths: /etc/hotplug/usb/ by no path, as the binaries are shipped in /lib/udev/ + c) Drop the MODE specification + d) Add ACTION=="ADD", otherwise the firmware script runs after unplugging as well +Author: Didier Raboud +Author: Peter De Wachter +--- + hplj10xx.rules | 58 +++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 31 insertions(+), 27 deletions(-) + +diff --git a/hplj10xx.rules b/hplj10xx.rules +index ee0295d..3d69ca3 100644 +--- a/hplj10xx.rules ++++ b/hplj10xx.rules +@@ -2,38 +2,42 @@ + # hplj10xx.rules.old: udev equal or after 1.30 + # + #Own udev rule for HP Laserjet 1000 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="hp LaserJet 1000", NAME="usb/%k", \ +- SYMLINK+="hplj1000-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1000" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="hp LaserJet 1000", \ ++ SYMLINK+="hplj1000-%n", RUN+="hplj1000" + #Own udev rule for HP Laserjet 1005 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="hp LaserJet 1005 series", NAME="usb/%k", \ +- SYMLINK+="hplj1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1005" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="hp LaserJet 1005 series", \ ++ SYMLINK+="hplj1005-%n", RUN+="hplj1005" + #Own udev rule for HP Laserjet 1018 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="HP LaserJet 1018", NAME="usb/%k", \ +- SYMLINK+="hplj1018-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1018" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet 1018", \ ++ SYMLINK+="hplj1018-%n", RUN+="hplj1018" + #Own udev rule for HP Laserjet 1020 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="HP LaserJet 1020", NAME="usb/%k", \ +- SYMLINK+="hplj1020-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1020" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet 1020", \ ++ SYMLINK+="hplj1020-%n", RUN+="hplj1020" + #Own udev rule for HP Laserjet P1005 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="HP LaserJet P1005", NAME="usb/%k", \ +- SYMLINK+="hpljP1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1005" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet P1005", \ ++ SYMLINK+="hpljP1005-%n", RUN+="hpljP1005" + #Own udev rule for HP Laserjet P1006 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="HP LaserJet P1006", NAME="usb/%k", \ +- SYMLINK+="hpljP1006-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1006" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet P1006", \ ++ SYMLINK+="hpljP1006-%n", RUN+="hpljP1006" + #Own udev rule for HP Laserjet P1007 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="HP LaserJet P1007", NAME="usb/%k", \ +- SYMLINK+="hpljP1007-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1007" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet P1007", \ ++ SYMLINK+="hpljP1007-%n", RUN+="hpljP1007" + #Own udev rule for HP Laserjet P1008 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="HP LaserJet P1008", NAME="usb/%k", \ +- SYMLINK+="hpljP1008-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1008" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet P1008", \ ++ SYMLINK+="hpljP1008-%n", RUN+="hpljP1008" + #Own udev rule for HP Laserjet P1505 +-KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ +- ATTRS{product}=="HP LaserJet P1505", NAME="usb/%k", \ +- SYMLINK+="hpljP1505-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1505" ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet P1505", \ ++ SYMLINK+="hpljP1505-%n", RUN+="hpljP1505" ++#Own udev rule for HP Laserjet P1505n ++ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ ++ ATTRS{product}=="HP LaserJet P1505n", \ ++ SYMLINK+="hpljP1505n-%n", RUN+="hpljP1505n" diff --git a/patches/0007-Remove-Encoding-from-.desktop-file.patch b/patches/0007-Remove-Encoding-from-.desktop-file.patch new file mode 100644 index 0000000..687ea80 --- /dev/null +++ b/patches/0007-Remove-Encoding-from-.desktop-file.patch @@ -0,0 +1,19 @@ +From 3cfa55d24a96c16982d1789d61c411e6d40067a1 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:50 +0200 +Subject: Remove 'Encoding' from .desktop file + +--- + hplj1020.desktop | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/hplj1020.desktop b/hplj1020.desktop +index 121ab2b..49f9705 100644 +--- a/hplj1020.desktop ++++ b/hplj1020.desktop +@@ -1,5 +1,4 @@ + [Desktop Entry] +-Encoding=UTF-8 + Name=Reactivate HP LaserJet 1018/1020 after reloading paper + Comment=Click the button in this program when your printer ran out of paper and you have refilled the paper + # zExec=usb_printerid /dev/usb/lp0 diff --git a/patches/0008-Do-not-display-the-icon-by-default.patch b/patches/0008-Do-not-display-the-icon-by-default.patch new file mode 100644 index 0000000..590159c --- /dev/null +++ b/patches/0008-Do-not-display-the-icon-by-default.patch @@ -0,0 +1,19 @@ +From 7670b594fd5f1455a40159b3d9b4e66e20602018 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:51 +0200 +Subject: Do not display the icon by default + +See #579154 +--- + hplj1020.desktop | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hplj1020.desktop b/hplj1020.desktop +index 49f9705..76adb31 100644 +--- a/hplj1020.desktop ++++ b/hplj1020.desktop +@@ -9,3 +9,4 @@ Icon=/usr/share/pixmaps/hplj1020_icon.png + StartupNotify=true + Categories=System; + X-Desktop-File-Install-Version=0.10 ++NoDisplay=true diff --git a/patches/0009-Launch-the-_gui.tcl-directly-instead-of-launching-wi.patch b/patches/0009-Launch-the-_gui.tcl-directly-instead-of-launching-wi.patch new file mode 100644 index 0000000..0665cdf --- /dev/null +++ b/patches/0009-Launch-the-_gui.tcl-directly-instead-of-launching-wi.patch @@ -0,0 +1,23 @@ +From 391f5c0da3e03b7066a20759b4e7ebbdda5f08f6 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:52 +0200 +Subject: Launch the _gui.tcl directly (instead of launching wish outside of + it), avoids a lintian warning. + +--- + hplj1020.desktop | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hplj1020.desktop b/hplj1020.desktop +index 76adb31..6dd0b3f 100644 +--- a/hplj1020.desktop ++++ b/hplj1020.desktop +@@ -2,7 +2,7 @@ + Name=Reactivate HP LaserJet 1018/1020 after reloading paper + Comment=Click the button in this program when your printer ran out of paper and you have refilled the paper + # zExec=usb_printerid /dev/usb/lp0 +-Exec=wish /usr/share/foo2zjs/hplj10xx_gui.tcl ++Exec=/usr/share/foo2zjs/hplj10xx_gui.tcl + Terminal=false + Type=Application + Icon=/usr/share/pixmaps/hplj1020_icon.png diff --git a/patches/0010-Correct-the-path-for-the-usb_printerid-program.patch b/patches/0010-Correct-the-path-for-the-usb_printerid-program.patch new file mode 100644 index 0000000..09a246b --- /dev/null +++ b/patches/0010-Correct-the-path-for-the-usb_printerid-program.patch @@ -0,0 +1,22 @@ +From c274adc69ab1f2dbf851b3d06bbb7b3a0efe8ec0 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:53 +0200 +Subject: Correct the path for the usb_printerid program + +--- + hplj1000 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hplj1000 b/hplj1000 +index 323069c..bb87a79 100755 +--- a/hplj1000 ++++ b/hplj1000 +@@ -60,7 +60,7 @@ FWDIR=/usr/share/foo2zjs/firmware + # [snip] + # # Mount all other filesystems (except for NFS and /proc, which is already + # +-PRINTERID=/bin/usb_printerid ++PRINTERID=`which usb_printerid` + + # + # Figure out how to log our messages diff --git a/patches/0011-Improve-getweb-also-for-installing-the-firmware.patch b/patches/0011-Improve-getweb-also-for-installing-the-firmware.patch new file mode 100644 index 0000000..94e9054 --- /dev/null +++ b/patches/0011-Improve-getweb-also-for-installing-the-firmware.patch @@ -0,0 +1,317 @@ +From 91bf0670e3085a9229e8fd0a8e6cdb08ae329044 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:54 +0200 +Subject: Improve getweb also for installing the firmware + +Fix the icm file installing code to create inexistant folders +--- + getweb.in | 80 +++++++++++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 58 insertions(+), 22 deletions(-) + +diff --git a/getweb.in b/getweb.in +index 5215e02..11f2aa6 100755 +--- a/getweb.in ++++ b/getweb.in +@@ -1,8 +1,10 @@ + #!/bin/sh + ++set -e ++ + # + # (c) Copyright Rick Richardson 2008 +-# ++# This version has been modified by Debian + + # + # PLEASE don't remove the copyright statements. They should +@@ -12,6 +14,13 @@ + VERSION='$Id: getweb.in,v 1.114 2015/02/12 00:22:02 rick Exp $' + + WGETOPTS="--passive-ftp -q" ++ARM2HPDL="/usr/bin/arm2hpdl" ++ ++if [ $(id -ru) -ne 0 ]; then ++ echo "You need to be root" ++ exit 1 ++fi ++ + + usage() { + cat </dev/null` ++WGET=`which wget` + if [ "$SYSTEM" = Darwin -a "$WGET" = "" ] + then + WGETOPTS= +@@ -117,6 +124,20 @@ then + } + fi + ++putfw() { ++ inputname=$1 ++ outputname=$2 ++ $ARM2HPDL $inputname > /usr/share/foo2zjs/firmware/$outputname ++ rm $inputname ++} ++ ++puticm() { ++ drivername=$1 ++ icmfolder=/usr/share/"$drivername"/icm/ ++ [ -d $icmfolder ] || mkdir -p $icmfolder ++ mv *.icm $icmfolder ++} ++ + # + # Download a .EXE file from the web, unzip it, and extract the + # files we want +@@ -163,6 +184,7 @@ getone() { + #lj1488en.exe \ + #sihp1000.img + copyright "(c) Copyright Hewlett-Packard 2001" ++ putfw sihp1000.img sihp1000.dl + ;; + lj1005|1005) + gettgz \ +@@ -178,12 +200,14 @@ getone() { + http://foo2zjs.rkkda.com/firmware sihpP1005.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" ++ putfw sihp1005.img sihp1005.dl + ;; + lj1018|1018) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihp1018.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2005" ++ putfw sihp1018.img sihp1018.dl + ;; + lj1020|1020) + # http://ftp.hp.com/pub/softlib/software8/COL14041/lj-39322-2/hp_LJ_1020-1022_Full_Solution.exe +@@ -191,24 +215,28 @@ getone() { + http://foo2zjs.rkkda.com/firmware sihp1020.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2005" ++ putfw sihp1020.img sihp1020.dl + ;; + [pP]100[57]) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihpP1005.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" ++ putfw sihpP1005.img sihpP1005.dl + ;; + [pP]100[68]) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihpP1006.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" ++ putfw sihpP1006.img sihpP1006.dl + ;; + [pP]1505) + gettgz \ + http://foo2zjs.rkkda.com/firmware sihpP1505.tar.gz \ + "" + copyright "(c) Copyright Hewlett-Packard 2009" ++ putfw sihpP1505.img sihpP1505.dl + ;; + 2200dl|2200) + if true; then +@@ -221,6 +249,7 @@ getone() { + "*.icm" + fi + copyright "(c) Copyright Minolta-QMS 1999" ++ puticm foo2zjs + ;; + 2300dl|2300) + if true; then +@@ -236,6 +265,7 @@ getone() { + http://foo2zjs.rkkda.com/icm km2430.tar.gz \ + "" + copyright "(c) Copyright Minolta-QMS 2001" ++ puticm foo2zjs + ;; + 2300dl_fw) + # 2300DL firmware upgrade to v2.55 +@@ -264,12 +294,14 @@ getone() { + done + fi + copyright "(c) Copyright Minolta-QMS 1998" ++ puticm foo2zjs + ;; + 2430) + gettgz \ + http://foo2zjs.rkkda.com/icm km2430.tar.gz \ + "" + copyright "(c) Copyright Konica Minolta 2003" ++ puticm foo2zjs + ;; + 2530|2490|6115|2480|1600w|1680|1690|4690|110|6121) + gettgz \ +@@ -281,6 +313,7 @@ getone() { + http://foo2lava.rkkda.com/icm km-1600.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2009. All Rights Reserved" ++ puticm foo2lava + ;; + 1500) + gettgz \ +@@ -292,12 +325,14 @@ getone() { + "" + copyright "(c) Copyright Hewlett-Packard 2003" + copyright "(c) Copyright Rick Richardson 2006. All Rights Reserved" ++ puticm foo2oak + ;; + 1025) + gettgz \ + http://foo2zjs.rkkda.com/icm hp-cp1025.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2010. All Rights Reserved" ++ puticm foo2zjs + ;; + 1215|1600|2600*) + gettgz \ +@@ -312,6 +347,7 @@ getone() { + http://foo2hp.rkkda.com/icm hp1215.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2008. All Rights Reserved" ++ puticm foo2hp + ;; + 300|310|315|325|360|365|2160|3160|3175|3185|6110) + gettgz \ +@@ -322,6 +358,7 @@ getone() { + http://foo2qpdl.rkkda.com/icm samclp315.tar.gz \ + "" + copyright "(c) Copyright Rick Richardson 2008. All Rights Reserved" ++ puticm foo2qpdl + ;; + 600|610) + ;; +@@ -331,6 +368,7 @@ getone() { + http://foo2slx.rkkda.com/icm lexc500.tar.gz \ + "" + copyright "(c) Copyright Lexmark 2006" ++ puticm foo2slx + ;; + + oki) +@@ -346,48 +384,56 @@ getone() { + mv "$base.ICM" "$base.icm" + done + copyright "(c) Copyright Okidata 2005, 2006" ++ puticm foo2hiperc + ;; + 301) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic301.tar.gz \ + "" + copyright "(c) Copyright Okidata 2012" ++ puticm foo2hiperc + ;; + c310) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic310.tar.gz \ + "" + copyright "(c) Copyright Okidata 2010" ++ puticm foo2hiperc + ;; + c511) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic511.tar.gz \ + "" + copyright "(c) Copyright Okidata 2012" ++ puticm foo2hiperc + ;; + c810) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic810.tar.gz \ + "" + copyright "(c) Copyright Okidata 2012" ++ puticm foo2hiperc + ;; + 3100|3200|5100|5150|5200|5250) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic3200.tar.gz \ + "" + copyright "(c) Copyright Okidata 2005" ++ puticm foo2hiperc + ;; + 3300|3400|3530) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic3400.tar.gz \ + "" + copyright "(c) Copyright Okidata 2006" ++ puticm foo2hiperc + ;; + 5500|5600|5800|160) + gettgz \ + http://foo2hiperc.rkkda.com/icm okic5600.tar.gz \ + "" + copyright "(c) Copyright Okidata 2006" ++ puticm foo2hiperc + ;; + + xPPD) +@@ -443,23 +489,6 @@ getone() { + # | sed -e 's/\(^\*NickName.*\)"/\1 (foo2zjs recommended)"/' + done + ;; +- update) +- url=${URLZJS} +- file=foo2zjs.tar.gz +- wget $WGETOPTS -O $file $url/$file || +- error "Couldn't download $url/$exefile" +- mv getweb getweb.old +- HERE=`pwd` +- cd .. +- tar zxf $HERE/$file +- cd $HERE +- echo "The tarball is extracted and the current directory is up to date." +- echo -e "Remove the tarball (y/n)? \c" +- read ans +- if [ "$ans" = y ]; then +- rm -f $file +- fi +- ;; + "") + usage + ;; +@@ -474,6 +503,10 @@ if [ $# = 0 ]; then + usage + fi + ++OLDPWD=`pwd` ++NEWPWD=`mktemp --tmpdir --directory foo2zjs.XXXXXX` ++cd "$NEWPWD" ++ + for i in $* + do + case "$1" in +@@ -518,3 +551,6 @@ do + ;; + esac + done ++ ++cd "$OLDPWD" ++rmdir "$NEWPWD" diff --git a/patches/0012-Use-the-same-firmware-folder-for-all-HP-LJ-printers.patch b/patches/0012-Use-the-same-firmware-folder-for-all-HP-LJ-printers.patch new file mode 100644 index 0000000..47678a7 --- /dev/null +++ b/patches/0012-Use-the-same-firmware-folder-for-all-HP-LJ-printers.patch @@ -0,0 +1,97 @@ +From bf56273038b0b06e6d1252914690e481606da7e4 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:55 +0200 +Subject: Use the same firmware folder for all HP LJ printers + +--- + hplj1000 | 6 ------ + hplj10xx.conf | 10 +++++----- + 2 files changed, 5 insertions(+), 11 deletions(-) + +diff --git a/hplj1000 b/hplj1000 +index bb87a79..2f22631 100755 +--- a/hplj1000 ++++ b/hplj1000 +@@ -90,37 +90,31 @@ case "$0" in + MODEL=P1005; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3d17 #Model +- FWDIR=/usr/share/foo2xqx/firmware + ;; + *P1006) + MODEL=P1006; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3e17 #Model +- FWDIR=/usr/share/foo2xqx/firmware + ;; + *P1007) + MODEL=P1007; FWMODEL=P1005 # Alias + USB1=0x03f0 #Vendor + USB2=0x4817 #Model +- FWDIR=/usr/share/foo2xqx/firmware + ;; + *P1008) + MODEL=P1008; FWMODEL=P1006 # Alias + USB1=0x03f0 #Vendor + USB2=0x4917 #Model +- FWDIR=/usr/share/foo2xqx/firmware + ;; + *P1505) + MODEL=P1505; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x3f17 #Model +- FWDIR=/usr/share/foo2xqx/firmware + ;; + *P1505n) + MODEL=P1505n; FWMODEL=$MODEL + USB1=0x03f0 #Vendor + USB2=0x4017 #Model +- FWDIR=/usr/share/foo2xqx/firmware + ;; + *1000) + MODEL=1000; FWMODEL=$MODEL +diff --git a/hplj10xx.conf b/hplj10xx.conf +index a2083bb..fe32eea 100644 +--- a/hplj10xx.conf ++++ b/hplj10xx.conf +@@ -15,35 +15,35 @@ + attach 100 { + match "vendor" "0x03f0"; + match "product" "0x3d17"; +- action "cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/$device-name"; ++ action "cat /lib/firmware/hp/sihpP1005.dl > /dev/$device-name"; + }; + + # Firmware download HP LaserJet P1006 printer + attach 100 { + match "vendor" "0x03f0"; + match "product" "0x3e17"; +- action "cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/$device-name"; ++ action "cat /lib/firmware/hp/sihpP1006.dl > /dev/$device-name"; + }; + + # Firmware download HP LaserJet P1007 printer + attach 100 { + match "vendor" "0x03f0"; + match "product" "0x4817"; +- action "cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/$device-name"; ++ action "cat /lib/firmware/hp/sihpP1005.dl > /dev/$device-name"; + }; + + # Firmware download HP LaserJet P1008 printer + attach 100 { + match "vendor" "0x03f0"; + match "product" "0x4917"; +- action "cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/$device-name"; ++ action "cat /lib/firmware/hp/sihpP1006.dl > /dev/$device-name"; + }; + + # Firmware download HP LaserJet P1505 printer + attach 100 { + match "vendor" "0x03f0"; + match "product" "0x3f17"; +- action "cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/$device-name"; ++ action "cat /lib/firmware/hp/sihpP1505.dl > /dev/$device-name"; + }; + + # Firmware download HP LaserJet 1000 printer diff --git a/patches/0013-Firmware-directory-is-lib-firmware-hp-Closes-517957.patch b/patches/0013-Firmware-directory-is-lib-firmware-hp-Closes-517957.patch new file mode 100644 index 0000000..c31c328 --- /dev/null +++ b/patches/0013-Firmware-directory-is-lib-firmware-hp-Closes-517957.patch @@ -0,0 +1,73 @@ +From e71283f80209e670447dc1c84dab37906781d1da Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:56 +0200 +Subject: Firmware directory is /lib/firmware/hp/ (Closes: #517957) + +--- + arm2hpdl.1in | 2 +- + getweb.in | 2 +- + hplj1000 | 2 +- + usb_printerid.1in | 4 ++-- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/arm2hpdl.1in b/arm2hpdl.1in +index 213d21b..33e6ccd 100644 +--- a/arm2hpdl.1in ++++ b/arm2hpdl.1in +@@ -31,7 +31,7 @@ $ arm2hpdl sihp1005.img > sihp1005.dl + + .SH FILES + .BR /usr/bin/arm2hpdl, +-.BR /usr/share/foo2*/firmware/ ++.BR /lib/firmware/hp/* + .SH SEE ALSO + .BR foo2zjs (1) + .SH "AUTHOR" +diff --git a/getweb.in b/getweb.in +index 11f2aa6..3322de6 100755 +--- a/getweb.in ++++ b/getweb.in +@@ -127,7 +127,7 @@ fi + putfw() { + inputname=$1 + outputname=$2 +- $ARM2HPDL $inputname > /usr/share/foo2zjs/firmware/$outputname ++ $ARM2HPDL $inputname > /lib/firmware/hp/$outputname + rm $inputname + } + +diff --git a/hplj1000 b/hplj1000 +index 2f22631..21ca570 100755 +--- a/hplj1000 ++++ b/hplj1000 +@@ -48,7 +48,7 @@ USB_BACKEND=/usr/lib/cups/backend/usb + # + # Directory to find downloadable HP firmware files sihpMMMM.dl + # +-FWDIR=/usr/share/foo2zjs/firmware ++FWDIR=/lib/firmware/hp + + # + # Program used to determine USB printer id information +diff --git a/usb_printerid.1in b/usb_printerid.1in +index 0454ef6..34817e4 100644 +--- a/usb_printerid.1in ++++ b/usb_printerid.1in +@@ -26,7 +26,7 @@ GET_DEVICE_ID string: + MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS:PRINTER;\e + DES:HP LaserJet 1020; + +-# cp /usr/share/foo2zjs/firmware/sihp1020.dl /dev/usb/lp0 ++# cp /lib/firmware/hp/sihp1020.dl /dev/usb/lp0 + + # usb_printerid /dev/usb/lp0 + GET_DEVICE_ID string: +@@ -37,7 +37,7 @@ DES:HP LaserJet 1020;FWVER:20050309; + + .SH FILES + .BR /usr/bin/usb_printerid, +-.BR /usr/share/foo2*/firmware/* ++.BR /lib/firmware/hp/* + .SH SEE ALSO + .BR arm2hpdl (1) + .SH "AUTHOR" diff --git a/patches/0014-Don-t-delete-printer-profile-in-clean-target.patch b/patches/0014-Don-t-delete-printer-profile-in-clean-target.patch new file mode 100644 index 0000000..e4af184 --- /dev/null +++ b/patches/0014-Don-t-delete-printer-profile-in-clean-target.patch @@ -0,0 +1,312 @@ +From 7ceb24ed04d1d7405f45b8df0f156d337d74a008 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:57 +0200 +Subject: Don't delete printer-profile in clean target + +--- + printer-profile.in | 296 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 296 insertions(+) + create mode 100644 printer-profile.in + +diff --git a/printer-profile.in b/printer-profile.in +new file mode 100644 +index 0000000..5363847 +--- /dev/null ++++ b/printer-profile.in +@@ -0,0 +1,296 @@ ++#!/bin/sh ++ ++PROGNAME="$0" ++ ++usage() { ++ cat <&2 ++ exit 1 ++} ++ ++debug() { ++ if [ $DEBUG -ge $1 ]; then ++ echo "`basename $PROGNAME`: $2" >&2 ++ fi ++} ++ ++# ++# Execute a command as root ++# ++root() { ++ if [ -x /usr/bin/root ]; then ++ /usr/bin/root $@ ++ else ++ su -c "$*" ++ fi ++} ++ ++# ++# trap on error ++# ++trap "exit 1" ERR ++ ++# ++# Process the options ++# ++REMPRINT=amd ++REMSCAN=mac ++REMSCAN=none ++RGB=rgb ++PATCHES=196 #Per page! ++BPP=1 ++RES= ++DEBUG=0 ++while getopts "b:r:P:S:D:h?" opt ++do ++ case $opt in ++ b) BPP="$OPTARG";; ++ r) RES="$OPTARG";; ++ P) REMPRINT="$OPTARG";; ++ S) REMSCAN="$OPTARG";; ++ D) DEBUG="$OPTARG";; ++ h|\?) usage;; ++ esac ++done ++shift `expr $OPTIND - 1` ++ ++# ++# Main Program ++# ++if [ $# -lt 2 ]; then ++ usage ++fi ++ ++MANUF="$1" ++MODEL="$2" ++if [ $# -ge 3 ]; then ++ RGB="$3" ++fi ++if [ $# -ge 4 ]; then ++ PATCHES="$4" ++fi ++INK="$5" ++ ++BPP_b="-b$BPP" ++RES_r= ++if [ "$RES" != "" ]; then ++ RES_r="-r$RES" ++fi ++ ++case "$MANUF" in ++km) ++ MANUF=km ++ case "$MODEL" in ++ *1600*) ++ FOO=foo2lava ++ WRAPPER="foo2lava-wrapper $RES_r -z2 -c -C10 -Gnone.icm" ++ OUT="root cp xxx.prn /dev/usb/lp1" ++ ;; ++ *2530*) ++ FOO=foo2lava ++ WRAPPER="foo2lava-wrapper $RES_r -z0 -c -C10 -Gnone.icm" ++ OUT="nc 192.168.1.13 9100 < xxx.prn" ++ ;; ++ *2300*) ++ FOO=foo2zjs ++ WRAPPER="foo2zjs-wrapper $RES_r -c -C10 -Gnone.icm" ++ OUT="nc 192.168.1.10 9100 < xxx.prn" ++ ;; ++ *) ++ usage ++ ;; ++ esac ++ ;; ++sam*) ++ MANUF=sam ++ FOO=foo2qpdl ++ case "$MODEL" in ++ *300*) ++ WRAPPER="foo2qpdl-wrapper $RES_r -z0 -c -C10 -Gnone.icm" ++ OUT="nc 192.168.1.11 9100 < xxx.prn" ++ ;; ++ *315*) ++ WRAPPER="foo2qpdl-wrapper $RES_r -z2 -c -C10 -Gnone.icm" ++ OUT="root cp xxx.prn /dev/usb/lp1" ++ ;; ++ *) ++ usage ++ ;; ++ esac ++ ;; ++hp*) ++ MANUF=hp ++ FOO=foo2hp ++ case "$MODEL" in ++ *2600*) ++ WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z0 -c -C10 -Gnone.icm" ++ OUT="nc 192.168.1.12 9100 < xxx.prn" ++ ;; ++ *cp1215*) ++ WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z1 -c -C10 -Gnone.icm" ++ OUT="root cp xxx.prn /dev/usb/lp2" ++ ;; ++ *) ++ usage ++ ;; ++ esac ++ ;; ++*) ++ usage ++ ;; ++esac ++ ++mrp="$MANUF-$MODEL-$RGB-$PATCHES" ++if [ "$INK" != "" ]; then ++ mrp="$mrp-ink$INK" ++fi ++if [ "$BPP" != "" ]; then ++ mrp="$mrp-bpp$BPP" ++fi ++if [ "$RES" != "" ]; then ++ mrp="$mrp-$RES" ++fi ++echo "$mrp" ++ ++ ++BETABIN=~/src/Argyll_V1.1.0_Beta/bin ++if [ ! -x $BETABIN/printtarg ]; then ++ error "No beta bin in $BETABIN!" ++fi ++ ++targen_opts= ++case "$RGB" in ++rgb|RGB) targen_opts="$targen_opts -d3";; ++cmyk|CMYK) targen_opts="$targen_opts -d4";; ++*) error "Parm2: Must be rgb or cmyk";; ++esac ++ ++targen_opts="$targen_opts -f$PATCHES" ++ ++if [ "$INK" != "" ]; then ++ targen_opts="$targen_opts -l$INK" ++fi ++ ++echo ++echo "******************************** targen ********************************" ++echo "targen $targen_opts $mrp" ++if ! targen $targen_opts $mrp >$mrp.err1; then ++ cat $mrp.err1 ++ exit 1 ++fi ++ ++echo ++echo "******************************* printtarg ******************************" ++echo "$BETABIN/printtarg -h -v -iCM -p Letter -R0 $mrp" ++$BETABIN/printtarg -h -v -iCM -p Letter -R0 $mrp ++ ++evince $mrp.ps & ++ ++echo ++echo "******************************* print it *******************************" ++echo "$WRAPPER" ++case "$REMPRINT" in ++''|none) ++ $WRAPPER <$mrp.ps >$mrp.prn ++ ;; ++*) ++ ssh $REMPRINT "$WRAPPER" <$mrp.ps >$mrp.prn ++ ;; ++esac ++ls -l $mrp.prn ++echo -n "Print it? [y|n]? " ++read yes ++case "$yes" in ++y|Y) ++ cp $mrp.prn xxx.prn ++ echo " $OUT" ++ eval $OUT ++ rm -f xxx.prn ++esac ++ ++echo ++echo "******************************* chartread ******************************" ++case "$REMSCAN" in ++''|none) ++ echo "$BETABIN/chartread $mrp" ++ $BETABIN/chartread $mrp ++ ;; ++*) ++ echo "scp $mrp.ti2 mac:" ++ scp $mrp.ti2 mac: ++ echo "$BETABIN/chartread $mrp" ++ echo -n "Scanned on remote system $REMSCAN? [y/n]? " ++ read yes ++ case "$yes" in ++ y|Y) ++ scp $REMSCAN:$mrp.ti3 . ++ ;; ++ esac ++ ;; ++esac ++ ++echo ++echo "******************************** colprof *******************************" ++case $RGB in ++rgb) ++ echo "colprof -v -D\"$mrp\" -qm -cmt -dpp $mrp" ++ colprof -v -D"$mrp" -qm -cmt -dpp $mrp ++ ;; ++cymk) ++ echo "colprof -v -D\"$mrp\" -qm -cmt -dpp -kr $mrp" ++ colprof -v -D"$mrp" -qm -cmt -dpp -kr $mrp ++ ;; ++esac ++ ++root cp $mrp.icc /usr/share/$FOO/icm/testing.icm ++echo "/usr/share/$FOO/icm/testing.icm created!" ++ls -l /usr/share/$FOO/icm/ diff --git a/patches/0015-Fixes-errors-and-hyphen-as-minus-in-manpages.patch b/patches/0015-Fixes-errors-and-hyphen-as-minus-in-manpages.patch new file mode 100644 index 0000000..c06f2f3 --- /dev/null +++ b/patches/0015-Fixes-errors-and-hyphen-as-minus-in-manpages.patch @@ -0,0 +1,1552 @@ +From 6e6584878be3ec9e18e78f77d97632634568b94e Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:58 +0200 +Subject: Fixes errors and hyphen-as-minus in manpages + +--- + foo2hbpl2-wrapper.1in | 18 +++++++++--------- + foo2hbpl2.1in | 18 +++++++++--------- + foo2hiperc-wrapper.1in | 18 +++++++++--------- + foo2hiperc.1in | 26 +++++++++++++------------- + foo2hp.1in | 18 +++++++++--------- + foo2hp2600-wrapper.1in | 18 +++++++++--------- + foo2lava-wrapper.1in | 18 +++++++++--------- + foo2lava.1in | 18 +++++++++--------- + foo2oak-wrapper.1in | 18 +++++++++--------- + foo2oak.1in | 18 +++++++++--------- + foo2qpdl-wrapper.1in | 22 +++++++++++----------- + foo2qpdl.1in | 20 ++++++++++---------- + foo2slx-wrapper.1in | 16 ++++++++-------- + foo2slx.1in | 18 +++++++++--------- + foo2xqx-wrapper.1in | 12 ++++++------ + foo2xqx.1in | 10 +++++----- + foo2zjs-wrapper.1in | 28 +++++++++++++++------------- + foo2zjs.1in | 26 ++++++++++++++------------ + gipddecode.1in | 2 +- + hbpldecode.1in | 14 +++++++------- + hipercdecode.1in | 4 ++-- + icc2ps/foo2zjs-icc2ps.1in | 26 +++++++++++--------------- + lavadecode.1in | 4 ++-- + macros.man | 22 +++++++++++----------- + oakdecode.1in | 2 +- + opldecode.1in | 12 ++++++------ + osx-hotplug/osx-hplj-hotplug.1in | 2 +- + printer-profile.1in | 10 +++++----- + qpdldecode.1in | 8 ++++---- + slxdecode.1in | 2 +- + xqxdecode.1in | 4 ++-- + zjsdecode.1in | 2 +- + 32 files changed, 227 insertions(+), 227 deletions(-) + +diff --git a/foo2hbpl2-wrapper.1in b/foo2hbpl2-wrapper.1in +index 0fd1570..ba55b5c 100644 +--- a/foo2hbpl2-wrapper.1in ++++ b/foo2hbpl2-wrapper.1in +@@ -44,7 +44,7 @@ Print in color (else monochrome). + Color correction mode [0]. + .TS + n l . +-10 ICM color profile (using -G *.icm file) ++10 ICM color profile (using \-G *.icm file) + .TE + .TP + .BI \-d\0 duplex +@@ -123,9 +123,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2hbpl2\fP +@@ -144,13 +144,13 @@ The defaults should work on the 2200DL and 2300DL, and have not + been tested on any other printers. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the ZjStream. ++Send the logical clipping values from \-u/-l in the ZjStream. + \fBfoo2hbpl2-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -176,7 +176,7 @@ These are the options used to control the quality of color output. + Color correction is currently a WORK IN PROGRESS. + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -221,7 +221,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2hbpl2-wrapper testpage.ps > testpage.prn + hbpl2decode < testpage.prn +-lpr -P raw testpage.prn ++lpr \-P raw testpage.prn + .fi + .RE + .P +@@ -229,7 +229,7 @@ Create a color ZjStream stream from a Postscript document: + + .RS + .nf +-foo2hbpl2-wrapper -c testpage.ps > testpage.prn ++foo2hbpl2-wrapper \-c testpage.ps > testpage.prn + .fi + .RE + +diff --git a/foo2hbpl2.1in b/foo2hbpl2.1in +index 0d9590a..86e4de7 100644 +--- a/foo2hbpl2.1in ++++ b/foo2hbpl2.1in +@@ -130,7 +130,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the ZjStream [3]. ++Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -178,10 +178,10 @@ Create a black and white ZJS stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2hbpl2 \-r1200x600 \-g10200x6600 \-p1 >testpage.zm + .fi + .RE + .P +@@ -189,10 +189,10 @@ Create a color ZJS stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zc ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2hbpl2 \-r1200x600 \-g10200x6600 \-p1 >testpage.zc + .fi + .RE + +diff --git a/foo2hiperc-wrapper.1in b/foo2hiperc-wrapper.1in +index 3601f56..0dca96b 100644 +--- a/foo2hiperc-wrapper.1in ++++ b/foo2hiperc-wrapper.1in +@@ -37,7 +37,7 @@ Print in color (else monochrome). + Color correction mode [0]. + .TS + n l . +-10 ICM color profile (using -G *.icm file) ++10 ICM color profile (using \-G *.icm file) + .TE + .TP + .BI \-d\0 duplex +@@ -66,7 +66,7 @@ Paper size code to send to printer [2]. + box; + | n l | n l. + 1 A4 2 letter +-3 legal - - ++3 legal \- \- + 5 A5 6 B5jis + 7 A6 8 env Monarch + 9 env DL 10 env C5 +@@ -100,9 +100,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2hiperc\fP +@@ -117,13 +117,13 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [varies with paper size]. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the HIPERC stream. ++Send the logical clipping values from \-u/-l in the HIPERC stream. + \fBfoo2hiperc-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -145,7 +145,7 @@ These are the options used to control the quality of color output. + Color correction is currently a WORK IN PROGRESS. + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -198,7 +198,7 @@ Create a color HIPERC stream from a Postscript document: + + .RS + .nf +-foo2hiperc-wrapper -c testpage.ps > testpage.hc ++foo2hiperc-wrapper \-c testpage.ps > testpage.hc + .fi + .RE + +diff --git a/foo2hiperc.1in b/foo2hiperc.1in +index 6496984..dca0143 100644 +--- a/foo2hiperc.1in ++++ b/foo2hiperc.1in +@@ -11,13 +11,13 @@ foo2hiperc \- Convert Ghostscript pbmraw or bitcmyk format into a + HIPERC printer stream + .SH SYNOPSIS + .B foo2hiperc +-.RI [ options "] <" pbmraw-file " >" hiperc-file ++.RI [ options "] <" pbmraw\-file " >" hiperc\-file + .sp 1 + .B foo2hiperc +-.RI [ options "] <" bitcmyk-file " >" hiperc-file ++.RI [ options "] <" bitcmyk\-file " >" hiperc\-file + .sp 1 + .B foo2hiperc +-.RI [ options "] <" pksmraw-file " >" hiperc-file ++.RI [ options "] <" pksmraw\-file " >" hiperc\-file + .SH DESCRIPTION + .B foo2hiperc + converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome +@@ -63,7 +63,7 @@ Paper code to send to printer [2]. + box; + | n l | n l. + 1 A4 2 letter +-3 legal - - ++3 legal \- \- + 5 A5 6 B5jis + 7 A6 8 env Monarch + 9 env DL 10 env C5 +@@ -108,7 +108,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the HIPERC stream [3]. ++Send logical clipping amounts implied by \-u/-l in the HIPERC stream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -147,10 +147,10 @@ Create a black and white HIPERC stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2hiperc \-r600x600 \-g5100x6600 \-p0 >testpage.zm + .fi + .RE + .P +@@ -158,10 +158,10 @@ Create a color HIPERC stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zc ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2hiperc \-r600x600 \-g5100x6600 \-p0 >testpage.zc + .fi + .RE + +diff --git a/foo2hp.1in b/foo2hp.1in +index d037311..f4e5e49 100644 +--- a/foo2hp.1in ++++ b/foo2hp.1in +@@ -123,7 +123,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the ZjStream [3]. ++Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -171,10 +171,10 @@ Create a black and white ZJS stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2hp \-r600x600 \-g5100x6600 \-p1 >testpage.zm + .fi + .RE + .P +@@ -182,10 +182,10 @@ Create a color ZJS stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zc ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2hp \-r600x600 \-g5100x6600 \-p1 >testpage.zc + .fi + .RE + +diff --git a/foo2hp2600-wrapper.1in b/foo2hp2600-wrapper.1in +index a71617d..26b69ae 100644 +--- a/foo2hp2600-wrapper.1in ++++ b/foo2hp2600-wrapper.1in +@@ -107,9 +107,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2hp\fP +@@ -128,13 +128,13 @@ The defaults should work on the 2200DL and 2300DL, and have not + been tested on any other printers. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the ZjStream. ++Send the logical clipping values from \-u/-l in the ZjStream. + \fBfoo2hp2600-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -147,7 +147,7 @@ l l. + .BI \-O\0 parm=val + Alignment of CMYK. \fIparm\fP is c, m, y, or k. + \fIval\fP is in rows. Multiple options are allowed. +-The default is "-Oc=0 -Om=0 -Oy=0 -Ok=0". ++The default is "\-Oc=0 \-Om=0 \-Oy=0 \-Ok=0". + .TP + .BI \-P + Do not send START_PLANE codes on monochrome output. May be +@@ -168,7 +168,7 @@ These are the options used to control the quality of color output. + Color correction is currently a WORK IN PROGRESS. + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -214,7 +214,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2hp2600-wrapper testpage.ps > testpage.zm + zjsdecode < testpage.zm +-lpr -P raw testpage.zm ++lpr \-P raw testpage.zm + .fi + .RE + .P +@@ -222,7 +222,7 @@ Create a color ZjStream stream from a Postscript document: + + .RS + .nf +-foo2hp2600-wrapper -c testpage.ps > testpage.zc ++foo2hp2600-wrapper \-c testpage.ps > testpage.zc + .fi + .RE + +diff --git a/foo2lava-wrapper.1in b/foo2lava-wrapper.1in +index f02d899..60629ea 100644 +--- a/foo2lava-wrapper.1in ++++ b/foo2lava-wrapper.1in +@@ -42,7 +42,7 @@ n l . + 1 Photos (using m2300w CRDs) + 2 Photos and text (using m2300w CRDs) + 3 Graphics and text (using m2300w CRDs) +-10 ICM color profile (using -G *.icm file) ++10 ICM color profile (using \-G *.icm file) + .TE + .TP + .BI \-d\0 duplex +@@ -108,9 +108,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2lava\fP +@@ -129,13 +129,13 @@ The defaults should work on the 2200DL and 2300DL, and have not + been tested on any other printers. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the LAVAFLOW stream. ++Send the logical clipping values from \-u/-l in the LAVAFLOW stream. + \fBfoo2lava-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -162,7 +162,7 @@ These are the options used to control the quality of color output. + Color correction is currently a WORK IN PROGRESS. + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -207,7 +207,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2lava-wrapper testpage.ps > testpage.zm + lavadecode < testpage.zm +-lpr -P raw testpage.zm ++lpr \-P raw testpage.zm + .fi + .RE + .P +@@ -215,7 +215,7 @@ Create a color LAVAFLOW stream from a Postscript document: + + .RS + .nf +-foo2lava-wrapper -c testpage.ps > testpage.zc ++foo2lava-wrapper \-c testpage.ps > testpage.zc + .fi + .RE + +diff --git a/foo2lava.1in b/foo2lava.1in +index 2328ae5..0b88544 100644 +--- a/foo2lava.1in ++++ b/foo2lava.1in +@@ -111,7 +111,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the LAVAFLOW stream [3]. ++Send logical clipping amounts implied by \-u/-l in the LAVAFLOW stream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -160,10 +160,10 @@ Create a black and white LAVAFLOW stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2lava \-r1200x600 \-g10200x6600 \-p1 >testpage.zm + .fi + .RE + .P +@@ -171,10 +171,10 @@ Create a color LAVAFLOW stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zc ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2lava \-r1200x600 \-g10200x6600 \-p1 >testpage.zc + .fi + .RE + +diff --git a/foo2oak-wrapper.1in b/foo2oak-wrapper.1in +index 435dae3..bbf1d23 100644 +--- a/foo2oak-wrapper.1in ++++ b/foo2oak-wrapper.1in +@@ -49,7 +49,7 @@ l l l + l n n. + _ + Media HP CLJ 1500 KM-1635 +- -z0 -z1 ++ \-z0 \-z1 + _ + autoselect 0 0 + plain 1 1 +@@ -110,9 +110,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2oak\fP +@@ -131,13 +131,13 @@ The defaults should work on the 2200DL and 2300DL, and have not + been tested on any other printers. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the OAKT stream. ++Send the logical clipping values from \-u/-l in the OAKT stream. + \fBfoo2oak-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -155,7 +155,7 @@ These are the options used to control the quality of color output. + Color correction is currently a WORK IN PROGRESS. + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -200,7 +200,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2oak-wrapper testpage.ps > testpage.oak + oakdecode < testpage.oak +-lpr -P raw testpage.oak ++lpr \-P raw testpage.oak + .fi + .RE + .P +@@ -208,7 +208,7 @@ Create a color OAKT stream from a Postscript document: + + .RS + .nf +-foo2oak-wrapper -c testpage.ps > testpage.oak ++foo2oak-wrapper \-c testpage.ps > testpage.oak + .fi + .RE + +diff --git a/foo2oak.1in b/foo2oak.1in +index 1a1c863..94b3ed6 100644 +--- a/foo2oak.1in ++++ b/foo2oak.1in +@@ -122,7 +122,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the OAKT stream [3]. ++Send logical clipping amounts implied by \-u/-l in the OAKT stream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -167,10 +167,10 @@ Create a black and white OAKT stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2oak \-r600x600 \-g5100x6600 \-p1 >testpage.oak + .fi + .RE + .P +@@ -178,10 +178,10 @@ Create a color OAKT stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2oak \-r600x600 \-g5100x6600 \-p1 >testpage.oak + .fi + .RE + +diff --git a/foo2qpdl-wrapper.1in b/foo2qpdl-wrapper.1in +index 7e476c1..4524372 100644 +--- a/foo2qpdl-wrapper.1in ++++ b/foo2qpdl-wrapper.1in +@@ -39,7 +39,7 @@ Color correction mode [0]. + .TS + n l . + 1 CRD +-10 ICM color profile (using -G *.icm file) ++10 ICM color profile (using \-G *.icm file) + .TE + .TP + .BI \-d\0 duplex +@@ -112,9 +112,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2qpdl\fP +@@ -129,13 +129,13 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [varies with paper size]. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the QPDL stream. ++Send the logical clipping values from \-u/-l in the QPDL stream. + \fBfoo2qpdl-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -164,11 +164,11 @@ Color Adjust. \fIparm\fP is b, c, s, cr, mg, yb for + brightness, contrast, saturation, cyan-red balance, magenta-green balance, + and yellow-blue balance. + \fIval\fP is 0 to 100. Multiple options are allowed. +-The default is "-ab=50 -ac=50 -as=50 -acr=50 -amg=50 -ayb=50". +-This only works when the -z3 (e.g. CLP-365) model is set! ++The default is "\-ab=50 \-ac=50 \-as=50 \-acr=50 \-amg=50 \-ayb=50". ++This only works when the \-z3 (e.g. CLP\-365) model is set! + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -213,7 +213,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2qpdl-wrapper testpage.ps > testpage.zm + qpdldecode < testpage.zm +-lpr -P raw testpage.zm ++lpr \-P raw testpage.zm + .fi + .RE + .P +@@ -221,7 +221,7 @@ Create a color QPDL stream from a Postscript document: + + .RS + .nf +-foo2qpdl-wrapper -c testpage.ps > testpage.zc ++foo2qpdl-wrapper \-c testpage.ps > testpage.zc + .fi + .RE + +diff --git a/foo2qpdl.1in b/foo2qpdl.1in +index bdc209d..780ee0d 100644 +--- a/foo2qpdl.1in ++++ b/foo2qpdl.1in +@@ -114,7 +114,7 @@ for a particular printer. + Color Adjust: brightness, contrast, saturation, cyan-red balance, + magenta-green balance, and yellow-blue balance from 0 to 100. + The default is 50,50,50,50,50,50. +-This only works when the -z3 (e.g. CLP-365) model is set! ++This only works when the \-z3 (e.g. CLP\-365) model is set! + .TP + .BI \-u\0 xoff x yoff + Set the offset of the start of the printable region from the +@@ -125,7 +125,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the QPDL stream [3]. ++Send logical clipping amounts implied by \-u/-l in the QPDL stream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -172,10 +172,10 @@ Create a black and white QPDL stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2qpdl -r1200x600 -g10200x6600 -p0 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2qpdl \-r1200x600 \-g10200x6600 \-p0 >testpage.zm + .fi + .RE + .P +@@ -183,10 +183,10 @@ Create a color QPDL stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2qpdl -r1200x600 -g10200x6600 -p0 >testpage.zc ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2qpdl \-r1200x600 \-g10200x6600 \-p0 >testpage.zc + .fi + .RE + +diff --git a/foo2slx-wrapper.1in b/foo2slx-wrapper.1in +index 966ec6f..81326a1 100644 +--- a/foo2slx-wrapper.1in ++++ b/foo2slx-wrapper.1in +@@ -83,9 +83,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2slx\fP +@@ -104,13 +104,13 @@ The defaults should work on the 2200DL and 2300DL, and have not + been tested on any other printers. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the ZjStream. ++Send the logical clipping values from \-u/-l in the ZjStream. + \fBfoo2slx-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -124,7 +124,7 @@ These are the options used to control the quality of color output. + Color correction is currently a WORK IN PROGRESS. + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -169,7 +169,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2slx-wrapper testpage.ps > testpage.zm + slxdecode < testpage.zm +-lpr -P raw testpage.zm ++lpr \-P raw testpage.zm + .fi + .RE + .P +@@ -177,7 +177,7 @@ Create a color ZjStream stream from a Postscript document: + + .RS + .nf +-foo2slx-wrapper -c testpage.ps > testpage.zc ++foo2slx-wrapper \-c testpage.ps > testpage.zc + .fi + .RE + +diff --git a/foo2slx.1in b/foo2slx.1in +index 5a431e0..8eab873 100644 +--- a/foo2slx.1in ++++ b/foo2slx.1in +@@ -93,7 +93,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the ZjStream [3]. ++Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -130,10 +130,10 @@ Create a black and white SLX stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2slx \-r1200x600 \-g10200x6600 \-p1 >testpage.zm + .fi + .RE + .P +@@ -141,10 +141,10 @@ Create a color SLX stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zc ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2slx \-r1200x600 \-g10200x6600 \-p1 >testpage.zc + .fi + .RE + +diff --git a/foo2xqx-wrapper.1in b/foo2xqx-wrapper.1in +index bef7ba5..382a17a 100644 +--- a/foo2xqx-wrapper.1in ++++ b/foo2xqx-wrapper.1in +@@ -100,9 +100,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2xqx\fP +@@ -121,13 +121,13 @@ The defaults should work on the 2200DL and 2300DL, and have not + been tested on any other printers. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the ZjStream. ++Send the logical clipping values from \-u/-l in the ZjStream. + \fBfoo2xqx-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -150,7 +150,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2xqx-wrapper testpage.ps > testpage.xqx + xqxdecode < testpage.xqx +-lpr -P raw testpage.xqx ++lpr \-P raw testpage.xqx + .fi + .RE + +diff --git a/foo2xqx.1in b/foo2xqx.1in +index 6c60c89..da521fb 100644 +--- a/foo2xqx.1in ++++ b/foo2xqx.1in +@@ -110,7 +110,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the ZjStream [3]. ++Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -146,10 +146,10 @@ Create a black and white XQX stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2xqx -r1200x600 -g10200x6600 -p1 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2xqx \-r1200x600 \-g10200x6600 \-p1 >testpage.zm + .fi + .RE + +diff --git a/foo2zjs-wrapper.1in b/foo2zjs-wrapper.1in +index 1648bf7..16998b1 100644 +--- a/foo2zjs-wrapper.1in ++++ b/foo2zjs-wrapper.1in +@@ -38,7 +38,7 @@ n l . + 1 Photos (using m2300w CRDs) + 2 Photos and text (using m2300w CRDs) + 3 Graphics and text (using m2300w CRDs) +-10 ICM color profile (using -G *.icm file) ++10 ICM color profile (using \-G *.icm file) + .TE + .TP + .BI \-d\0 duplex +@@ -55,7 +55,7 @@ l r r r r r. + _ + Media 2300DL 2200DL HP 1018 HP P1102 HP + \^ HP 1005 HP 1020 HP P1606 CP1025 +-\^ -z0 -z0 -z1 -z2 -z3 ++\^ \-z0 \-z0 \-z1 \-z2 \-z3 + _ + standard 1 1 1 1 1 + transparency 2 2 2 2 2 +@@ -84,7 +84,7 @@ l r r r r. + _ + Paper MC 2300DL HP 1018 HP P1102 HP + \^ HP 1005 HP 1020 HP P1606 CP1025 +-\^ -z0 -z1 -z2 -z3 ++\^ \-z0 \-z1 \-z2 \-z3 + _ + letter 1 1 1 1 + legal 5 5 5 5 +@@ -100,9 +100,11 @@ env Monarch 37 37 37 37 + postcard (japan) na 260 43 43 + B5iso na 259 na na + A6 na 262 70 70 +-double postcard rotated na 261 82 82 ++double postcard na 261 82 82 ++ rotated \^ \^ \^ \^ + 16k 197x273 na 257 257 257 +-fanfold german legal na 258 258 258 ++fanfold german na 258 258 258 ++ legal \^ \^ \^ \^ + 16k 184x260 na na 263 263 + 16k 195x270 na na 264 264 + photo 4x6 na na na 268 +@@ -137,9 +139,9 @@ Print in N-up. Requires the \fBpsutils\fP package. + Orientation used for N-up. + .TS + l l l. +-Portrait -op (normal) +-Landscape -ol (rotated 90 degrees anticlockwise) +-Seascape -os (rotated 90 degrees clockwise) ++Portrait \-op (normal) ++Landscape \-ol (rotated 90 degrees anticlockwise) ++Seascape \-os (rotated 90 degrees clockwise) + .TE + .SS Printer Tweaking Options + These are the options used to customize the operation of \fBfoo2zjs\fP +@@ -158,13 +160,13 @@ The defaults should work on the 2200DL and 2300DL, and have not + been tested on any other printers. + .TP + .BI \-L\0 mask +-Send the logical clipping values from -u/-l in the ZjStream. ++Send the logical clipping values from \-u/-l in the ZjStream. + \fBfoo2zjs-wrapper\fP always runs Ghostscript with the ideal page dimensions, + so that the scale of the image is correct, + regardless whether or not the printer has unprintable regions. + This option is used to move the position of the clipped image + back to where it belongs on the page. The default is to send +-the amount which was clipped by -u and -l, and should be ++the amount which was clipped by \-u and \-l, and should be + good in most cases. + .TS + l l. +@@ -200,7 +202,7 @@ These are the options used to control the quality of color output. + Color correction is currently a WORK IN PROGRESS. + .TP + .BI \-g\0 gsopts +-Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, ++Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, + etc. This option may appear more than once. + .TP + .BI \-G\0 profile.icm +@@ -245,7 +247,7 @@ examine it, and then print it using a RAW print queue: + .nf + foo2zjs-wrapper testpage.ps > testpage.zm + zjsdecode < testpage.zm +-lpr -P raw testpage.zm ++lpr \-P raw testpage.zm + .fi + .RE + .P +@@ -253,7 +255,7 @@ Create a color ZjStream stream from a Postscript document: + + .RS + .nf +-foo2zjs-wrapper -c testpage.ps > testpage.zc ++foo2zjs-wrapper \-c testpage.ps > testpage.zc + .fi + .RE + +diff --git a/foo2zjs.1in b/foo2zjs.1in +index a26113c..feb973b 100644 +--- a/foo2zjs.1in ++++ b/foo2zjs.1in +@@ -50,7 +50,7 @@ l r r r r r. + _ + Media 2300DL 2200DL HP 1018 HP P1102 HP + \^ HP 1005 HP 1020 HP P1606 CP1025 +-\^ -z0 -z0 -z1 -z2 -z3 ++\^ \-z0 \-z0 \-z1 \-z2 \-z3 + _ + standard 1 1 1 1 1 + transparency 2 2 2 2 2 +@@ -79,7 +79,7 @@ l r r r r. + _ + Paper MC 2300DL HP 1018 HP P1102 HP + \^ HP 1005 HP 1020 HP P1606 CP1025 +-\^ -z0 -z1 -z2 -z3 ++\^ \-z0 \-z1 \-z2 \-z3 + _ + letter 1 1 1 1 + legal 5 5 5 5 +@@ -95,9 +95,11 @@ env Monarch 37 37 37 37 + postcard (japan) na 260 43 43 + B5iso na 259 na na + A6 na 262 70 70 +-double postcard rotated na 261 82 82 ++double postcard na 261 82 82 ++ rotated \^ \^ \^ \^ + 16k 197x273 na 257 257 257 + fanfold german legal na 258 258 258 ++ legal \^ \^ \^ \^ + 16k 184x260 na na 263 263 + 16k 195x270 na na 264 264 + photo 4x6 na na na 268 +@@ -143,7 +145,7 @@ Set the offset of the end of the printable region from the + lower right corner, in pixels [0x0]. + .TP + .BI \-L\0 mask +-Send logical clipping amounts implied by -u/-l in the ZjStream [3]. ++Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. + .TS + l l. + 0 don't send any logical clipping amounts +@@ -201,10 +203,10 @@ Create a black and white ZJS stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ +- -sOutputFile=- - < testpage.ps \ +-| foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zm ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2zjs \-r1200x600 \-g10200x6600 \-p1 >testpage.zm + .fi + .RE + .P +@@ -212,10 +214,10 @@ Create a color ZJS stream: + + .RS + .nf +-gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ +- -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ +- -sOutputFile=- - < testpage.ps \ +-| foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zc ++gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ ++ \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ ++ \-sOutputFile=- \- < testpage.ps \ ++| foo2zjs \-r1200x600 \-g10200x6600 \-p1 >testpage.zc + .fi + .RE + +diff --git a/gipddecode.1in b/gipddecode.1in +index b802275..2b4ff71 100644 +--- a/gipddecode.1in ++++ b/gipddecode.1in +@@ -39,7 +39,7 @@ Decode an GIPD stream file. + + .nf + .ft CW +-$ gipddecode -h x500-mono.prn ++$ gipddecode \-h x500-mono.prn + 0: OFST 0 len=128 + 80: OFST 1 len=128 + 100: OFST 2 len=128 +diff --git a/hbpldecode.1in b/hbpldecode.1in +index 52d0ee7..61e294b 100644 +--- a/hbpldecode.1in ++++ b/hbpldecode.1in +@@ -49,12 +49,12 @@ Decode an HBPL stream file, version 1. + + .nf + .ft CW +-$ hbpldecode -h 1250c-mono.prn ++$ hbpldecode \-h 1250c-mono.prn + 0: \\033%-12345X@PJL JOB MODE=PRINTER + 1f: @PJL SET STRINGCODESET=UTF8 + 3b: @PJL COMMENT DATE=06/01/2011 + 58: @PJL COMMENT TIME=13:28:30 +- 73: @PJL COMMENT DNAME=empty - Notepad ++ 73: @PJL COMMENT DNAME=empty \- Notepad + 96: @PJL SET JOBATTR="@LUNA=rick" + b4: @PJL SET COPIES=1 + c6: @PJL SET QTY=1 +@@ -129,7 +129,7 @@ Decode an HBPL stream file, version 2. + + .nf + .ft CW +-$ hbpldecode -h 6015c-color.prn ++$ hbpldecode \-h 6015c-color.prn + 0: \033%-12345X@PJL JOB NAME=PRINTER + 20: @PJL SET JOBATTR="HOST:dual.rkkda.org" + 48: @PJL SET JOBATTR="USER:rick" +@@ -155,28 +155,28 @@ $ hbpldecode -h 6015c-color.prn + w,h=5120x6406 res=600 color=1 + mediatype=Plain(1) papersize=Letter(4) + 1cc: Cyan BIH: +- DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO + 51 stripes, 0 layers, 1 planes + ...cyan data skipped... + 2ac: Magenta BIH: +- DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO + 51 stripes, 0 layers, 1 planes + ...magenta data skipped... + 38c: Yellow BIH: +- DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO + 51 stripes, 0 layers, 1 planes + ...yellow data skipped... + 46c: Black BIH: +- DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 64 LRLTWO +diff --git a/hipercdecode.1in b/hipercdecode.1in +index f8dec45..10267cb 100644 +--- a/hipercdecode.1in ++++ b/hipercdecode.1in +@@ -40,7 +40,7 @@ Decode an HIPERC stream file created by foo2hiperc. + + .nf + .ft CW +-$ foo2hiperc-wrapper testpage.ps | hipercdecode -h ++$ foo2hiperc-wrapper testpage.ps | hipercdecode \-h + 0: \\033%-12345X@PJL + f: @PJL RDYMSG DISPLAY = "Unknown" + 30: @PJL SET OKIJOBACCOUNTJOB USERID="Unknown" JOBNAME="Unknown" +@@ -62,7 +62,7 @@ $ foo2hiperc-wrapper testpage.ps | hipercdecode -h + 289: RECTYPE 0 (len=52,0x34 cnt=1) + 291: BLKNUM 0, nbie=1, pn=3 [black] uc=0,0, wid=4864 ud=0,100 + 2a5: BLKNUM 1 (len=20), uncompressed=1, bie: +- DL = 48, D = 48, P = 49, - = 48, XY = 4864 x 6816 ++ DL = 48, D = 48, P = 49, \- = 48, XY = 4864 x 6816 + L0 = 256, MX = 0, MY = 0 + Order = 0 + Options = 0 +diff --git a/icc2ps/foo2zjs-icc2ps.1in b/icc2ps/foo2zjs-icc2ps.1in +index bbccb50..054bbdf 100644 +--- a/icc2ps/foo2zjs-icc2ps.1in ++++ b/icc2ps/foo2zjs-icc2ps.1in +@@ -1,16 +1,16 @@ +-.TH foo2zjs-icc2ps 1 "Sun Jun 20 04:33:46 2010" "foo2zjs-icc2ps 0.0" ++.TH foo2zjs\-icc2ps 1 "Sun Jun 20 04:33:46 2010" "foo2zjs\-icc2ps 0.0" + #ifndef OLDGROFF + #include "../macros.man" + #endif + .SH NAME +-foo2zjs-icc2ps - little cms PostScript converter. ++foo2zjs\-icc2ps \- little cms PostScript converter. + .SH SYNOPSIS +-.B foo2zjs-icc2ps ++.B foo2zjs\-icc2ps + .RI [ options ] + .SH DESCRIPTION + lcms is a standalone CMM engine, which deals with the color management. + It implements a fast transformation between ICC profiles. +-.B foo2zjs-icc2ps ++.B foo2zjs\-icc2ps + is little cms PostScript converter. + .SH COMMAND LINE OPTIONS + .TP +@@ -18,7 +18,7 @@ is little cms PostScript converter. + Black point compensation (CRD only). + .TP + .B \-c <0,1,2> +-Precision (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only) ++Precision (0=LowRes, 1=Normal (default), 2=Hi\-res) (CRD only) + .TP + .BI \-i\ profile + Input profile: Generates Color Space Array (CSA). +@@ -27,7 +27,6 @@ Input profile: Generates Color Space Array (CSA). + Alternate way to set precision, number of CLUT points (CRD only) + .TP + .BI \-o\ profile +-.p + Output profile: Generates Color Rendering Dictionary(CRD). + .TP + .B \-t <0,1,2,3> +@@ -38,17 +37,14 @@ Do NOT generate resource name on CRD. + .SH FILES + .BR /usr/share/foo2*/icm/* + .SH SEE ALSO +-.BR foo2hiperc-wrapper (1), +-.BR foo2hp2600-wrapper (1), +-.BR foo2lava-wrapper (1), +-.BR foo2oak-wrapper (1), +-.BR foo2qpdl-wrapper (1), +-.BR foo2zjs-wrapper (1), ++.BR foo2hiperc\-wrapper (1), ++.BR foo2hp2600\-wrapper (1), ++.BR foo2lava\-wrapper (1), ++.BR foo2oak\-wrapper (1), ++.BR foo2qpdl\-wrapper (1), ++.BR foo2zjs\-wrapper (1), + .SH "AUTHOR" + Rick Richardson + .br + http://foo2zjs.rkkda.com/ +-'/" +-'/" +-'/" + .em pdf_outline +diff --git a/lavadecode.1in b/lavadecode.1in +index 3a4901e..36e3cff 100644 +--- a/lavadecode.1in ++++ b/lavadecode.1in +@@ -37,7 +37,7 @@ Decode an LAVAFLOW stream file created by foo2lava. + + .nf + .ft CW +-$ lavadecode -h < testpage.prn ++$ lavadecode \-h < testpage.prn + 0: \\033%-12345X@PJL JOB NAME="stdin" + 1f: \\033%-12345X@PJL JOB USERNAME="" + 3d: \\033%-12345X@PJL JOB TIMESTAMP="07/20/2007" +@@ -67,7 +67,7 @@ $ lavadecode -h < testpage.prn + 133: \\033*p200Y Y OFFSET: [200] + 13a: \\033*r1A [Page 1] + 13f: \\033*b20V [black] +- DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON +diff --git a/macros.man b/macros.man +index 289c457..cee9a52 100644 +--- a/macros.man ++++ b/macros.man +@@ -26,11 +26,11 @@ + .\} + .el \{\ + . ie !r ps4html \{\ +-'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' ++'\" \(br\|\s\-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' + . ft CW + . nr par*bxw \w'\\$1'+.4m +-\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ +-\Z'\h'.2m'\s-1\\$1\s+1'\ ++\Z'\v'.25m'\D'l 0 \-1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l \-\\n[par*bxw]u 0''\ ++\Z'\h'.2m'\s\-1\\$1\s+1'\ + \h'\\n[par*bxw]u'\\$2 + . ft P + . \} +@@ -53,26 +53,26 @@ + '\" + .if n .defcolor orange rgb #ffff00 + '\" +-'\" color - set the current color (ignores request with old groff) ++'\" color \- set the current color (ignores request with old groff) + '\" + .de color + .if mred \m[\\$1]\c + .. + '\" +-'\" colorword - colorize a word (ignored by old groff) ++'\" colorword \- colorize a word (ignored by old groff) + '\" + .de colorword + .ie m\\$1 \m[\\$1]\\$2\mP\c + .el \\$2\c + .. + '\" +-'\" colbox - colorize a word in a filled box ++'\" colbox \- colorize a word in a filled box + '\" + .de colbox + .ie mred \M[\\$2]\ + \v'+.167v'\ +-\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ +-\v'-.167v'\ ++\D'P 0 \-0.9v \w'\\$3'u 0 0 +0.9v \-\w'\\$3'u 0'\ ++\v'\-.167v'\ + \m[\\$1]\\$3\mP\MP + .el \\$3\c + .. +@@ -94,7 +94,7 @@ + '\" pdfdest LINKNAME + '\" + .de pdfdest +-.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" ++.pdfmark "/Dest /\\$1 /View [/XYZ \-5 PL null] /DEST" + .. + '\" + '\" pdfbookmark COUNT LINKNAME STRING +@@ -140,7 +140,7 @@ + . \} + . \} + . ds hhh \\*[rr_labels!\\n[rr_i]] +-. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" ++. pdfbookmark \-\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" + .\} + .. + '\" +@@ -159,7 +159,7 @@ + /Subject (\*[an-title] Manual Page) \ + /Author (Rick Richardson) \ + /Keywords (printing) \ +- /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ ++ /Creator (groff \n(.x.\n(.y.\n(.Y \-man) \ + /CreationDate (\*[an-extra1]) \ + /ModDate (\*[an-extra1]) \ + /DOCINFO" +diff --git a/oakdecode.1in b/oakdecode.1in +index e248af7..4e421a8 100644 +--- a/oakdecode.1in ++++ b/oakdecode.1in +@@ -55,7 +55,7 @@ $ oakdecode < testpage.oak + 15 (16) (no args) + bih0 w h l0 bih5 dlen plen unk yOff P subP + 3c (64) 00010000 2176 256 256 58030020 1050 1056 000 64 3 0 +- DL = 0, D = 0, P = 1, - = 0, XY = 2176 x 256 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 2176 x 256 + L0 = 256, MX = 32, MY = 0 + Order = 3 ILEAVE SMID + Options = 88 LRLTWO TPDON TPBON +diff --git a/opldecode.1in b/opldecode.1in +index 9706bb0..45d0544 100644 +--- a/opldecode.1in ++++ b/opldecode.1in +@@ -33,11 +33,11 @@ Print file offsets. + Set Debug level [0]. + + .SH EXAMPLES +-Decode an Raster Object stream file created by foo2lava-wrapper -z1. ++Decode an Raster Object stream file created by foo2lava-wrapper \-z1. + + .nf + .ft CW +-$ foo2lava-wrapper -z1 testpage.ps | opldecode -h ++$ foo2lava-wrapper \-z1 testpage.ps | opldecode \-h + 0: Event=StartOfJob; + 11: OSVersion=WindowsXP; + 25: DrvVersion=2.0.1410.0; +@@ -53,7 +53,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h + 11e: RasterObject.Height=6400; + 137: RasterObject.Data#20= + +- DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON +@@ -66,7 +66,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h + 10e4a: RasterObject.Height=6400; + 10e63: RasterObject.Data#20= + +- DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON +@@ -79,7 +79,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h + 25a17: RasterObject.Height=6400; + 25a30: RasterObject.Data#20= + +- DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON +@@ -93,7 +93,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h + 3f68c: RasterObject.Height=6400; + 3f6a5: RasterObject.Data#20= + +- DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 + L0 = 128, MX = 0, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON +diff --git a/osx-hotplug/osx-hplj-hotplug.1in b/osx-hotplug/osx-hplj-hotplug.1in +index 326d066..cd27b0e 100644 +--- a/osx-hotplug/osx-hplj-hotplug.1in ++++ b/osx-hotplug/osx-hplj-hotplug.1in +@@ -3,7 +3,7 @@ + #include "../macros.man" + #endif + .SH NAME +-osx-hplj-hotplug - Daemon for downloading firmware files for Mac OS X ++osx-hplj-hotplug \- Daemon for downloading firmware files for Mac OS X + .SH SYNOPSIS + .B osx-hplj-hotplug + .RI [ options ] +diff --git a/printer-profile.1in b/printer-profile.1in +index 0f52054..9328db4 100644 +--- a/printer-profile.1in ++++ b/printer-profile.1in +@@ -29,11 +29,11 @@ Manuf is "dell". Model is "1355". + Edit the script for additional models. + + .SH OPTIONS +- -b 1|2 Bits per pixel (1) +- -r XRESxYRES Resolution. Default=''. () +- -P rem-print Remote print (64-bit) machine, or none (amd) +- -S rem-scan Remote scan (ColorMunki) machine, or none (mac) +- -D lvl Debug level ++ \-b 1|2 Bits per pixel (1) ++ \-r XRESxYRES Resolution. Default=''. () ++ \-P rem-print Remote print (64-bit) machine, or none (amd) ++ \-S rem-scan Remote scan (ColorMunki) machine, or none (mac) ++ \-D lvl Debug level + + .SH EXAMPLES + Profile the Samsung clp-315: +diff --git a/qpdldecode.1in b/qpdldecode.1in +index d8b2f35..7f9804b 100644 +--- a/qpdldecode.1in ++++ b/qpdldecode.1in +@@ -54,7 +54,7 @@ Decode an QPDL stream file created by foo2qpdl. + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 +- DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON +@@ -64,7 +64,7 @@ Decode an QPDL stream file created by foo2qpdl. + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 +- DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON +@@ -74,7 +74,7 @@ Decode an QPDL stream file created by foo2qpdl. + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 +- DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON +@@ -84,7 +84,7 @@ Decode an QPDL stream file created by foo2qpdl. + len=56(0x38) + magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, + checksum=0x356 +- DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 + L0 = 6400, MX = 0, MY = 0 + Order = 0 + Options = 72 LRLTWO TPBON +diff --git a/slxdecode.1in b/slxdecode.1in +index 7f9ebc5..30f24bc 100644 +--- a/slxdecode.1in ++++ b/slxdecode.1in +@@ -80,7 +80,7 @@ SLT_START_PAGE, 16 items [Page 1] + SLI_0x10f, 1 (0x1) + SLT_JBIG_BIH, 0 items + Data: 20 bytes +- DL = 0, D = 0, P = 1, - = 0, XY = 4896 x 6392 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 4896 x 6392 + L0 = 128, MX = 0, MY = 0 + Order = 0 + Options = 8 TPBON +diff --git a/xqxdecode.1in b/xqxdecode.1in +index 488d192..fc32d76 100644 +--- a/xqxdecode.1in ++++ b/xqxdecode.1in +@@ -37,7 +37,7 @@ Decode an XQX stream file created by foo2xqx. + + .nf + .ft CW +-$ xqxdecode -h < testpage.xm ++$ xqxdecode \-h < testpage.xm + 0: \\033%-12345X@PJL JOB + 12: @PJL SET JAMRECOVERY=OFF + 2b: @PJL SET DENSITY=3 +@@ -78,7 +78,7 @@ $ xqxdecode -h < testpage.xm + 230: XQXI_0x80000000, 64 (0x40) + 23c: XQXI_0x40000000, 0 (0x0) + 248: XQXI_BIH(0x40000002) +- DL = 0, D = 0, P = 1, - = 0, XY = 9856 x 6432 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 9856 x 6432 + L0 = 128, MX = 16, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON +diff --git a/zjsdecode.1in b/zjsdecode.1in +index ea6c443..567f840 100644 +--- a/zjsdecode.1in ++++ b/zjsdecode.1in +@@ -74,7 +74,7 @@ ZJT_START_PAGE, 17 items + ZJI_MINOLTA_PAGE_NUMBER, 1 (0x1) + ZJT_JBIG_BIH, 0 items + Data: 20 bytes +- DL = 0, D = 0, P = 1, - = 0, XY = 10200 x 6600 ++ DL = 0, D = 0, P = 1, \- = 0, XY = 10200 x 6600 + L0 = 128, MX = 16, MY = 0 + Order = 3 ILEAVE SMID + Options = 92 LRLTWO TPDON TPBON DPON diff --git a/patches/0016-Fix-various-spelling-errors.patch b/patches/0016-Fix-various-spelling-errors.patch new file mode 100644 index 0000000..5d3d3e2 --- /dev/null +++ b/patches/0016-Fix-various-spelling-errors.patch @@ -0,0 +1,129 @@ +From a3e4985bdde2a3c181a73abe5bf1430cc3c3fdb3 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:43:59 +0200 +Subject: Fix various spelling errors: + + precission + supress + langauge +--- + icc2ps/cmscgats.c | 2 +- + icc2ps/cmsio1.c | 2 +- + icc2ps/cmsmatsh.c | 4 ++-- + icc2ps/cmsps2.c | 4 ++-- + icc2ps/icc2ps.c | 4 ++-- + oakdecode.c | 2 +- + qpdldecode.c | 2 +- + 7 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/icc2ps/cmscgats.c b/icc2ps/cmscgats.c +index 042429f..db4ab3f 100644 +--- a/icc2ps/cmscgats.c ++++ b/icc2ps/cmscgats.c +@@ -620,7 +620,7 @@ void ReadReal(LPIT8 it8, int inum) + if (it8->ch == '.') { // Decimal point + + double frac = 0.0; // fraction +- int prec = 0; // precission ++ int prec = 0; // precision + + NextCh(it8); // Eats dec. point + +diff --git a/icc2ps/cmsio1.c b/icc2ps/cmsio1.c +index 9f9d6e4..1bd4e23 100644 +--- a/icc2ps/cmsio1.c ++++ b/icc2ps/cmsio1.c +@@ -1162,7 +1162,7 @@ LCMSBOOL ReadCLUT(LPLCMSICCPROFILE Icc, size_t Offset, LPLUT NewLUT) + AdjustEndianessArray16(NewLUT ->T, NewLUT->Tsize / sizeof(WORD)); + } + else { +- cmsSignalError(LCMS_ERRC_ABORTED, "Unknow precission of '%d'", CLUT.prec); ++ cmsSignalError(LCMS_ERRC_ABORTED, "Unknow precision of '%d'", CLUT.prec); + return FALSE; + } + +diff --git a/icc2ps/cmsmatsh.c b/icc2ps/cmsmatsh.c +index 634c9f3..971f931 100644 +--- a/icc2ps/cmsmatsh.c ++++ b/icc2ps/cmsmatsh.c +@@ -75,7 +75,7 @@ int ComputeTables(LPGAMMATABLE Table[3], LPWORD Out[3], LPL16PARAMS p16) + AllLinear += cmsIsLinear(PtrW, p16 -> nSamples); + } + +- // If is all linear, then supress table interpolation (this ++ // If is all linear, then suppress table interpolation (this + // will speed greately some trivial operations. + // Return 1 if present, 0 if all linear + +@@ -192,7 +192,7 @@ LPMATSHAPER cmsAllocMatShaper(LPMAT3 Matrix, LPGAMMATABLE Tables[], DWORD Behavi + AllLinear += cmsIsLinear(PtrW, NewMatShaper -> p16.nSamples); + } + +- // If is all linear, then supress table interpolation (this ++ // If is all linear, then suppress table interpolation (this + // will speed greately some trivial operations + + if (AllLinear != 3) +diff --git a/icc2ps/cmsps2.c b/icc2ps/cmsps2.c +index 6c352a7..31592e7 100644 +--- a/icc2ps/cmsps2.c ++++ b/icc2ps/cmsps2.c +@@ -54,7 +54,7 @@ LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCRDEx(cmsHPROFILE hProfile, int Intent, + Color Space Arrays (CSA) + ================================================================================== + +- In order to obtain precission, code chooses between three ways to implement ++ In order to obtain precision, code chooses between three ways to implement + the device -> XYZ transform. These cases identifies monochrome profiles (often + implemented as a set of curves), matrix-shaper and LUT-based. + +@@ -1456,7 +1456,7 @@ int WriteOutputLUT(LPMEMSTREAM m, cmsHPROFILE hProfile, int Intent, DWORD dwFlag + OutputFormat = CHANNELS_SH(nChannels) | BYTES_SH(2); + + // For absolute colorimetric, the LUT is encoded as relative +- // in order to preserve precission. ++ // in order to preserve precision. + + RelativeEncodingIntent = Intent; + if (RelativeEncodingIntent == INTENT_ABSOLUTE_COLORIMETRIC) +diff --git a/icc2ps/icc2ps.c b/icc2ps/icc2ps.c +index 7c7df2b..8f78a55 100644 +--- a/icc2ps/icc2ps.c ++++ b/icc2ps/icc2ps.c +@@ -139,8 +139,8 @@ void Help(void) + + fprintf(stderr, "%cb - Black point compensation (CRD only)\n", SW); + fprintf(stderr, "%cu - Do NOT generate resource name on CRD\n", SW); +- fprintf(stderr, "%cc<0,1,2> - Precission (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only)\n", SW); +- fprintf(stderr, "%cn - Alternate way to set precission, number of CLUT points (CRD only)\n", SW); ++ fprintf(stderr, "%cc<0,1,2> - Precision (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only)\n", SW); ++ fprintf(stderr, "%cn - Alternate way to set precision, number of CLUT points (CRD only)\n", SW); + + fprintf(stderr, "\n"); + fprintf(stderr, "This program is intended to be a demo of the little cms\n" +diff --git a/oakdecode.c b/oakdecode.c +index 0653954..2ec1b1e 100644 +--- a/oakdecode.c ++++ b/oakdecode.c +@@ -101,7 +101,7 @@ usage(void) + "Options:\n" + " -d basename Basename of .pbm file for saving decompressed planes\n" + " -r basename Basename of .jbg file for saving raw planes\n" +-" -i Supress display of image records\n" ++" -i Suppress display of image records\n" + " -o Print file offsets\n" + " -D lvl Set Debug level [%d]\n" + , Debug +diff --git a/qpdldecode.c b/qpdldecode.c +index d6336df..633ba97 100644 +--- a/qpdldecode.c ++++ b/qpdldecode.c +@@ -82,7 +82,7 @@ usage(void) + "\n" + " Decode a QPDL stream into human readable form.\n" + "\n" +-" A Quick Page Description Langauge (QPDL) is the printer language" ++" A Quick Page Description language (QPDL) is the printer language" + " used by some Samsung printers, such as the CLP-600n.\n" + "\n" + " Also known as SPLC." diff --git a/patches/0017-Delay-firmware-transfer-for-UDEV-automatic-printer-s.patch b/patches/0017-Delay-firmware-transfer-for-UDEV-automatic-printer-s.patch new file mode 100644 index 0000000..16d67d2 --- /dev/null +++ b/patches/0017-Delay-firmware-transfer-for-UDEV-automatic-printer-s.patch @@ -0,0 +1,29 @@ +From ee843c3701c265c2667d63fa2e59c656091a6803 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:44:00 +0200 +Subject: Delay firmware transfer for UDEV automatic printer setup + +--- + hplj1000 | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/hplj1000 b/hplj1000 +index 21ca570..6b74601 100755 +--- a/hplj1000 ++++ b/hplj1000 +@@ -33,6 +33,15 @@ esac + PROGNAME="$0" + + # ++# Wait some time before installing the firmware so that probing for ++# automatic printer setup which happens immediately after turning on ++# the printer does not interfere with the firmware transfer to the ++# printer ++# https://bugs.launchpad.net/ubuntu/+source/foo2zjs/+bug/543177 ++# ++sleep 3 ++ ++# + # Set $DEV to, e.g. /dev/usb/lp0, to force the device you want + # Else, leave it null to automatically detect the device + # diff --git a/patches/0018-Removed-the-lines-in-the-UDEV-script-for-the-automat.patch b/patches/0018-Removed-the-lines-in-the-UDEV-script-for-the-automat.patch new file mode 100644 index 0000000..97f787a --- /dev/null +++ b/patches/0018-Removed-the-lines-in-the-UDEV-script-for-the-automat.patch @@ -0,0 +1,33 @@ +From 2c5506f4ed36ca664e128158aeb17fa970d130d0 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter +Date: Tue, 4 Oct 2016 11:44:01 +0200 +Subject: Removed the lines in the UDEV script for the automatic firmware + + upload into the printer which remove the UDEV rules files for HPLIP's + automatic firmware upload. +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/foo2zjs/+bug/783389 +--- + hplj1000 | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/hplj1000 b/hplj1000 +index 6b74601..6bc0d18 100755 +--- a/hplj1000 ++++ b/hplj1000 +@@ -152,16 +152,6 @@ case "$0" in + esac + + # +-# Remove HPLIP proprietary rules! +-# +-model=` echo "$MODEL" | tr 'A-Z' 'a-z' ` +-rm -f /etc/udev/rules.d/*hpmud*laserjet_${model}* +-rm -f /etc/udev/rules.d/*hpmud_support.rules +-rm -f /etc/udev/rules.d/*hpmud_plugin.rules +-rm -f /lib/udev/rules.d/*hpmud_support.rules +-rm -f /lib/udev/rules.d/*hpmud_plugin.rules +- +-# + # The special command line argument "install-usermap" will install + # the proper entry into the /etc/hotplug/usb.usermap file + # diff --git a/patches/0019-The-firmware-upload-script-tried-to-upload-the-firmw.patch b/patches/0019-The-firmware-upload-script-tried-to-upload-the-firmw.patch new file mode 100644 index 0000000..3aded00 --- /dev/null +++ b/patches/0019-The-firmware-upload-script-tried-to-upload-the-firmw.patch @@ -0,0 +1,54 @@ +From 54d4732eb490606c210d82bbc4f406338144ef7f Mon Sep 17 00:00:00 2001 +From: Till Kamppeter +Date: Tue, 4 Oct 2016 11:44:02 +0200 +Subject: The firmware upload script tried to upload the firmware via + + the usblp kernel module and with the CUPS USB backend (using libusb) in + parallel, making the printer crash. +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1003843 +--- + hplj1000 | 24 ++++++++---------------- + 1 file changed, 8 insertions(+), 16 deletions(-) + +diff --git a/hplj1000 b/hplj1000 +index 6bc0d18..2cd24b9 100755 +--- a/hplj1000 ++++ b/hplj1000 +@@ -262,8 +262,14 @@ if [ "$DEV" != "" ]; then + # force downloading to a specific device + # + load_usblp "$DEV" +-elif [ -x $PRINTERID -o -x $USB_BACKEND ]; then +- if [ -x $PRINTERID ]; then ++elif [ -x $USB_BACKEND ]; then ++ # ++ # If we have CUPS installed, use the CUPS "usb" backend, as then we do ++ # not need to care whether the system uses the usblp kernel module or ++ # libusb ++ # ++ load_cups ++elif [ -x $PRINTERID ]; then + # + # Sniff around for printers that need a firmware download + # +@@ -282,20 +288,6 @@ elif [ -x $PRINTERID -o -x $USB_BACKEND ]; then + fi + fi + done +- if [ "$usblps" != " " ]; then +- # All done! +- exit +- fi +- fi +- +- if [ -x $USB_BACKEND ]; then +- # +- # If we have CUPS installed, use the CUPS "usb" backend, as then we do +- # not need to care whether the system uses the usblp kernel module or +- # libusb +- # +- load_cups +- fi + else + log "HP LaserJet $MODEL firmware was not downloaded..." + log "...couldn't find $PRINTERID, DEV is not set, and CUPS not installed." diff --git a/patches/0020-Prevent-an-infinite-loop-when-loading-the-firmware.patch b/patches/0020-Prevent-an-infinite-loop-when-loading-the-firmware.patch new file mode 100644 index 0000000..bd5f3ce --- /dev/null +++ b/patches/0020-Prevent-an-infinite-loop-when-loading-the-firmware.patch @@ -0,0 +1,58 @@ +From 99c7147a882a8caa7154d1885c1225dbfe31c311 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:44:03 +0200 +Subject: Prevent an infinite loop when loading the firmware. + + When using the load_cups method, the CUPS backend will internally + unload and reload the usblp module. This will generate + SUBSYSTEM=usbmisc events that need to be ignored in the CUPS code + path, or this script will be rerun in an infite loop. + + But when using the load_usblp method, the usblp module is obviously + needed. So in this situation we need to ignore the SUBSYSTEM=usb + events. +Bug-Debian: http://bugs.debian.org/663868 +Author: Peter De Wachter +--- + hplj1000 | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/hplj1000 b/hplj1000 +index 2cd24b9..0461f24 100755 +--- a/hplj1000 ++++ b/hplj1000 +@@ -24,12 +24,6 @@ + # Mike Morgan (2004) + # + +-# udev calls us twice on FC4! Just want /dev/usb/lp +-case "$DEVNAME" in +-/dev/usb/usb*) exit;; # Bug: FC4 +-/dev/bus/usb/*) exit;; # Bug: Ubuntu 14 +-esac +- + PROGNAME="$0" + + # +@@ -261,6 +255,7 @@ if [ "$DEV" != "" ]; then + # + # force downloading to a specific device + # ++ if [ "$SUBSYSTEM" != "usbmisc" ]; then exit; fi + load_usblp "$DEV" + elif [ -x $USB_BACKEND ]; then + # +@@ -268,11 +263,13 @@ elif [ -x $USB_BACKEND ]; then + # not need to care whether the system uses the usblp kernel module or + # libusb + # ++ if [ "$SUBSYSTEM" != "usb" ]; then exit; fi + load_cups + elif [ -x $PRINTERID ]; then + # + # Sniff around for printers that need a firmware download + # ++ if [ "$SUBSYSTEM" != "usbmisc" ]; then exit; fi + usblps=`find /dev/usb -type c -name 'lp*'`" "`find /dev -type c -name 'usblp*'` + for dev in $usblps; do + status=`$PRINTERID $dev 2>/dev/null | grep -y "hp LaserJet $MODEL"` diff --git a/patches/0021-Build-manpages-reproducibly-through-reading-the-MODT.patch b/patches/0021-Build-manpages-reproducibly-through-reading-the-MODT.patch new file mode 100644 index 0000000..daffc46 --- /dev/null +++ b/patches/0021-Build-manpages-reproducibly-through-reading-the-MODT.patch @@ -0,0 +1,39 @@ +From 11ab90b6a6c2e67f38ccebbf944b377fa7c18718 Mon Sep 17 00:00:00 2001 +From: Didier Raboud +Date: Tue, 4 Oct 2016 11:44:04 +0200 +Subject: Build manpages reproducibly, through reading the MODTIME from + + debian/changelog exclusively, and giving LC_ALL=C.UTF-8 TZ=UTC to various + commands +--- + Makefile | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 4410c6f..2420cd3 100644 +--- a/Makefile ++++ b/Makefile +@@ -80,6 +80,8 @@ endif + ifeq ($(UNAME),SunOS) + MODTIME= `ls -e $$1 | cut -c42-61` + endif ++# Define modtime from the debian changelog, for all files ++MODTIME= LC_ALL=C.UTF-8 TZ=UTC date -d "$$(dpkg-parsechangelog -SDate)" "+%a %b %d %T %Y" + + # + # Files for tarball +@@ -1578,12 +1580,12 @@ install-doc: doc + $(INSTALL) -c -m 644 ChangeLog $(DOCDIR) + + GROFF=/usr/local/test/bin/groff +-GROFF=groff ++GROFF=LC_ALL=C.UTF-8 TZ=UTC groff + manual.pdf: $(MANPAGES) osx-hotplug/osx-hplj-hotplug.1 + -$(GROFF) -t -man \ + `ls $(MANPAGES) \ + osx-hotplug/osx-hplj-hotplug.1 \ +- | sort` \ ++ | LC_ALL=C.UTF-8 sort` \ + | ps2pdf - $@ + + README: README.in diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..62252e9 --- /dev/null +++ b/patches/series @@ -0,0 +1,21 @@ +0001-Update-makefiles-to-Debian-best-practices.patch +0002-Fix-icc2ps-build.patch +0003-Don-t-build-icc2ps-but-use-psicc-from-liblcms2-utils.patch +0004-Use-the-Debian-provided-libjbig.patch +0005-Link-against-system-liblcms1.patch +0006-Correct-the-udev-rules.patch +0007-Remove-Encoding-from-.desktop-file.patch +0008-Do-not-display-the-icon-by-default.patch +0009-Launch-the-_gui.tcl-directly-instead-of-launching-wi.patch +0010-Correct-the-path-for-the-usb_printerid-program.patch +0011-Improve-getweb-also-for-installing-the-firmware.patch +0012-Use-the-same-firmware-folder-for-all-HP-LJ-printers.patch +0013-Firmware-directory-is-lib-firmware-hp-Closes-517957.patch +0014-Don-t-delete-printer-profile-in-clean-target.patch +0015-Fixes-errors-and-hyphen-as-minus-in-manpages.patch +0016-Fix-various-spelling-errors.patch +0017-Delay-firmware-transfer-for-UDEV-automatic-printer-s.patch +0018-Removed-the-lines-in-the-UDEV-script-for-the-automat.patch +0019-The-firmware-upload-script-tried-to-upload-the-firmw.patch +0020-Prevent-an-infinite-loop-when-loading-the-firmware.patch +0021-Build-manpages-reproducibly-through-reading-the-MODT.patch diff --git a/printer-driver-foo2zjs-common.doc-base b/printer-driver-foo2zjs-common.doc-base new file mode 100644 index 0000000..35a015e --- /dev/null +++ b/printer-driver-foo2zjs-common.doc-base @@ -0,0 +1,11 @@ +Document: foo2zjs +Title: foo2zjs Manual +Author: Rick Richardson +Abstract: foo2zjs is an open source printer driver for printers that + use the Zenographics ZjStream wire protocol for their print data. + This document contains all the manual pages for the different + binaries included with foo2zjs. +Section: System/Hardware + +Format: PDF +Files: /usr/share/doc/printer-driver-foo2zjs/manual.pdf diff --git a/printer-driver-foo2zjs-common.install b/printer-driver-foo2zjs-common.install new file mode 100644 index 0000000..f0dbb76 --- /dev/null +++ b/printer-driver-foo2zjs-common.install @@ -0,0 +1,68 @@ +debian/printer-driver-foo2zjs-common.ppd-updater /usr/share/cups/ppd-updaters/ +getweb usr/sbin +hplj1000 lib/udev +hplj1020.desktop usr/share/applications/ +hplj1020_icon.png usr/share/pixmaps +PPD/* usr/share/ppd/foo2zjs/ +usr/bin/foo2zjs-pstops +usr/bin/foo2ddst-wrapper +usr/bin/foo2hiperc-wrapper +usr/bin/foo2hbpl2-wrapper +usr/bin/foo2hp2600-wrapper +usr/bin/foo2lava-wrapper +usr/bin/foo2oak-wrapper +usr/bin/foo2qpdl-wrapper +usr/bin/foo2slx-wrapper +usr/bin/foo2xqx-wrapper +usr/bin/foo2zjs-wrapper +usr/bin/printer-profile +usr/share/doc/printer-driver-foo2zjs/manual.pdf +usr/share/doc/printer-driver-foo2zjs/README +usr/share/foo2qpdl/crd/black-text.ps +usr/share/foo2zjs/crd/2300w-1200@150-l250-kx,ucr100,0-per.crd +usr/share/foo2zjs/crd/2300w-1200@150-l250-kx,ucr100,50-per.crd +usr/share/foo2zjs/crd/2300w-1200@150-l250-kx,ucr100,75-per.crd +usr/share/foo2zjs/crd/2300w-1200@150-l250-kx,ucr125,75-per.crd +usr/share/foo2zjs/crd/kh.crd +usr/share/foo2zjs/crd/kx.crd +usr/share/foo2zjs/crd/prolog.ps +usr/share/foo2zjs/crd/screen1200.ps +usr/share/foo2zjs/crd/screen2400.ps +usr/share/foo2zjs/gamma-lookup.ps +usr/share/foo2zjs/gamma.ps +usr/share/foo2zjs/hplj1020_icon.gif +usr/share/foo2zjs/hplj10xx_gui.tcl +usr/share/man/man1/arm2hpdl.1 +usr/share/man/man1/ddstdecode.1 +usr/share/man/man1/foo2ddst.1 +usr/share/man/man1/foo2ddst-wrapper.1 +usr/share/man/man1/foo2hbpl2.1 +usr/share/man/man1/foo2hbpl2-wrapper.1 +usr/share/man/man1/foo2hiperc.1 +usr/share/man/man1/foo2hiperc-wrapper.1 +usr/share/man/man1/foo2hp.1 +usr/share/man/man1/foo2hp2600-wrapper.1 +usr/share/man/man1/foo2lava.1 +usr/share/man/man1/foo2lava-wrapper.1 +usr/share/man/man1/foo2oak.1 +usr/share/man/man1/foo2oak-wrapper.1 +usr/share/man/man1/foo2qpdl.1 +usr/share/man/man1/foo2qpdl-wrapper.1 +usr/share/man/man1/foo2slx.1 +usr/share/man/man1/foo2slx-wrapper.1 +usr/share/man/man1/foo2xqx.1 +usr/share/man/man1/foo2xqx-wrapper.1 +usr/share/man/man1/foo2zjs.1 +usr/share/man/man1/foo2zjs-pstops.1 +usr/share/man/man1/foo2zjs-wrapper.1 +usr/share/man/man1/gipddecode.1 +usr/share/man/man1/hbpldecode.1 +usr/share/man/man1/hipercdecode.1 +usr/share/man/man1/lavadecode.1 +usr/share/man/man1/oakdecode.1 +usr/share/man/man1/opldecode.1 +usr/share/man/man1/printer-profile.1 +usr/share/man/man1/qpdldecode.1 +usr/share/man/man1/slxdecode.1 +usr/share/man/man1/xqxdecode.1 +usr/share/man/man1/zjsdecode.1 diff --git a/printer-driver-foo2zjs-common.ppd-updater b/printer-driver-foo2zjs-common.ppd-updater new file mode 100644 index 0000000..d427c61 --- /dev/null +++ b/printer-driver-foo2zjs-common.ppd-updater @@ -0,0 +1,2 @@ +DRIVER_REGEXP='^foo2zjs:' +GENNICKNAME_REGEXP='s/-z\d\b//' diff --git a/printer-driver-foo2zjs.dirs b/printer-driver-foo2zjs.dirs new file mode 100644 index 0000000..aa41281 --- /dev/null +++ b/printer-driver-foo2zjs.dirs @@ -0,0 +1 @@ +/lib/firmware/hp/ diff --git a/printer-driver-foo2zjs.install b/printer-driver-foo2zjs.install new file mode 100644 index 0000000..8506974 --- /dev/null +++ b/printer-driver-foo2zjs.install @@ -0,0 +1,23 @@ +usr/bin/arm2hpdl +usr/bin/foo2ddst +usr/bin/foo2hiperc +usr/bin/foo2hbpl2 +usr/bin/foo2hp +usr/bin/foo2lava +usr/bin/foo2oak +usr/bin/foo2qpdl +usr/bin/foo2slx +usr/bin/foo2xqx +usr/bin/foo2zjs +usr/bin/ddstdecode +usr/bin/gipddecode +usr/bin/hbpldecode +usr/bin/hipercdecode +usr/bin/lavadecode +usr/bin/oakdecode +usr/bin/opldecode +usr/bin/qpdldecode +usr/bin/slxdecode +usr/bin/xqxdecode +usr/bin/zjsdecode +usr/bin/command2foo2lava-pjl usr/lib/cups/filter/ diff --git a/printer-driver-foo2zjs.links b/printer-driver-foo2zjs.links new file mode 100644 index 0000000..21c6d5a --- /dev/null +++ b/printer-driver-foo2zjs.links @@ -0,0 +1,11 @@ +lib/udev/hplj1000 lib/udev/hplj1005 +lib/udev/hplj1000 lib/udev/hplj1018 +lib/udev/hplj1000 lib/udev/hplj1020 +lib/udev/hplj1000 lib/udev/hpljP1005 +lib/udev/hplj1000 lib/udev/hpljP1006 +lib/udev/hplj1000 lib/udev/hpljP1007 +lib/udev/hplj1000 lib/udev/hpljP1008 +lib/udev/hplj1000 lib/udev/hpljP1505 +lib/udev/hplj1000 lib/udev/hpljP1505n + +usr/bin/psicc usr/bin/foo2zjs-icc2ps diff --git a/printer-driver-foo2zjs.lintian-overrides b/printer-driver-foo2zjs.lintian-overrides new file mode 100644 index 0000000..9e658e4 --- /dev/null +++ b/printer-driver-foo2zjs.lintian-overrides @@ -0,0 +1,28 @@ +# That's on purpose, getweb can go fetch these from the web +package-contains-empty-directory lib/firmware/hp/ + +# Manpages are shipped in printer-driver-foo2zjs-common +binary-without-manpage usr/bin/arm2hpdl +binary-without-manpage usr/bin/ddstdecode +binary-without-manpage usr/bin/foo2ddst +binary-without-manpage usr/bin/foo2hbpl2 +binary-without-manpage usr/bin/foo2hiperc +binary-without-manpage usr/bin/foo2hp +binary-without-manpage usr/bin/foo2lava +binary-without-manpage usr/bin/foo2oak +binary-without-manpage usr/bin/foo2qpdl +binary-without-manpage usr/bin/foo2slx +binary-without-manpage usr/bin/foo2xqx +binary-without-manpage usr/bin/foo2zjs +binary-without-manpage usr/bin/foo2zjs-icc2ps +binary-without-manpage usr/bin/gipddecode +binary-without-manpage usr/bin/hbpldecode +binary-without-manpage usr/bin/hipercdecode +binary-without-manpage usr/bin/lavadecode +binary-without-manpage usr/bin/oakdecode +binary-without-manpage usr/bin/opldecode +binary-without-manpage usr/bin/qpdldecode +binary-without-manpage usr/bin/slxdecode +binary-without-manpage usr/bin/usb_printerid +binary-without-manpage usr/bin/xqxdecode +binary-without-manpage usr/bin/zjsdecode diff --git a/printer-driver-foo2zjs.postinst b/printer-driver-foo2zjs.postinst new file mode 100644 index 0000000..3abe817 --- /dev/null +++ b/printer-driver-foo2zjs.postinst @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = configure ]; then + # Move user-downloaded firmware files + if ls /usr/share/foo2zjs/firmware/*.dl >/dev/null 2>/dev/null; then + mv /usr/share/foo2zjs/firmware/*.dl /lib/firmware/hp/ 2>/dev/null + fi +fi + +#DEBHELPER# diff --git a/printer-driver-foo2zjs.preinst b/printer-driver-foo2zjs.preinst new file mode 100644 index 0000000..cdb30be --- /dev/null +++ b/printer-driver-foo2zjs.preinst @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +if [ "$1" = install ] || [ "$1" = upgrade ]; then + if [ -e "/etc/udev/rules.d/11-hplj10xx.rules" ]; then + if [ "`md5sum \"/etc/udev/rules.d/11-hplj10xx.rules\" | sed -e \"s/ .*//\"`" = \ + "`dpkg-query -W -f='${Conffiles}' foo2zjs | sed -n -e \"\\\\' /etc/udev/rules.d/11-hplj10xx.rules's/.* //p\"`" ] + then + rm -f "/etc/udev/rules.d/11-hplj10xx.rules" + fi + fi +fi + +#DEBHELPER# diff --git a/rules b/rules new file mode 100755 index 0000000..00368ff --- /dev/null +++ b/rules @@ -0,0 +1,104 @@ +#!/usr/bin/make -f + +derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no") +DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) + +%: + dh $@ + +override_dh_auto_build: + cp printer-profile.in printer-profile + dh_auto_build -- all ppd + +override_dh_auto_install: + dh_auto_install -- PREFIX=$(CURDIR)/debian/tmp/usr MODEL=$(CURDIR)/debian/tmp/usr/share/cups/model FOODB=$(CURDIR)/debian/tmp/usr/share/foomatic/db/source PPD=$(CURDIR)/debian/tmp/usr/share/ppd CUPS_SERVERBIN=$(CURDIR)/debian/tmp/usr/lib/cups DOCDIR=$(CURDIR)/debian/tmp/usr/share/doc/printer-driver-foo2zjs + +override_dh_install: + ### patches/20-honour-papersize.patch + # Add support for /etc/papersize to all wrapper scripts. In contrary + # to a patch this will automatically apply to every new wrapper script + # which gets added to this package in the future. + perl -p -i -e 's/^PAPER=(\d+)\s*$$/test -r \/etc\/papersize && PAPER=\x24\(cat \/etc\/papersize\)\ntest "\x24PAPER" || PAPER=\1\n/' $(CURDIR)/debian/tmp/usr/bin/*-wrapper + # Add "-dNOINTERPOLATE" to the Ghostscript command lines to make + # Ghostscript rendering the pages significantly faster + perl -p -i -e 's/dNOPAUSE/dNOPAUSE -dNOINTERPOLATE/g' $(CURDIR)/debian/tmp/usr/bin/*-wrapper + # Legacy dh_install + dh_install --fail-missing \ + -Xusb_printerid \ + -Xhplj10xx.rules \ + -XINSTALL \ + -XINSTALL.OSX \ + -XCOPYING \ + -XChangeLog \ + -Xcups/filter/command2foo2lava-pjl + +ifneq (,$(filter printer-driver-foo2zjs, $(shell dh_listpackages))) +ifeq ($(DEB_HOST_ARCH_OS),linux) + # usb_printerid is Linux-specific + install -D -m 644 usb_printerid $(CURDIR)/debian/printer-driver-foo2zjs/usr/bin/usb_printerid + install -D -m 644 usb_printerid.1 $(CURDIR)/debian/printer-driver-foo2zjs-common/usr/share/man/man1/usb_printerid.1 + # Use a policy-numbered name for the Linux-specific udev rules file + install -D -m 644 hplj10xx.rules $(CURDIR)/debian/printer-driver-foo2zjs/lib/udev/rules.d/85-hplj10xx.rules +endif +ifeq ($(DEB_HOST_ARCH_OS),kfreebsd) + # /etc/devd/hplj10xx.conf is kFreeBSD-specific + install -D -m 644 hplj10xx.conf $(CURDIR)/debian/printer-driver-foo2zjs/etc/devd/hplj10xx.conf +endif +endif + +ifneq (,$(filter printer-driver-foo2zjs-common, $(shell dh_listpackages))) + ### patches/20-PDF-input-data-in-PPDs.patch + # Add "*cupsFilter" line to accept PDF input data to the PPDs and compress them + ( cd $(CURDIR)/debian/printer-driver-foo2zjs-common/usr/share/ppd/foo2zjs; \ + find -name '*.ppd.gz' -exec gunzip {} \; ; \ + find -name '*.ppd' -exec perl -p -i -e 's,^\*cupsFilter:\s*\"application/vnd.cups-postscript\s+0\s+foomatic-rip\",*cupsFilter: "application/vnd.cups-postscript 100 foomatic-rip"\n*cupsFilter: "application/vnd.cups-pdf 0 foomatic-rip",' {} \; ; \ + ) + # Correct the name of the pyppd-compressed PPD set to correspond to the earlier ppd-updater driver name + dh_pyppd --archive-filename=foo2zjs +endif + # Install the apport hook on Ubuntu and derivatives +ifeq ($(derives_from_ubuntu),yes) + install -D -m 644 debian/ubuntu/apport-hook.py $(CURDIR)/debian/printer-driver-foo2zjs/usr/share/apport/package-hooks/source_foo2zjs.py +endif + +override_dh_auto_test: + # Run the tests in non-failing mode (they fail…) + - dh_auto_test + +override_dh_compress: + dh_compress -X.pdf + +override_dh_gencontrol: +ifeq ($(derives_from_ubuntu),yes) + # Ubuntu considers mscompress to be a Depends of printer-driver-foo2zjs + echo "ubuntu:mscompress=mscompress" >> debian/printer-driver-foo2zjs.substvars +else + # Debian considers mscompress to be a Recommends of printer-driver-foo2zjs + echo "debian:mscompress=mscompress" >> debian/printer-driver-foo2zjs.substvars +endif +ifeq ($(derives_from_ubuntu),yes) + # Ubuntu considers tix to be a Suggest of printer-driver-foo2zjs + echo "ubuntu:tix=tix" >> debian/printer-driver-foo2zjs.substvars +else + # Debian considers tix to be a Depends of printer-driver-foo2zjs + echo "debian:tix=tix" >> debian/printer-driver-foo2zjs.substvars +endif + dh_gencontrol + +override_dh_auto_clean: + dh_auto_clean + - rm -f 85-hplj10xx.rules + +UPSTREAM_VERSION ?= `date +%Y%m%d` + +get-orig-source: + - quilt pop -af ; rm -Rf .pc + git checkout -f upstream/latest + wget -O ../foo2zjs_$(UPSTREAM_VERSION).orig.tar.gz 'http://foo2zjs.rkkda.com/foo2zjs.tar.gz' + gbp import-orig --no-pristine-tar --upstream-version=$(UPSTREAM_VERSION) --no-merge --upstream-branch=upstream/nodfsg ../foo2zjs_$(UPSTREAM_VERSION).orig.tar.gz + git merge upstream/$(UPSTREAM_VERSION) + git tag upstream/$(UPSTREAM_VERSION)dfsg0 + git archive --format=tar --prefix=foo2zjs-$(UPSTREAM_VERSION)dfsg0/ upstream/$(UPSTREAM_VERSION)dfsg0 | xz -6e > ../foo2zjs_$(UPSTREAM_VERSION)dfsg0.orig.tar.xz + pristine-tar commit ../foo2zjs_$(UPSTREAM_VERSION)dfsg0.orig.tar.xz upstream/$(UPSTREAM_VERSION)dfsg0 + git checkout -f debian/master + git merge upstream/$(UPSTREAM_VERSION)dfsg0 diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/svn-deblayout b/svn-deblayout new file mode 100644 index 0000000..b552e9a --- /dev/null +++ b/svn-deblayout @@ -0,0 +1 @@ +origDir=../upstream diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..b887010 --- /dev/null +++ b/tests/control @@ -0,0 +1,3 @@ +Tests: printer-driver-foo2zjs +Restrictions: needs-root +Depends: printer-driver-foo2zjs, cups, cups-client (>= 1.7.3-5~) diff --git a/tests/printer-driver-foo2zjs b/tests/printer-driver-foo2zjs new file mode 100755 index 0000000..6492d8e --- /dev/null +++ b/tests/printer-driver-foo2zjs @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +. /usr/share/cups/ppd-updaters/printer-driver-foo2zjs-common.ppd-updater + +/usr/share/cups/test-drivers -n adt-test-foo2zjs-0 -r $DRIVER_REGEXP diff --git a/ubuntu/apport-hook.py b/ubuntu/apport-hook.py new file mode 100644 index 0000000..1cc4efd --- /dev/null +++ b/ubuntu/apport-hook.py @@ -0,0 +1,11 @@ +'''apport package hook for foo2zjs + +(c) 2009 Canonical Ltd. +Author: Brian Murray +''' + +from apport.hookutils import * + +def add_info(report): + attach_hardware(report) + attach_printing(report) diff --git a/watch b/watch new file mode 100644 index 0000000..3c09c23 --- /dev/null +++ b/watch @@ -0,0 +1 @@ +# We track foo2zjs SVN revisions, thus no need for a watch file. -- cgit v1.2.3 From b6ef8885377fbb687c992639a2a64e5e276da8b4 Mon Sep 17 00:00:00 2001 From: Steffen Joeris Date: Tue, 4 Oct 2016 11:43:43 +0200 Subject: Update makefiles to Debian best-practices Author: Luca Capello Author: Didier Raboud Gbp-Pq: Name 0001-Update-makefiles-to-Debian-best-practices.patch --- Makefile | 71 +++++++++++++++++++++++++++------------------------------ icc2ps/Makefile | 4 ++-- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/Makefile b/Makefile index addc4b5..ec81e21 100644 --- a/Makefile +++ b/Makefile @@ -17,9 +17,7 @@ SYSNAME := $(shell uname -n) VERSION=0.0 # Installation prefix... -PREFIX=/usr/local PREFIX=/usr -PREFIX=$(DESTDIR)/usr # Pathnames for this package... BIN=$(PREFIX)/bin @@ -39,7 +37,7 @@ INSTALL=install ROOT=root # Pathnames for referenced packages... -FOODB=$(DESTDIR)/usr/share/foomatic/db/source +FOODB=$(DESTDIR)/share/foomatic/db/source # User ID's LPuid=-oroot @@ -468,34 +466,34 @@ all-done: foo2ddst: foo2ddst.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2ddst.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2ddst.o $(LIBJBG) $(LDFLAGS) foo2hbpl2: foo2hbpl2.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2hbpl2.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2hbpl2.o $(LIBJBG) $(LDFLAGS) foo2hp: foo2hp.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2hp.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2hp.o $(LIBJBG) $(LDFLAGS) foo2hiperc: foo2hiperc.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2hiperc.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2hiperc.o $(LIBJBG) $(LDFLAGS) foo2lava: foo2lava.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2lava.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2lava.o $(LIBJBG) $(LDFLAGS) foo2oak: foo2oak.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2oak.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2oak.o $(LIBJBG) $(LDFLAGS) foo2qpdl: foo2qpdl.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2qpdl.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2qpdl.o $(LIBJBG) $(LDFLAGS) foo2slx: foo2slx.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2slx.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2slx.o $(LIBJBG) $(LDFLAGS) foo2xqx: foo2xqx.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2xqx.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2xqx.o $(LIBJBG) $(LDFLAGS) foo2zjs: foo2zjs.o $(LIBJBG) - $(CC) $(CFLAGS) -o $@ foo2zjs.o $(LIBJBG) + $(CC) $(CFLAGS) -o $@ foo2zjs.o $(LIBJBG) $(LDFLAGS) foo2ddst-wrapper: foo2ddst-wrapper.in Makefile @@ -581,49 +579,49 @@ ifeq ($(UNAME),Darwin) endif ok: ok.o $(LIBJBG) - $(CC) $(CFLAGS) ok.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) ok.o $(LIBJBG) -o $@ $(LDFLAGS) ddstdecode: ddstdecode.o $(LIBJBG) - $(CC) $(CFLAGS) ddstdecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) ddstdecode.o $(LIBJBG) -o $@ $(LDFLAGS) gipddecode: gipddecode.o $(LIBJBG) - $(CC) $(CFLAGS) gipddecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) gipddecode.o $(LIBJBG) -o $@ $(LDFLAGS) hbpldecode: hbpldecode.o $(LIBJBG) - $(CC) $(CFLAGS) hbpldecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) hbpldecode.o $(LIBJBG) -o $@ $(LDFLAGS) hipercdecode: hipercdecode.o $(LIBJBG) - $(CC) $(CFLAGS) hipercdecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) hipercdecode.o $(LIBJBG) -o $@ $(LDFLAGS) lavadecode: lavadecode.o $(LIBJBG) - $(CC) $(CFLAGS) lavadecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) lavadecode.o $(LIBJBG) -o $@ $(LDFLAGS) oakdecode: oakdecode.o $(LIBJBG) - $(CC) $(CFLAGS) -g oakdecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) -g oakdecode.o $(LIBJBG) -o $@ $(LDFLAGS) opldecode: opldecode.o $(LIBJBG) - $(CC) $(CFLAGS) -g opldecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) -g opldecode.o $(LIBJBG) -o $@ $(LDFLAGS) qpdldecode: qpdldecode.o $(LIBJBG) - $(CC) $(CFLAGS) qpdldecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) qpdldecode.o $(LIBJBG) -o $@ $(LDFLAGS) splcdecode: splcdecode.o $(LIBJBG) - $(CC) $(CFLAGS) splcdecode.o $(LIBJBG) -lz -o $@ + $(CC) $(CFLAGS) splcdecode.o $(LIBJBG) -lz -o $@ $(LDFLAGS) slxdecode: slxdecode.o $(LIBJBG) - $(CC) $(CFLAGS) slxdecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) slxdecode.o $(LIBJBG) -o $@ $(LDFLAGS) xqxdecode: xqxdecode.o $(LIBJBG) - $(CC) $(CFLAGS) xqxdecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) xqxdecode.o $(LIBJBG) -o $@ $(LDFLAGS) zjsdecode: zjsdecode.o $(LIBJBG) - $(CC) $(CFLAGS) zjsdecode.o $(LIBJBG) -o $@ + $(CC) $(CFLAGS) zjsdecode.o $(LIBJBG) -o $@ $(LDFLAGS) command2foo2lava-pjl: command2foo2lava-pjl.o - $(CC) $(CFLAGS) -L/usr/local/lib command2foo2lava-pjl.o -lcups -o $@ + $(CC) $(CFLAGS) -L/usr/local/lib command2foo2lava-pjl.o -lcups -o $@ $(LDFLAGS) command2foo2lava-pjl.o: command2foo2lava-pjl.c - $(CC) $(CFLAGS) -I/usr/local/include -c command2foo2lava-pjl.c + $(CC) $(CPPFLAGS) $(CFLAGS) -I/usr/local/include -c command2foo2lava-pjl.c # # Installation rules @@ -669,8 +667,6 @@ install-test: # -UDEVBIN=$(DESTDIR)/bin/ - install-prog: # # Install driver, wrapper, and development tools @@ -679,7 +675,7 @@ install-prog: $(INSTALL) -c $(PROGS) $(SHELLS) $(BIN)/ if [ "$(BINPROGS)" != "" ]; then \ $(INSTALL) -d $(UDEVBIN); \ - $(INSTALL) -c $(BINPROGS) $(UDEVBIN); \ + $(INSTALL) -c $(BINPROGS) $(BIN); \ fi # # Install gamma correction files. These are just templates, @@ -873,7 +869,7 @@ install-extra: done MODEL=$(PREFIX)/share/cups/model -LOCALMODEL=$(DESTDIR)/usr/local/share/cups/model +LOCALMODEL=$(DESTDIR)/local/share/cups/model MACMODEL=/Library/Printers/PPDs/Contents/Resources PPD=$(PREFIX)/share/ppd VARPPD=/var/lp/ppd @@ -934,9 +930,9 @@ install-ppd: done; \ fi -APPL=$(DESTDIR)/usr/share/applications -OLDAPPL=$(DESTDIR)/usr/share/gnome/apps/System -PIXMAPS=$(DESTDIR)/usr/share/pixmaps +APPL=$(DESTDIR)/share/applications +OLDAPPL=$(DESTDIR)/share/gnome/apps/System +PIXMAPS=$(DESTDIR)/share/pixmaps install-desktop: # @@ -1491,10 +1487,9 @@ ppd: *) driver=foo2zjs;; \ esac; \ echo $$driver - $$printer; \ - ENGINE=../foomatic/foomatic-db-engine; \ PERL5LIB=$$ENGINE/lib \ FOOMATICDB=foomatic-db \ - $$ENGINE/foomatic-ppdfile \ + /usr/bin/foomatic-ppdfile \ -d $$driver -p $$printer \ > PPD/$$printer.ppd; \ done @@ -1950,7 +1945,7 @@ FRC: misc: pksm2bitcmyk phorum-logo.gif pksm2bitcmyk: pksm2bitcmyk.c - $(CC) $(CFLAGS) pksm2bitcmyk.c -lnetpbm -o $@ + $(CC) $(CFLAGS) pksm2bitcmyk.c -lnetpbm -o $@ $(LDFLAGS) phorum-logo.gif: archhp.fig fig2dev -L gif -m.25 archhp.fig | giftrans -t "#ffffff" -o $@ diff --git a/icc2ps/Makefile b/icc2ps/Makefile index f3abb99..215105b 100644 --- a/icc2ps/Makefile +++ b/icc2ps/Makefile @@ -9,7 +9,7 @@ SRC= icc2ps.c xgetopt.c LIB= cmscam97.c cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ cmslut.c cmsmatsh.c cmsmtrx.c cmsnamed.c cmspack.c cmspcs.c cmsps2.c \ cmssamp.c cmswtpnt.c cmsxform.c cmsio0.c cmsvirt.c -CFLAGS= -O3 +CFLAGS+= -O3 INSTALL=install ifeq ($(UNAME),SunOS) INSTALL=/usr/ucb/install @@ -21,7 +21,7 @@ endif all: foo2zjs-icc2ps man foo2zjs-icc2ps: $(SRC) $(LIB) - $(CC) $(CFLAGS) $(SRC) $(LIB) -lm -o $@ + $(CC) $(CPPFLAGS) $(CFLAGS) $(SRC) $(LIB) -lm -o $@ $(LDFLAGS) install: all $(INSTALL) -c foo2zjs-icc2ps $(BIN) -- cgit v1.2.3 From 14782ac9382d765dfa1d7382e148424348f2bc82 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:44 +0200 Subject: Fix icc2ps build Include unistd.h to make sure the swab function is not implicitely declared, also declare _XOPEN_SOURCE to have it available through unistd.h, and therefore declare _GNU_SOURCE to have strcasecmp() and vsnprintf() Gbp-Pq: Name 0002-Fix-icc2ps-build.patch --- icc2ps/Makefile | 4 ++++ icc2ps/cmsio1.c | 1 + 2 files changed, 5 insertions(+) diff --git a/icc2ps/Makefile b/icc2ps/Makefile index 215105b..0aa49ba 100644 --- a/icc2ps/Makefile +++ b/icc2ps/Makefile @@ -10,6 +10,10 @@ LIB= cmscam97.c cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ cmslut.c cmsmatsh.c cmsmtrx.c cmsnamed.c cmspack.c cmspcs.c cmsps2.c \ cmssamp.c cmswtpnt.c cmsxform.c cmsio0.c cmsvirt.c CFLAGS+= -O3 + +# _XOPEN_SOURCE is required for swab() but undefines strcasecmp(), so add _GNU_SOURCE as well: +CFLAGS+= -D_XOPEN_SOURCE -D_GNU_SOURCE + INSTALL=install ifeq ($(UNAME),SunOS) INSTALL=/usr/ucb/install diff --git a/icc2ps/cmsio1.c b/icc2ps/cmsio1.c index 1f02720..9f9d6e4 100644 --- a/icc2ps/cmsio1.c +++ b/icc2ps/cmsio1.c @@ -71,6 +71,7 @@ void xswab(const void *from, void *to, size_t len) #undef STEP } #else +#include #define xswab swab #endif -- cgit v1.2.3 From d33332678d63f198b6594018a45d123c9d2972fd Mon Sep 17 00:00:00 2001 From: Michael Gilbert Date: Tue, 4 Oct 2016 11:43:45 +0200 Subject: Don't build icc2ps but use psicc from liblcms2-utils instead Gbp-Pq: Name 0003-Don-t-build-icc2ps-but-use-psicc-from-liblcms2-utils.patch --- Makefile | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index ec81e21..d1cae6e 100644 --- a/Makefile +++ b/Makefile @@ -196,13 +196,6 @@ FILES = \ foomatic-db/*/*.xml \ foomatic-test \ getweb.in \ - icc2ps/*.[ch] \ - icc2ps/*.1in \ - icc2ps/Makefile \ - icc2ps/AUTHORS \ - icc2ps/COPYING \ - icc2ps/README \ - icc2ps/README.foo2zjs \ osx-hotplug/Makefile \ osx-hotplug/*.m \ osx-hotplug/*.1in \ @@ -393,7 +386,7 @@ JBGOPTS=-m 16 -d 0 -p 92 # Equivalent options for pbmtojbg # The usual build rules # all: all-test $(PROGS) $(BINPROGS) $(SHELLS) getweb \ - all-icc2ps all-osx-hotplug man doc \ + all-osx-hotplug man doc \ all-done all-test: @@ -626,7 +619,7 @@ command2foo2lava-pjl.o: command2foo2lava-pjl.c # # Installation rules # -install: all install-test install-prog install-icc2ps install-osx-hotplug \ +install: all install-test install-prog install-osx-hotplug \ install-extra install-crd install-foo install-ppd \ install-gui install-desktop install-filter \ install-man install-doc @@ -1175,7 +1168,6 @@ uninstall: -rm -f $(MANDIR)/man1/foo2ddst*.1 $(MANDIR)/man1/ddstdecode.1 -rm -f $(MANDIR)/man1/gipddecode.1 -rm -f $(MANDIR)/man1/arm2hpdl.1 $(MANDIR)/man1/usb_printerid.1 - -rm -f $(MANDIR)/man1/foo2zjs-icc2ps.1 -rm -rf /usr/share/foo2zjs/ -rm -rf /usr/share/foo2hp/ -rm -rf /usr/share/foo2oak/ @@ -1202,7 +1194,6 @@ uninstall: -rm -f /usr/bin/gipddecode -rm -f /usr/bin/opldecode -rm -f /usr/bin/rodecode - -rm -f /usr/bin/foo2zjs-icc2ps -rm -f /usr/bin/foo2zjs-pstops -rm -f /usr/bin/command2foo2lava-pjl -rm -f /usr/lib/cups/filter/command2foo2lava-pjl @@ -1247,7 +1238,6 @@ clean: -rm -f *.zjs *.zm *.zc *.zc? *.zc?? *.oak *.pbm *.pksm *.cmyk -rm -f pksm2bitcmyk -rm -f *.icm.*.ps - cd icc2ps; $(MAKE) $@ cd osx-hotplug; $(MAKE) $@ # @@ -1401,7 +1391,7 @@ pprtest-3.oak: FRC # # icc2ps regression tests # -ICC2PS=./icc2ps/foo2zjs-icc2ps +ICC2PS=/usr/bin/psicc icctest: for g in *.icm; do \ for i in 0 1 2 3; do \ @@ -1502,7 +1492,7 @@ oldppd: # Manpage generation. No, I am not interested in "info" files or # HTML documentation. # -man: $(MANPAGES) man-icc2ps man-osx-hotplug +man: $(MANPAGES) man-osx-hotplug $(MANPAGES): macros.man includer-man @@ -1573,7 +1563,6 @@ install-man: man $(INSTALL) -c -m 644 arm2hpdl.1 $(MANDIR)/man1/ $(INSTALL) -c -m 644 usb_printerid.1 $(MANDIR)/man1/ $(INSTALL) -c -m 644 printer-profile.1 $(MANDIR)/man1/ - cd icc2ps; $(MAKE) install-man ifeq ($(UNAME),Darwin) cd osx-hotplug; $(MAKE) install-man endif @@ -1594,10 +1583,9 @@ install-doc: doc GROFF=/usr/local/test/bin/groff GROFF=groff -manual.pdf: $(MANPAGES) icc2ps/foo2zjs-icc2ps.1 osx-hotplug/osx-hplj-hotplug.1 +manual.pdf: $(MANPAGES) osx-hotplug/osx-hplj-hotplug.1 -$(GROFF) -t -man \ `ls $(MANPAGES) \ - icc2ps/foo2zjs-icc2ps.1 \ osx-hotplug/osx-hplj-hotplug.1 \ | sort` \ | ps2pdf - $@ -- cgit v1.2.3 From d846e12b5bc0240d812e52219ddc1c25750773e8 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:47 +0200 Subject: Use the Debian-provided libjbig. Gbp-Pq: Name 0004-Use-the-Debian-provided-libjbig.patch --- Makefile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Makefile b/Makefile index d1cae6e..4410c6f 100644 --- a/Makefile +++ b/Makefile @@ -126,10 +126,6 @@ FILES = \ Makefile \ foo2zjs.c \ foo2zjs.1in \ - jbig.c \ - jbig.h \ - jbig_ar.c \ - jbig_ar.h \ zjsdecode.c \ zjsdecode.1in \ zjs.h \ @@ -286,7 +282,7 @@ MANPAGES+= foo2ddst-wrapper.1 foo2ddst.1 ddstdecode.1 MANPAGES+= gipddecode.1 MANPAGES+= foo2zjs-pstops.1 arm2hpdl.1 usb_printerid.1 MANPAGES+= printer-profile.1 -LIBJBG = jbig.o jbig_ar.o +LIBJBG = -ljbig BINPROGS= ifeq ($(UNAME),Linux) -- cgit v1.2.3 From dda78c8839e8ab2405a693217fbbba0763c7d297 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:48 +0200 Subject: Link against system liblcms1 Gbp-Pq: Name 0005-Link-against-system-liblcms1.patch --- icc2ps/Makefile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/icc2ps/Makefile b/icc2ps/Makefile index 0aa49ba..87f57b5 100644 --- a/icc2ps/Makefile +++ b/icc2ps/Makefile @@ -6,9 +6,7 @@ BIN= $(PREFIX)/bin MANDIR=$(PREFIX)/share/man SRC= icc2ps.c xgetopt.c -LIB= cmscam97.c cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ - cmslut.c cmsmatsh.c cmsmtrx.c cmsnamed.c cmspack.c cmspcs.c cmsps2.c \ - cmssamp.c cmswtpnt.c cmsxform.c cmsio0.c cmsvirt.c +LIB= -llcms CFLAGS+= -O3 # _XOPEN_SOURCE is required for swab() but undefines strcasecmp(), so add _GNU_SOURCE as well: @@ -55,7 +53,7 @@ install-man: man clean: rm -f *.o foo2zjs-icc2ps *.1 -foo2zjs-icc2ps: icc34.h lcms.h +foo2zjs-icc2ps: icc34.h regress: all @./foo2zjs-icc2ps a b 2>&1 | grep "little cms P" -- cgit v1.2.3 From 101d892b316bfbf35d2f704b95ef664d1ac73382 Mon Sep 17 00:00:00 2001 From: Luca Capello Date: Tue, 4 Oct 2016 11:43:49 +0200 Subject: Correct the udev rules: a) remove KERNEL=="lp*", as usblp is now blacklisted by CUPS (it will work without CUPS too). b) Replace paths: /etc/hotplug/usb/ by no path, as the binaries are shipped in /lib/udev/ c) Drop the MODE specification d) Add ACTION=="ADD", otherwise the firmware script runs after unplugging as well Author: Didier Raboud Author: Peter De Wachter Gbp-Pq: Name 0006-Correct-the-udev-rules.patch --- hplj10xx.rules | 58 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/hplj10xx.rules b/hplj10xx.rules index ee0295d..3d69ca3 100644 --- a/hplj10xx.rules +++ b/hplj10xx.rules @@ -2,38 +2,42 @@ # hplj10xx.rules.old: udev equal or after 1.30 # #Own udev rule for HP Laserjet 1000 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="hp LaserJet 1000", NAME="usb/%k", \ - SYMLINK+="hplj1000-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1000" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="hp LaserJet 1000", \ + SYMLINK+="hplj1000-%n", RUN+="hplj1000" #Own udev rule for HP Laserjet 1005 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="hp LaserJet 1005 series", NAME="usb/%k", \ - SYMLINK+="hplj1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1005" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="hp LaserJet 1005 series", \ + SYMLINK+="hplj1005-%n", RUN+="hplj1005" #Own udev rule for HP Laserjet 1018 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="HP LaserJet 1018", NAME="usb/%k", \ - SYMLINK+="hplj1018-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1018" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet 1018", \ + SYMLINK+="hplj1018-%n", RUN+="hplj1018" #Own udev rule for HP Laserjet 1020 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="HP LaserJet 1020", NAME="usb/%k", \ - SYMLINK+="hplj1020-%n", MODE="0666", RUN+="/etc/hotplug/usb/hplj1020" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet 1020", \ + SYMLINK+="hplj1020-%n", RUN+="hplj1020" #Own udev rule for HP Laserjet P1005 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="HP LaserJet P1005", NAME="usb/%k", \ - SYMLINK+="hpljP1005-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1005" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1005", \ + SYMLINK+="hpljP1005-%n", RUN+="hpljP1005" #Own udev rule for HP Laserjet P1006 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="HP LaserJet P1006", NAME="usb/%k", \ - SYMLINK+="hpljP1006-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1006" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1006", \ + SYMLINK+="hpljP1006-%n", RUN+="hpljP1006" #Own udev rule for HP Laserjet P1007 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="HP LaserJet P1007", NAME="usb/%k", \ - SYMLINK+="hpljP1007-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1007" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1007", \ + SYMLINK+="hpljP1007-%n", RUN+="hpljP1007" #Own udev rule for HP Laserjet P1008 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="HP LaserJet P1008", NAME="usb/%k", \ - SYMLINK+="hpljP1008-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1008" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1008", \ + SYMLINK+="hpljP1008-%n", RUN+="hpljP1008" #Own udev rule for HP Laserjet P1505 -KERNEL=="lp*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ - ATTRS{product}=="HP LaserJet P1505", NAME="usb/%k", \ - SYMLINK+="hpljP1505-%n", MODE="0666", RUN+="/etc/hotplug/usb/hpljP1505" +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1505", \ + SYMLINK+="hpljP1505-%n", RUN+="hpljP1505" +#Own udev rule for HP Laserjet P1505n +ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="03f0", \ + ATTRS{product}=="HP LaserJet P1505n", \ + SYMLINK+="hpljP1505n-%n", RUN+="hpljP1505n" -- cgit v1.2.3 From 61bd253765178764462980f621ee7a35e4e98654 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:50 +0200 Subject: Remove 'Encoding' from .desktop file Gbp-Pq: Name 0007-Remove-Encoding-from-.desktop-file.patch --- hplj1020.desktop | 1 - 1 file changed, 1 deletion(-) diff --git a/hplj1020.desktop b/hplj1020.desktop index 121ab2b..49f9705 100644 --- a/hplj1020.desktop +++ b/hplj1020.desktop @@ -1,5 +1,4 @@ [Desktop Entry] -Encoding=UTF-8 Name=Reactivate HP LaserJet 1018/1020 after reloading paper Comment=Click the button in this program when your printer ran out of paper and you have refilled the paper # zExec=usb_printerid /dev/usb/lp0 -- cgit v1.2.3 From cacffbae744642f5f081069a25c4df6e76df9ad7 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:51 +0200 Subject: Do not display the icon by default See #579154 Gbp-Pq: Name 0008-Do-not-display-the-icon-by-default.patch --- hplj1020.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/hplj1020.desktop b/hplj1020.desktop index 49f9705..76adb31 100644 --- a/hplj1020.desktop +++ b/hplj1020.desktop @@ -9,3 +9,4 @@ Icon=/usr/share/pixmaps/hplj1020_icon.png StartupNotify=true Categories=System; X-Desktop-File-Install-Version=0.10 +NoDisplay=true -- cgit v1.2.3 From f4dc3d05e214a23ab316905daf8ab8d28659a0e6 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:52 +0200 Subject: Launch the _gui.tcl directly (instead of launching wish outside of it), avoids a lintian warning. Gbp-Pq: Name 0009-Launch-the-_gui.tcl-directly-instead-of-launching-wi.patch --- hplj1020.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hplj1020.desktop b/hplj1020.desktop index 76adb31..6dd0b3f 100644 --- a/hplj1020.desktop +++ b/hplj1020.desktop @@ -2,7 +2,7 @@ Name=Reactivate HP LaserJet 1018/1020 after reloading paper Comment=Click the button in this program when your printer ran out of paper and you have refilled the paper # zExec=usb_printerid /dev/usb/lp0 -Exec=wish /usr/share/foo2zjs/hplj10xx_gui.tcl +Exec=/usr/share/foo2zjs/hplj10xx_gui.tcl Terminal=false Type=Application Icon=/usr/share/pixmaps/hplj1020_icon.png -- cgit v1.2.3 From 65ba8bca6f1c039b53f12ace3f2f67a8196c2062 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:53 +0200 Subject: Correct the path for the usb_printerid program Gbp-Pq: Name 0010-Correct-the-path-for-the-usb_printerid-program.patch --- hplj1000 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hplj1000 b/hplj1000 index 323069c..bb87a79 100755 --- a/hplj1000 +++ b/hplj1000 @@ -60,7 +60,7 @@ FWDIR=/usr/share/foo2zjs/firmware # [snip] # # Mount all other filesystems (except for NFS and /proc, which is already # -PRINTERID=/bin/usb_printerid +PRINTERID=`which usb_printerid` # # Figure out how to log our messages -- cgit v1.2.3 From cc09c37ff4bd9737679b32a4ebb2185ca62fc475 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:54 +0200 Subject: Improve getweb also for installing the firmware Fix the icm file installing code to create inexistant folders Gbp-Pq: Name 0011-Improve-getweb-also-for-installing-the-firmware.patch --- getweb.in | 80 +++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 22 deletions(-) diff --git a/getweb.in b/getweb.in index 5215e02..11f2aa6 100755 --- a/getweb.in +++ b/getweb.in @@ -1,8 +1,10 @@ #!/bin/sh +set -e + # # (c) Copyright Rick Richardson 2008 -# +# This version has been modified by Debian # # PLEASE don't remove the copyright statements. They should @@ -12,6 +14,13 @@ VERSION='$Id: getweb.in,v 1.114 2015/02/12 00:22:02 rick Exp $' WGETOPTS="--passive-ftp -q" +ARM2HPDL="/usr/bin/arm2hpdl" + +if [ $(id -ru) -ne 0 ]; then + echo "You need to be root" + exit 1 +fi + usage() { cat </dev/null` +WGET=`which wget` if [ "$SYSTEM" = Darwin -a "$WGET" = "" ] then WGETOPTS= @@ -117,6 +124,20 @@ then } fi +putfw() { + inputname=$1 + outputname=$2 + $ARM2HPDL $inputname > /usr/share/foo2zjs/firmware/$outputname + rm $inputname +} + +puticm() { + drivername=$1 + icmfolder=/usr/share/"$drivername"/icm/ + [ -d $icmfolder ] || mkdir -p $icmfolder + mv *.icm $icmfolder +} + # # Download a .EXE file from the web, unzip it, and extract the # files we want @@ -163,6 +184,7 @@ getone() { #lj1488en.exe \ #sihp1000.img copyright "(c) Copyright Hewlett-Packard 2001" + putfw sihp1000.img sihp1000.dl ;; lj1005|1005) gettgz \ @@ -178,12 +200,14 @@ getone() { http://foo2zjs.rkkda.com/firmware sihpP1005.tar.gz \ "" copyright "(c) Copyright Hewlett-Packard 2009" + putfw sihp1005.img sihp1005.dl ;; lj1018|1018) gettgz \ http://foo2zjs.rkkda.com/firmware sihp1018.tar.gz \ "" copyright "(c) Copyright Hewlett-Packard 2005" + putfw sihp1018.img sihp1018.dl ;; lj1020|1020) # http://ftp.hp.com/pub/softlib/software8/COL14041/lj-39322-2/hp_LJ_1020-1022_Full_Solution.exe @@ -191,24 +215,28 @@ getone() { http://foo2zjs.rkkda.com/firmware sihp1020.tar.gz \ "" copyright "(c) Copyright Hewlett-Packard 2005" + putfw sihp1020.img sihp1020.dl ;; [pP]100[57]) gettgz \ http://foo2zjs.rkkda.com/firmware sihpP1005.tar.gz \ "" copyright "(c) Copyright Hewlett-Packard 2009" + putfw sihpP1005.img sihpP1005.dl ;; [pP]100[68]) gettgz \ http://foo2zjs.rkkda.com/firmware sihpP1006.tar.gz \ "" copyright "(c) Copyright Hewlett-Packard 2009" + putfw sihpP1006.img sihpP1006.dl ;; [pP]1505) gettgz \ http://foo2zjs.rkkda.com/firmware sihpP1505.tar.gz \ "" copyright "(c) Copyright Hewlett-Packard 2009" + putfw sihpP1505.img sihpP1505.dl ;; 2200dl|2200) if true; then @@ -221,6 +249,7 @@ getone() { "*.icm" fi copyright "(c) Copyright Minolta-QMS 1999" + puticm foo2zjs ;; 2300dl|2300) if true; then @@ -236,6 +265,7 @@ getone() { http://foo2zjs.rkkda.com/icm km2430.tar.gz \ "" copyright "(c) Copyright Minolta-QMS 2001" + puticm foo2zjs ;; 2300dl_fw) # 2300DL firmware upgrade to v2.55 @@ -264,12 +294,14 @@ getone() { done fi copyright "(c) Copyright Minolta-QMS 1998" + puticm foo2zjs ;; 2430) gettgz \ http://foo2zjs.rkkda.com/icm km2430.tar.gz \ "" copyright "(c) Copyright Konica Minolta 2003" + puticm foo2zjs ;; 2530|2490|6115|2480|1600w|1680|1690|4690|110|6121) gettgz \ @@ -281,6 +313,7 @@ getone() { http://foo2lava.rkkda.com/icm km-1600.tar.gz \ "" copyright "(c) Copyright Rick Richardson 2009. All Rights Reserved" + puticm foo2lava ;; 1500) gettgz \ @@ -292,12 +325,14 @@ getone() { "" copyright "(c) Copyright Hewlett-Packard 2003" copyright "(c) Copyright Rick Richardson 2006. All Rights Reserved" + puticm foo2oak ;; 1025) gettgz \ http://foo2zjs.rkkda.com/icm hp-cp1025.tar.gz \ "" copyright "(c) Copyright Rick Richardson 2010. All Rights Reserved" + puticm foo2zjs ;; 1215|1600|2600*) gettgz \ @@ -312,6 +347,7 @@ getone() { http://foo2hp.rkkda.com/icm hp1215.tar.gz \ "" copyright "(c) Copyright Rick Richardson 2008. All Rights Reserved" + puticm foo2hp ;; 300|310|315|325|360|365|2160|3160|3175|3185|6110) gettgz \ @@ -322,6 +358,7 @@ getone() { http://foo2qpdl.rkkda.com/icm samclp315.tar.gz \ "" copyright "(c) Copyright Rick Richardson 2008. All Rights Reserved" + puticm foo2qpdl ;; 600|610) ;; @@ -331,6 +368,7 @@ getone() { http://foo2slx.rkkda.com/icm lexc500.tar.gz \ "" copyright "(c) Copyright Lexmark 2006" + puticm foo2slx ;; oki) @@ -346,48 +384,56 @@ getone() { mv "$base.ICM" "$base.icm" done copyright "(c) Copyright Okidata 2005, 2006" + puticm foo2hiperc ;; 301) gettgz \ http://foo2hiperc.rkkda.com/icm okic301.tar.gz \ "" copyright "(c) Copyright Okidata 2012" + puticm foo2hiperc ;; c310) gettgz \ http://foo2hiperc.rkkda.com/icm okic310.tar.gz \ "" copyright "(c) Copyright Okidata 2010" + puticm foo2hiperc ;; c511) gettgz \ http://foo2hiperc.rkkda.com/icm okic511.tar.gz \ "" copyright "(c) Copyright Okidata 2012" + puticm foo2hiperc ;; c810) gettgz \ http://foo2hiperc.rkkda.com/icm okic810.tar.gz \ "" copyright "(c) Copyright Okidata 2012" + puticm foo2hiperc ;; 3100|3200|5100|5150|5200|5250) gettgz \ http://foo2hiperc.rkkda.com/icm okic3200.tar.gz \ "" copyright "(c) Copyright Okidata 2005" + puticm foo2hiperc ;; 3300|3400|3530) gettgz \ http://foo2hiperc.rkkda.com/icm okic3400.tar.gz \ "" copyright "(c) Copyright Okidata 2006" + puticm foo2hiperc ;; 5500|5600|5800|160) gettgz \ http://foo2hiperc.rkkda.com/icm okic5600.tar.gz \ "" copyright "(c) Copyright Okidata 2006" + puticm foo2hiperc ;; xPPD) @@ -443,23 +489,6 @@ getone() { # | sed -e 's/\(^\*NickName.*\)"/\1 (foo2zjs recommended)"/' done ;; - update) - url=${URLZJS} - file=foo2zjs.tar.gz - wget $WGETOPTS -O $file $url/$file || - error "Couldn't download $url/$exefile" - mv getweb getweb.old - HERE=`pwd` - cd .. - tar zxf $HERE/$file - cd $HERE - echo "The tarball is extracted and the current directory is up to date." - echo -e "Remove the tarball (y/n)? \c" - read ans - if [ "$ans" = y ]; then - rm -f $file - fi - ;; "") usage ;; @@ -474,6 +503,10 @@ if [ $# = 0 ]; then usage fi +OLDPWD=`pwd` +NEWPWD=`mktemp --tmpdir --directory foo2zjs.XXXXXX` +cd "$NEWPWD" + for i in $* do case "$1" in @@ -518,3 +551,6 @@ do ;; esac done + +cd "$OLDPWD" +rmdir "$NEWPWD" -- cgit v1.2.3 From e3ea91b5a7bab5a11b8b1573f4cbbddb1c2aaa50 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:55 +0200 Subject: Use the same firmware folder for all HP LJ printers Gbp-Pq: Name 0012-Use-the-same-firmware-folder-for-all-HP-LJ-printers.patch --- hplj1000 | 6 ------ hplj10xx.conf | 10 +++++----- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/hplj1000 b/hplj1000 index bb87a79..2f22631 100755 --- a/hplj1000 +++ b/hplj1000 @@ -90,37 +90,31 @@ case "$0" in MODEL=P1005; FWMODEL=$MODEL USB1=0x03f0 #Vendor USB2=0x3d17 #Model - FWDIR=/usr/share/foo2xqx/firmware ;; *P1006) MODEL=P1006; FWMODEL=$MODEL USB1=0x03f0 #Vendor USB2=0x3e17 #Model - FWDIR=/usr/share/foo2xqx/firmware ;; *P1007) MODEL=P1007; FWMODEL=P1005 # Alias USB1=0x03f0 #Vendor USB2=0x4817 #Model - FWDIR=/usr/share/foo2xqx/firmware ;; *P1008) MODEL=P1008; FWMODEL=P1006 # Alias USB1=0x03f0 #Vendor USB2=0x4917 #Model - FWDIR=/usr/share/foo2xqx/firmware ;; *P1505) MODEL=P1505; FWMODEL=$MODEL USB1=0x03f0 #Vendor USB2=0x3f17 #Model - FWDIR=/usr/share/foo2xqx/firmware ;; *P1505n) MODEL=P1505n; FWMODEL=$MODEL USB1=0x03f0 #Vendor USB2=0x4017 #Model - FWDIR=/usr/share/foo2xqx/firmware ;; *1000) MODEL=1000; FWMODEL=$MODEL diff --git a/hplj10xx.conf b/hplj10xx.conf index a2083bb..fe32eea 100644 --- a/hplj10xx.conf +++ b/hplj10xx.conf @@ -15,35 +15,35 @@ attach 100 { match "vendor" "0x03f0"; match "product" "0x3d17"; - action "cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/$device-name"; + action "cat /lib/firmware/hp/sihpP1005.dl > /dev/$device-name"; }; # Firmware download HP LaserJet P1006 printer attach 100 { match "vendor" "0x03f0"; match "product" "0x3e17"; - action "cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/$device-name"; + action "cat /lib/firmware/hp/sihpP1006.dl > /dev/$device-name"; }; # Firmware download HP LaserJet P1007 printer attach 100 { match "vendor" "0x03f0"; match "product" "0x4817"; - action "cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/$device-name"; + action "cat /lib/firmware/hp/sihpP1005.dl > /dev/$device-name"; }; # Firmware download HP LaserJet P1008 printer attach 100 { match "vendor" "0x03f0"; match "product" "0x4917"; - action "cat /usr/share/foo2xqx/firmware/sihpP1006.dl > /dev/$device-name"; + action "cat /lib/firmware/hp/sihpP1006.dl > /dev/$device-name"; }; # Firmware download HP LaserJet P1505 printer attach 100 { match "vendor" "0x03f0"; match "product" "0x3f17"; - action "cat /usr/share/foo2xqx/firmware/sihpP1505.dl > /dev/$device-name"; + action "cat /lib/firmware/hp/sihpP1505.dl > /dev/$device-name"; }; # Firmware download HP LaserJet 1000 printer -- cgit v1.2.3 From 2903d124fffd96cd67cea33393fdf588d262af20 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:56 +0200 Subject: Firmware directory is /lib/firmware/hp/ (Closes: #517957) Gbp-Pq: Name 0013-Firmware-directory-is-lib-firmware-hp-Closes-517957.patch --- arm2hpdl.1in | 2 +- getweb.in | 2 +- hplj1000 | 2 +- usb_printerid.1in | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arm2hpdl.1in b/arm2hpdl.1in index 213d21b..33e6ccd 100644 --- a/arm2hpdl.1in +++ b/arm2hpdl.1in @@ -31,7 +31,7 @@ $ arm2hpdl sihp1005.img > sihp1005.dl .SH FILES .BR /usr/bin/arm2hpdl, -.BR /usr/share/foo2*/firmware/ +.BR /lib/firmware/hp/* .SH SEE ALSO .BR foo2zjs (1) .SH "AUTHOR" diff --git a/getweb.in b/getweb.in index 11f2aa6..3322de6 100755 --- a/getweb.in +++ b/getweb.in @@ -127,7 +127,7 @@ fi putfw() { inputname=$1 outputname=$2 - $ARM2HPDL $inputname > /usr/share/foo2zjs/firmware/$outputname + $ARM2HPDL $inputname > /lib/firmware/hp/$outputname rm $inputname } diff --git a/hplj1000 b/hplj1000 index 2f22631..21ca570 100755 --- a/hplj1000 +++ b/hplj1000 @@ -48,7 +48,7 @@ USB_BACKEND=/usr/lib/cups/backend/usb # # Directory to find downloadable HP firmware files sihpMMMM.dl # -FWDIR=/usr/share/foo2zjs/firmware +FWDIR=/lib/firmware/hp # # Program used to determine USB printer id information diff --git a/usb_printerid.1in b/usb_printerid.1in index 0454ef6..34817e4 100644 --- a/usb_printerid.1in +++ b/usb_printerid.1in @@ -26,7 +26,7 @@ GET_DEVICE_ID string: MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS:PRINTER;\e DES:HP LaserJet 1020; -# cp /usr/share/foo2zjs/firmware/sihp1020.dl /dev/usb/lp0 +# cp /lib/firmware/hp/sihp1020.dl /dev/usb/lp0 # usb_printerid /dev/usb/lp0 GET_DEVICE_ID string: @@ -37,7 +37,7 @@ DES:HP LaserJet 1020;FWVER:20050309; .SH FILES .BR /usr/bin/usb_printerid, -.BR /usr/share/foo2*/firmware/* +.BR /lib/firmware/hp/* .SH SEE ALSO .BR arm2hpdl (1) .SH "AUTHOR" -- cgit v1.2.3 From 6f0832bd4fc30515034eb3be8f3db1874da19084 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:57 +0200 Subject: Don't delete printer-profile in clean target Gbp-Pq: Name 0014-Don-t-delete-printer-profile-in-clean-target.patch --- printer-profile.in | 296 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 printer-profile.in diff --git a/printer-profile.in b/printer-profile.in new file mode 100644 index 0000000..5363847 --- /dev/null +++ b/printer-profile.in @@ -0,0 +1,296 @@ +#!/bin/sh + +PROGNAME="$0" + +usage() { + cat <&2 + exit 1 +} + +debug() { + if [ $DEBUG -ge $1 ]; then + echo "`basename $PROGNAME`: $2" >&2 + fi +} + +# +# Execute a command as root +# +root() { + if [ -x /usr/bin/root ]; then + /usr/bin/root $@ + else + su -c "$*" + fi +} + +# +# trap on error +# +trap "exit 1" ERR + +# +# Process the options +# +REMPRINT=amd +REMSCAN=mac +REMSCAN=none +RGB=rgb +PATCHES=196 #Per page! +BPP=1 +RES= +DEBUG=0 +while getopts "b:r:P:S:D:h?" opt +do + case $opt in + b) BPP="$OPTARG";; + r) RES="$OPTARG";; + P) REMPRINT="$OPTARG";; + S) REMSCAN="$OPTARG";; + D) DEBUG="$OPTARG";; + h|\?) usage;; + esac +done +shift `expr $OPTIND - 1` + +# +# Main Program +# +if [ $# -lt 2 ]; then + usage +fi + +MANUF="$1" +MODEL="$2" +if [ $# -ge 3 ]; then + RGB="$3" +fi +if [ $# -ge 4 ]; then + PATCHES="$4" +fi +INK="$5" + +BPP_b="-b$BPP" +RES_r= +if [ "$RES" != "" ]; then + RES_r="-r$RES" +fi + +case "$MANUF" in +km) + MANUF=km + case "$MODEL" in + *1600*) + FOO=foo2lava + WRAPPER="foo2lava-wrapper $RES_r -z2 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp1" + ;; + *2530*) + FOO=foo2lava + WRAPPER="foo2lava-wrapper $RES_r -z0 -c -C10 -Gnone.icm" + OUT="nc 192.168.1.13 9100 < xxx.prn" + ;; + *2300*) + FOO=foo2zjs + WRAPPER="foo2zjs-wrapper $RES_r -c -C10 -Gnone.icm" + OUT="nc 192.168.1.10 9100 < xxx.prn" + ;; + *) + usage + ;; + esac + ;; +sam*) + MANUF=sam + FOO=foo2qpdl + case "$MODEL" in + *300*) + WRAPPER="foo2qpdl-wrapper $RES_r -z0 -c -C10 -Gnone.icm" + OUT="nc 192.168.1.11 9100 < xxx.prn" + ;; + *315*) + WRAPPER="foo2qpdl-wrapper $RES_r -z2 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp1" + ;; + *) + usage + ;; + esac + ;; +hp*) + MANUF=hp + FOO=foo2hp + case "$MODEL" in + *2600*) + WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z0 -c -C10 -Gnone.icm" + OUT="nc 192.168.1.12 9100 < xxx.prn" + ;; + *cp1215*) + WRAPPER="foo2hp2600-wrapper $RES_r $BPP_b -z1 -c -C10 -Gnone.icm" + OUT="root cp xxx.prn /dev/usb/lp2" + ;; + *) + usage + ;; + esac + ;; +*) + usage + ;; +esac + +mrp="$MANUF-$MODEL-$RGB-$PATCHES" +if [ "$INK" != "" ]; then + mrp="$mrp-ink$INK" +fi +if [ "$BPP" != "" ]; then + mrp="$mrp-bpp$BPP" +fi +if [ "$RES" != "" ]; then + mrp="$mrp-$RES" +fi +echo "$mrp" + + +BETABIN=~/src/Argyll_V1.1.0_Beta/bin +if [ ! -x $BETABIN/printtarg ]; then + error "No beta bin in $BETABIN!" +fi + +targen_opts= +case "$RGB" in +rgb|RGB) targen_opts="$targen_opts -d3";; +cmyk|CMYK) targen_opts="$targen_opts -d4";; +*) error "Parm2: Must be rgb or cmyk";; +esac + +targen_opts="$targen_opts -f$PATCHES" + +if [ "$INK" != "" ]; then + targen_opts="$targen_opts -l$INK" +fi + +echo +echo "******************************** targen ********************************" +echo "targen $targen_opts $mrp" +if ! targen $targen_opts $mrp >$mrp.err1; then + cat $mrp.err1 + exit 1 +fi + +echo +echo "******************************* printtarg ******************************" +echo "$BETABIN/printtarg -h -v -iCM -p Letter -R0 $mrp" +$BETABIN/printtarg -h -v -iCM -p Letter -R0 $mrp + +evince $mrp.ps & + +echo +echo "******************************* print it *******************************" +echo "$WRAPPER" +case "$REMPRINT" in +''|none) + $WRAPPER <$mrp.ps >$mrp.prn + ;; +*) + ssh $REMPRINT "$WRAPPER" <$mrp.ps >$mrp.prn + ;; +esac +ls -l $mrp.prn +echo -n "Print it? [y|n]? " +read yes +case "$yes" in +y|Y) + cp $mrp.prn xxx.prn + echo " $OUT" + eval $OUT + rm -f xxx.prn +esac + +echo +echo "******************************* chartread ******************************" +case "$REMSCAN" in +''|none) + echo "$BETABIN/chartread $mrp" + $BETABIN/chartread $mrp + ;; +*) + echo "scp $mrp.ti2 mac:" + scp $mrp.ti2 mac: + echo "$BETABIN/chartread $mrp" + echo -n "Scanned on remote system $REMSCAN? [y/n]? " + read yes + case "$yes" in + y|Y) + scp $REMSCAN:$mrp.ti3 . + ;; + esac + ;; +esac + +echo +echo "******************************** colprof *******************************" +case $RGB in +rgb) + echo "colprof -v -D\"$mrp\" -qm -cmt -dpp $mrp" + colprof -v -D"$mrp" -qm -cmt -dpp $mrp + ;; +cymk) + echo "colprof -v -D\"$mrp\" -qm -cmt -dpp -kr $mrp" + colprof -v -D"$mrp" -qm -cmt -dpp -kr $mrp + ;; +esac + +root cp $mrp.icc /usr/share/$FOO/icm/testing.icm +echo "/usr/share/$FOO/icm/testing.icm created!" +ls -l /usr/share/$FOO/icm/ -- cgit v1.2.3 From bc70c991d52641d95706aa234b876cfe9e5d8567 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:58 +0200 Subject: Fixes errors and hyphen-as-minus in manpages Gbp-Pq: Name 0015-Fixes-errors-and-hyphen-as-minus-in-manpages.patch --- foo2hbpl2-wrapper.1in | 18 +++++++++--------- foo2hbpl2.1in | 18 +++++++++--------- foo2hiperc-wrapper.1in | 18 +++++++++--------- foo2hiperc.1in | 26 +++++++++++++------------- foo2hp.1in | 18 +++++++++--------- foo2hp2600-wrapper.1in | 18 +++++++++--------- foo2lava-wrapper.1in | 18 +++++++++--------- foo2lava.1in | 18 +++++++++--------- foo2oak-wrapper.1in | 18 +++++++++--------- foo2oak.1in | 18 +++++++++--------- foo2qpdl-wrapper.1in | 22 +++++++++++----------- foo2qpdl.1in | 20 ++++++++++---------- foo2slx-wrapper.1in | 16 ++++++++-------- foo2slx.1in | 18 +++++++++--------- foo2xqx-wrapper.1in | 12 ++++++------ foo2xqx.1in | 10 +++++----- foo2zjs-wrapper.1in | 28 +++++++++++++++------------- foo2zjs.1in | 26 ++++++++++++++------------ gipddecode.1in | 2 +- hbpldecode.1in | 14 +++++++------- hipercdecode.1in | 4 ++-- icc2ps/foo2zjs-icc2ps.1in | 26 +++++++++++--------------- lavadecode.1in | 4 ++-- macros.man | 22 +++++++++++----------- oakdecode.1in | 2 +- opldecode.1in | 12 ++++++------ osx-hotplug/osx-hplj-hotplug.1in | 2 +- printer-profile.1in | 10 +++++----- qpdldecode.1in | 8 ++++---- slxdecode.1in | 2 +- xqxdecode.1in | 4 ++-- zjsdecode.1in | 2 +- 32 files changed, 227 insertions(+), 227 deletions(-) diff --git a/foo2hbpl2-wrapper.1in b/foo2hbpl2-wrapper.1in index 0fd1570..ba55b5c 100644 --- a/foo2hbpl2-wrapper.1in +++ b/foo2hbpl2-wrapper.1in @@ -44,7 +44,7 @@ Print in color (else monochrome). Color correction mode [0]. .TS n l . -10 ICM color profile (using -G *.icm file) +10 ICM color profile (using \-G *.icm file) .TE .TP .BI \-d\0 duplex @@ -123,9 +123,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2hbpl2\fP @@ -144,13 +144,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. +Send the logical clipping values from \-u/-l in the ZjStream. \fBfoo2hbpl2-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -176,7 +176,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -221,7 +221,7 @@ examine it, and then print it using a RAW print queue: .nf foo2hbpl2-wrapper testpage.ps > testpage.prn hbpl2decode < testpage.prn -lpr -P raw testpage.prn +lpr \-P raw testpage.prn .fi .RE .P @@ -229,7 +229,7 @@ Create a color ZjStream stream from a Postscript document: .RS .nf -foo2hbpl2-wrapper -c testpage.ps > testpage.prn +foo2hbpl2-wrapper \-c testpage.ps > testpage.prn .fi .RE diff --git a/foo2hbpl2.1in b/foo2hbpl2.1in index 0d9590a..86e4de7 100644 --- a/foo2hbpl2.1in +++ b/foo2hbpl2.1in @@ -130,7 +130,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -178,10 +178,10 @@ Create a black and white ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hbpl2 \-r1200x600 \-g10200x6600 \-p1 >testpage.zm .fi .RE .P @@ -189,10 +189,10 @@ Create a color ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hbpl2 \-r1200x600 \-g10200x6600 \-p1 >testpage.zc .fi .RE diff --git a/foo2hiperc-wrapper.1in b/foo2hiperc-wrapper.1in index 3601f56..0dca96b 100644 --- a/foo2hiperc-wrapper.1in +++ b/foo2hiperc-wrapper.1in @@ -37,7 +37,7 @@ Print in color (else monochrome). Color correction mode [0]. .TS n l . -10 ICM color profile (using -G *.icm file) +10 ICM color profile (using \-G *.icm file) .TE .TP .BI \-d\0 duplex @@ -66,7 +66,7 @@ Paper size code to send to printer [2]. box; | n l | n l. 1 A4 2 letter -3 legal - - +3 legal \- \- 5 A5 6 B5jis 7 A6 8 env Monarch 9 env DL 10 env C5 @@ -100,9 +100,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2hiperc\fP @@ -117,13 +117,13 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [varies with paper size]. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the HIPERC stream. +Send the logical clipping values from \-u/-l in the HIPERC stream. \fBfoo2hiperc-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -145,7 +145,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -198,7 +198,7 @@ Create a color HIPERC stream from a Postscript document: .RS .nf -foo2hiperc-wrapper -c testpage.ps > testpage.hc +foo2hiperc-wrapper \-c testpage.ps > testpage.hc .fi .RE diff --git a/foo2hiperc.1in b/foo2hiperc.1in index 6496984..dca0143 100644 --- a/foo2hiperc.1in +++ b/foo2hiperc.1in @@ -11,13 +11,13 @@ foo2hiperc \- Convert Ghostscript pbmraw or bitcmyk format into a HIPERC printer stream .SH SYNOPSIS .B foo2hiperc -.RI [ options "] <" pbmraw-file " >" hiperc-file +.RI [ options "] <" pbmraw\-file " >" hiperc\-file .sp 1 .B foo2hiperc -.RI [ options "] <" bitcmyk-file " >" hiperc-file +.RI [ options "] <" bitcmyk\-file " >" hiperc\-file .sp 1 .B foo2hiperc -.RI [ options "] <" pksmraw-file " >" hiperc-file +.RI [ options "] <" pksmraw\-file " >" hiperc\-file .SH DESCRIPTION .B foo2hiperc converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome @@ -63,7 +63,7 @@ Paper code to send to printer [2]. box; | n l | n l. 1 A4 2 letter -3 legal - - +3 legal \- \- 5 A5 6 B5jis 7 A6 8 env Monarch 9 env DL 10 env C5 @@ -108,7 +108,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the HIPERC stream [3]. +Send logical clipping amounts implied by \-u/-l in the HIPERC stream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -147,10 +147,10 @@ Create a black and white HIPERC stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hiperc \-r600x600 \-g5100x6600 \-p0 >testpage.zm .fi .RE .P @@ -158,10 +158,10 @@ Create a color HIPERC stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hiperc \-r600x600 \-g5100x6600 \-p0 >testpage.zc .fi .RE diff --git a/foo2hp.1in b/foo2hp.1in index d037311..f4e5e49 100644 --- a/foo2hp.1in +++ b/foo2hp.1in @@ -123,7 +123,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -171,10 +171,10 @@ Create a black and white ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hp \-r600x600 \-g5100x6600 \-p1 >testpage.zm .fi .RE .P @@ -182,10 +182,10 @@ Create a color ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hp \-r600x600 \-g5100x6600 \-p1 >testpage.zc .fi .RE diff --git a/foo2hp2600-wrapper.1in b/foo2hp2600-wrapper.1in index a71617d..26b69ae 100644 --- a/foo2hp2600-wrapper.1in +++ b/foo2hp2600-wrapper.1in @@ -107,9 +107,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2hp\fP @@ -128,13 +128,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. +Send the logical clipping values from \-u/-l in the ZjStream. \fBfoo2hp2600-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -147,7 +147,7 @@ l l. .BI \-O\0 parm=val Alignment of CMYK. \fIparm\fP is c, m, y, or k. \fIval\fP is in rows. Multiple options are allowed. -The default is "-Oc=0 -Om=0 -Oy=0 -Ok=0". +The default is "\-Oc=0 \-Om=0 \-Oy=0 \-Ok=0". .TP .BI \-P Do not send START_PLANE codes on monochrome output. May be @@ -168,7 +168,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -214,7 +214,7 @@ examine it, and then print it using a RAW print queue: .nf foo2hp2600-wrapper testpage.ps > testpage.zm zjsdecode < testpage.zm -lpr -P raw testpage.zm +lpr \-P raw testpage.zm .fi .RE .P @@ -222,7 +222,7 @@ Create a color ZjStream stream from a Postscript document: .RS .nf -foo2hp2600-wrapper -c testpage.ps > testpage.zc +foo2hp2600-wrapper \-c testpage.ps > testpage.zc .fi .RE diff --git a/foo2lava-wrapper.1in b/foo2lava-wrapper.1in index f02d899..60629ea 100644 --- a/foo2lava-wrapper.1in +++ b/foo2lava-wrapper.1in @@ -42,7 +42,7 @@ n l . 1 Photos (using m2300w CRDs) 2 Photos and text (using m2300w CRDs) 3 Graphics and text (using m2300w CRDs) -10 ICM color profile (using -G *.icm file) +10 ICM color profile (using \-G *.icm file) .TE .TP .BI \-d\0 duplex @@ -108,9 +108,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2lava\fP @@ -129,13 +129,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the LAVAFLOW stream. +Send the logical clipping values from \-u/-l in the LAVAFLOW stream. \fBfoo2lava-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -162,7 +162,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -207,7 +207,7 @@ examine it, and then print it using a RAW print queue: .nf foo2lava-wrapper testpage.ps > testpage.zm lavadecode < testpage.zm -lpr -P raw testpage.zm +lpr \-P raw testpage.zm .fi .RE .P @@ -215,7 +215,7 @@ Create a color LAVAFLOW stream from a Postscript document: .RS .nf -foo2lava-wrapper -c testpage.ps > testpage.zc +foo2lava-wrapper \-c testpage.ps > testpage.zc .fi .RE diff --git a/foo2lava.1in b/foo2lava.1in index 2328ae5..0b88544 100644 --- a/foo2lava.1in +++ b/foo2lava.1in @@ -111,7 +111,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the LAVAFLOW stream [3]. +Send logical clipping amounts implied by \-u/-l in the LAVAFLOW stream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -160,10 +160,10 @@ Create a black and white LAVAFLOW stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2lava \-r1200x600 \-g10200x6600 \-p1 >testpage.zm .fi .RE .P @@ -171,10 +171,10 @@ Create a color LAVAFLOW stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2lava \-r1200x600 \-g10200x6600 \-p1 >testpage.zc .fi .RE diff --git a/foo2oak-wrapper.1in b/foo2oak-wrapper.1in index 435dae3..bbf1d23 100644 --- a/foo2oak-wrapper.1in +++ b/foo2oak-wrapper.1in @@ -49,7 +49,7 @@ l l l l n n. _ Media HP CLJ 1500 KM-1635 - -z0 -z1 + \-z0 \-z1 _ autoselect 0 0 plain 1 1 @@ -110,9 +110,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2oak\fP @@ -131,13 +131,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the OAKT stream. +Send the logical clipping values from \-u/-l in the OAKT stream. \fBfoo2oak-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -155,7 +155,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -200,7 +200,7 @@ examine it, and then print it using a RAW print queue: .nf foo2oak-wrapper testpage.ps > testpage.oak oakdecode < testpage.oak -lpr -P raw testpage.oak +lpr \-P raw testpage.oak .fi .RE .P @@ -208,7 +208,7 @@ Create a color OAKT stream from a Postscript document: .RS .nf -foo2oak-wrapper -c testpage.ps > testpage.oak +foo2oak-wrapper \-c testpage.ps > testpage.oak .fi .RE diff --git a/foo2oak.1in b/foo2oak.1in index 1a1c863..94b3ed6 100644 --- a/foo2oak.1in +++ b/foo2oak.1in @@ -122,7 +122,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the OAKT stream [3]. +Send logical clipping amounts implied by \-u/-l in the OAKT stream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -167,10 +167,10 @@ Create a black and white OAKT stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2oak \-r600x600 \-g5100x6600 \-p1 >testpage.oak .fi .RE .P @@ -178,10 +178,10 @@ Create a color OAKT stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2oak \-r600x600 \-g5100x6600 \-p1 >testpage.oak .fi .RE diff --git a/foo2qpdl-wrapper.1in b/foo2qpdl-wrapper.1in index 7e476c1..4524372 100644 --- a/foo2qpdl-wrapper.1in +++ b/foo2qpdl-wrapper.1in @@ -39,7 +39,7 @@ Color correction mode [0]. .TS n l . 1 CRD -10 ICM color profile (using -G *.icm file) +10 ICM color profile (using \-G *.icm file) .TE .TP .BI \-d\0 duplex @@ -112,9 +112,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2qpdl\fP @@ -129,13 +129,13 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [varies with paper size]. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the QPDL stream. +Send the logical clipping values from \-u/-l in the QPDL stream. \fBfoo2qpdl-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -164,11 +164,11 @@ Color Adjust. \fIparm\fP is b, c, s, cr, mg, yb for brightness, contrast, saturation, cyan-red balance, magenta-green balance, and yellow-blue balance. \fIval\fP is 0 to 100. Multiple options are allowed. -The default is "-ab=50 -ac=50 -as=50 -acr=50 -amg=50 -ayb=50". -This only works when the -z3 (e.g. CLP-365) model is set! +The default is "\-ab=50 \-ac=50 \-as=50 \-acr=50 \-amg=50 \-ayb=50". +This only works when the \-z3 (e.g. CLP\-365) model is set! .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -213,7 +213,7 @@ examine it, and then print it using a RAW print queue: .nf foo2qpdl-wrapper testpage.ps > testpage.zm qpdldecode < testpage.zm -lpr -P raw testpage.zm +lpr \-P raw testpage.zm .fi .RE .P @@ -221,7 +221,7 @@ Create a color QPDL stream from a Postscript document: .RS .nf -foo2qpdl-wrapper -c testpage.ps > testpage.zc +foo2qpdl-wrapper \-c testpage.ps > testpage.zc .fi .RE diff --git a/foo2qpdl.1in b/foo2qpdl.1in index bdc209d..780ee0d 100644 --- a/foo2qpdl.1in +++ b/foo2qpdl.1in @@ -114,7 +114,7 @@ for a particular printer. Color Adjust: brightness, contrast, saturation, cyan-red balance, magenta-green balance, and yellow-blue balance from 0 to 100. The default is 50,50,50,50,50,50. -This only works when the -z3 (e.g. CLP-365) model is set! +This only works when the \-z3 (e.g. CLP\-365) model is set! .TP .BI \-u\0 xoff x yoff Set the offset of the start of the printable region from the @@ -125,7 +125,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the QPDL stream [3]. +Send logical clipping amounts implied by \-u/-l in the QPDL stream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -172,10 +172,10 @@ Create a black and white QPDL stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2qpdl -r1200x600 -g10200x6600 -p0 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2qpdl \-r1200x600 \-g10200x6600 \-p0 >testpage.zm .fi .RE .P @@ -183,10 +183,10 @@ Create a color QPDL stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2qpdl -r1200x600 -g10200x6600 -p0 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2qpdl \-r1200x600 \-g10200x6600 \-p0 >testpage.zc .fi .RE diff --git a/foo2slx-wrapper.1in b/foo2slx-wrapper.1in index 966ec6f..81326a1 100644 --- a/foo2slx-wrapper.1in +++ b/foo2slx-wrapper.1in @@ -83,9 +83,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2slx\fP @@ -104,13 +104,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. +Send the logical clipping values from \-u/-l in the ZjStream. \fBfoo2slx-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -124,7 +124,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -169,7 +169,7 @@ examine it, and then print it using a RAW print queue: .nf foo2slx-wrapper testpage.ps > testpage.zm slxdecode < testpage.zm -lpr -P raw testpage.zm +lpr \-P raw testpage.zm .fi .RE .P @@ -177,7 +177,7 @@ Create a color ZjStream stream from a Postscript document: .RS .nf -foo2slx-wrapper -c testpage.ps > testpage.zc +foo2slx-wrapper \-c testpage.ps > testpage.zc .fi .RE diff --git a/foo2slx.1in b/foo2slx.1in index 5a431e0..8eab873 100644 --- a/foo2slx.1in +++ b/foo2slx.1in @@ -93,7 +93,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -130,10 +130,10 @@ Create a black and white SLX stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2slx \-r1200x600 \-g10200x6600 \-p1 >testpage.zm .fi .RE .P @@ -141,10 +141,10 @@ Create a color SLX stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2slx -r1200x600 -g10200x6600 -p1 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2slx \-r1200x600 \-g10200x6600 \-p1 >testpage.zc .fi .RE diff --git a/foo2xqx-wrapper.1in b/foo2xqx-wrapper.1in index bef7ba5..382a17a 100644 --- a/foo2xqx-wrapper.1in +++ b/foo2xqx-wrapper.1in @@ -100,9 +100,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2xqx\fP @@ -121,13 +121,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. +Send the logical clipping values from \-u/-l in the ZjStream. \fBfoo2xqx-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -150,7 +150,7 @@ examine it, and then print it using a RAW print queue: .nf foo2xqx-wrapper testpage.ps > testpage.xqx xqxdecode < testpage.xqx -lpr -P raw testpage.xqx +lpr \-P raw testpage.xqx .fi .RE diff --git a/foo2xqx.1in b/foo2xqx.1in index 6c60c89..da521fb 100644 --- a/foo2xqx.1in +++ b/foo2xqx.1in @@ -110,7 +110,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -146,10 +146,10 @@ Create a black and white XQX stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2xqx -r1200x600 -g10200x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2xqx \-r1200x600 \-g10200x6600 \-p1 >testpage.zm .fi .RE diff --git a/foo2zjs-wrapper.1in b/foo2zjs-wrapper.1in index 1648bf7..16998b1 100644 --- a/foo2zjs-wrapper.1in +++ b/foo2zjs-wrapper.1in @@ -38,7 +38,7 @@ n l . 1 Photos (using m2300w CRDs) 2 Photos and text (using m2300w CRDs) 3 Graphics and text (using m2300w CRDs) -10 ICM color profile (using -G *.icm file) +10 ICM color profile (using \-G *.icm file) .TE .TP .BI \-d\0 duplex @@ -55,7 +55,7 @@ l r r r r r. _ Media 2300DL 2200DL HP 1018 HP P1102 HP \^ HP 1005 HP 1020 HP P1606 CP1025 -\^ -z0 -z0 -z1 -z2 -z3 +\^ \-z0 \-z0 \-z1 \-z2 \-z3 _ standard 1 1 1 1 1 transparency 2 2 2 2 2 @@ -84,7 +84,7 @@ l r r r r. _ Paper MC 2300DL HP 1018 HP P1102 HP \^ HP 1005 HP 1020 HP P1606 CP1025 -\^ -z0 -z1 -z2 -z3 +\^ \-z0 \-z1 \-z2 \-z3 _ letter 1 1 1 1 legal 5 5 5 5 @@ -100,9 +100,11 @@ env Monarch 37 37 37 37 postcard (japan) na 260 43 43 B5iso na 259 na na A6 na 262 70 70 -double postcard rotated na 261 82 82 +double postcard na 261 82 82 + rotated \^ \^ \^ \^ 16k 197x273 na 257 257 257 -fanfold german legal na 258 258 258 +fanfold german na 258 258 258 + legal \^ \^ \^ \^ 16k 184x260 na na 263 263 16k 195x270 na na 264 264 photo 4x6 na na na 268 @@ -137,9 +139,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2zjs\fP @@ -158,13 +160,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. +Send the logical clipping values from \-u/-l in the ZjStream. \fBfoo2zjs-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -200,7 +202,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -245,7 +247,7 @@ examine it, and then print it using a RAW print queue: .nf foo2zjs-wrapper testpage.ps > testpage.zm zjsdecode < testpage.zm -lpr -P raw testpage.zm +lpr \-P raw testpage.zm .fi .RE .P @@ -253,7 +255,7 @@ Create a color ZjStream stream from a Postscript document: .RS .nf -foo2zjs-wrapper -c testpage.ps > testpage.zc +foo2zjs-wrapper \-c testpage.ps > testpage.zc .fi .RE diff --git a/foo2zjs.1in b/foo2zjs.1in index a26113c..feb973b 100644 --- a/foo2zjs.1in +++ b/foo2zjs.1in @@ -50,7 +50,7 @@ l r r r r r. _ Media 2300DL 2200DL HP 1018 HP P1102 HP \^ HP 1005 HP 1020 HP P1606 CP1025 -\^ -z0 -z0 -z1 -z2 -z3 +\^ \-z0 \-z0 \-z1 \-z2 \-z3 _ standard 1 1 1 1 1 transparency 2 2 2 2 2 @@ -79,7 +79,7 @@ l r r r r. _ Paper MC 2300DL HP 1018 HP P1102 HP \^ HP 1005 HP 1020 HP P1606 CP1025 -\^ -z0 -z1 -z2 -z3 +\^ \-z0 \-z1 \-z2 \-z3 _ letter 1 1 1 1 legal 5 5 5 5 @@ -95,9 +95,11 @@ env Monarch 37 37 37 37 postcard (japan) na 260 43 43 B5iso na 259 na na A6 na 262 70 70 -double postcard rotated na 261 82 82 +double postcard na 261 82 82 + rotated \^ \^ \^ \^ 16k 197x273 na 257 257 257 fanfold german legal na 258 258 258 + legal \^ \^ \^ \^ 16k 184x260 na na 263 263 16k 195x270 na na 264 264 photo 4x6 na na na 268 @@ -143,7 +145,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -201,10 +203,10 @@ Create a black and white ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2zjs \-r1200x600 \-g10200x6600 \-p1 >testpage.zm .fi .RE .P @@ -212,10 +214,10 @@ Create a color ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2zjs -r1200x600 -g10200x6600 -p1 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2zjs \-r1200x600 \-g10200x6600 \-p1 >testpage.zc .fi .RE diff --git a/gipddecode.1in b/gipddecode.1in index b802275..2b4ff71 100644 --- a/gipddecode.1in +++ b/gipddecode.1in @@ -39,7 +39,7 @@ Decode an GIPD stream file. .nf .ft CW -$ gipddecode -h x500-mono.prn +$ gipddecode \-h x500-mono.prn 0: OFST 0 len=128 80: OFST 1 len=128 100: OFST 2 len=128 diff --git a/hbpldecode.1in b/hbpldecode.1in index 52d0ee7..61e294b 100644 --- a/hbpldecode.1in +++ b/hbpldecode.1in @@ -49,12 +49,12 @@ Decode an HBPL stream file, version 1. .nf .ft CW -$ hbpldecode -h 1250c-mono.prn +$ hbpldecode \-h 1250c-mono.prn 0: \\033%-12345X@PJL JOB MODE=PRINTER 1f: @PJL SET STRINGCODESET=UTF8 3b: @PJL COMMENT DATE=06/01/2011 58: @PJL COMMENT TIME=13:28:30 - 73: @PJL COMMENT DNAME=empty - Notepad + 73: @PJL COMMENT DNAME=empty \- Notepad 96: @PJL SET JOBATTR="@LUNA=rick" b4: @PJL SET COPIES=1 c6: @PJL SET QTY=1 @@ -129,7 +129,7 @@ Decode an HBPL stream file, version 2. .nf .ft CW -$ hbpldecode -h 6015c-color.prn +$ hbpldecode \-h 6015c-color.prn 0: \033%-12345X@PJL JOB NAME=PRINTER 20: @PJL SET JOBATTR="HOST:dual.rkkda.org" 48: @PJL SET JOBATTR="USER:rick" @@ -155,28 +155,28 @@ $ hbpldecode -h 6015c-color.prn w,h=5120x6406 res=600 color=1 mediatype=Plain(1) papersize=Letter(4) 1cc: Cyan BIH: - DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 L0 = 128, MX = 0, MY = 0 Order = 0 Options = 64 LRLTWO 51 stripes, 0 layers, 1 planes ...cyan data skipped... 2ac: Magenta BIH: - DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 L0 = 128, MX = 0, MY = 0 Order = 0 Options = 64 LRLTWO 51 stripes, 0 layers, 1 planes ...magenta data skipped... 38c: Yellow BIH: - DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 L0 = 128, MX = 0, MY = 0 Order = 0 Options = 64 LRLTWO 51 stripes, 0 layers, 1 planes ...yellow data skipped... 46c: Black BIH: - DL = 0, D = 0, P = 1, - = 0, XY = 10240 x 6406 + DL = 0, D = 0, P = 1, \- = 0, XY = 10240 x 6406 L0 = 128, MX = 0, MY = 0 Order = 0 Options = 64 LRLTWO diff --git a/hipercdecode.1in b/hipercdecode.1in index f8dec45..10267cb 100644 --- a/hipercdecode.1in +++ b/hipercdecode.1in @@ -40,7 +40,7 @@ Decode an HIPERC stream file created by foo2hiperc. .nf .ft CW -$ foo2hiperc-wrapper testpage.ps | hipercdecode -h +$ foo2hiperc-wrapper testpage.ps | hipercdecode \-h 0: \\033%-12345X@PJL f: @PJL RDYMSG DISPLAY = "Unknown" 30: @PJL SET OKIJOBACCOUNTJOB USERID="Unknown" JOBNAME="Unknown" @@ -62,7 +62,7 @@ $ foo2hiperc-wrapper testpage.ps | hipercdecode -h 289: RECTYPE 0 (len=52,0x34 cnt=1) 291: BLKNUM 0, nbie=1, pn=3 [black] uc=0,0, wid=4864 ud=0,100 2a5: BLKNUM 1 (len=20), uncompressed=1, bie: - DL = 48, D = 48, P = 49, - = 48, XY = 4864 x 6816 + DL = 48, D = 48, P = 49, \- = 48, XY = 4864 x 6816 L0 = 256, MX = 0, MY = 0 Order = 0 Options = 0 diff --git a/icc2ps/foo2zjs-icc2ps.1in b/icc2ps/foo2zjs-icc2ps.1in index bbccb50..054bbdf 100644 --- a/icc2ps/foo2zjs-icc2ps.1in +++ b/icc2ps/foo2zjs-icc2ps.1in @@ -1,16 +1,16 @@ -.TH foo2zjs-icc2ps 1 "Sun Jun 20 04:33:46 2010" "foo2zjs-icc2ps 0.0" +.TH foo2zjs\-icc2ps 1 "Sun Jun 20 04:33:46 2010" "foo2zjs\-icc2ps 0.0" #ifndef OLDGROFF #include "../macros.man" #endif .SH NAME -foo2zjs-icc2ps - little cms PostScript converter. +foo2zjs\-icc2ps \- little cms PostScript converter. .SH SYNOPSIS -.B foo2zjs-icc2ps +.B foo2zjs\-icc2ps .RI [ options ] .SH DESCRIPTION lcms is a standalone CMM engine, which deals with the color management. It implements a fast transformation between ICC profiles. -.B foo2zjs-icc2ps +.B foo2zjs\-icc2ps is little cms PostScript converter. .SH COMMAND LINE OPTIONS .TP @@ -18,7 +18,7 @@ is little cms PostScript converter. Black point compensation (CRD only). .TP .B \-c <0,1,2> -Precision (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only) +Precision (0=LowRes, 1=Normal (default), 2=Hi\-res) (CRD only) .TP .BI \-i\ profile Input profile: Generates Color Space Array (CSA). @@ -27,7 +27,6 @@ Input profile: Generates Color Space Array (CSA). Alternate way to set precision, number of CLUT points (CRD only) .TP .BI \-o\ profile -.p Output profile: Generates Color Rendering Dictionary(CRD). .TP .B \-t <0,1,2,3> @@ -38,17 +37,14 @@ Do NOT generate resource name on CRD. .SH FILES .BR /usr/share/foo2*/icm/* .SH SEE ALSO -.BR foo2hiperc-wrapper (1), -.BR foo2hp2600-wrapper (1), -.BR foo2lava-wrapper (1), -.BR foo2oak-wrapper (1), -.BR foo2qpdl-wrapper (1), -.BR foo2zjs-wrapper (1), +.BR foo2hiperc\-wrapper (1), +.BR foo2hp2600\-wrapper (1), +.BR foo2lava\-wrapper (1), +.BR foo2oak\-wrapper (1), +.BR foo2qpdl\-wrapper (1), +.BR foo2zjs\-wrapper (1), .SH "AUTHOR" Rick Richardson .br http://foo2zjs.rkkda.com/ -'/" -'/" -'/" .em pdf_outline diff --git a/lavadecode.1in b/lavadecode.1in index 3a4901e..36e3cff 100644 --- a/lavadecode.1in +++ b/lavadecode.1in @@ -37,7 +37,7 @@ Decode an LAVAFLOW stream file created by foo2lava. .nf .ft CW -$ lavadecode -h < testpage.prn +$ lavadecode \-h < testpage.prn 0: \\033%-12345X@PJL JOB NAME="stdin" 1f: \\033%-12345X@PJL JOB USERNAME="" 3d: \\033%-12345X@PJL JOB TIMESTAMP="07/20/2007" @@ -67,7 +67,7 @@ $ lavadecode -h < testpage.prn 133: \\033*p200Y Y OFFSET: [200] 13a: \\033*r1A [Page 1] 13f: \\033*b20V [black] - DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 L0 = 128, MX = 0, MY = 0 Order = 3 ILEAVE SMID Options = 92 LRLTWO TPDON TPBON DPON diff --git a/macros.man b/macros.man index 289c457..cee9a52 100644 --- a/macros.man +++ b/macros.man @@ -26,11 +26,11 @@ .\} .el \{\ . ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' +'\" \(br\|\s\-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' . ft CW . nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ +\Z'\v'.25m'\D'l 0 \-1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l \-\\n[par*bxw]u 0''\ +\Z'\h'.2m'\s\-1\\$1\s+1'\ \h'\\n[par*bxw]u'\\$2 . ft P . \} @@ -53,26 +53,26 @@ '\" .if n .defcolor orange rgb #ffff00 '\" -'\" color - set the current color (ignores request with old groff) +'\" color \- set the current color (ignores request with old groff) '\" .de color .if mred \m[\\$1]\c .. '\" -'\" colorword - colorize a word (ignored by old groff) +'\" colorword \- colorize a word (ignored by old groff) '\" .de colorword .ie m\\$1 \m[\\$1]\\$2\mP\c .el \\$2\c .. '\" -'\" colbox - colorize a word in a filled box +'\" colbox \- colorize a word in a filled box '\" .de colbox .ie mred \M[\\$2]\ \v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ +\D'P 0 \-0.9v \w'\\$3'u 0 0 +0.9v \-\w'\\$3'u 0'\ +\v'\-.167v'\ \m[\\$1]\\$3\mP\MP .el \\$3\c .. @@ -94,7 +94,7 @@ '\" pdfdest LINKNAME '\" .de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" +.pdfmark "/Dest /\\$1 /View [/XYZ \-5 PL null] /DEST" .. '\" '\" pdfbookmark COUNT LINKNAME STRING @@ -140,7 +140,7 @@ . \} . \} . ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" +. pdfbookmark \-\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" .\} .. '\" @@ -159,7 +159,7 @@ /Subject (\*[an-title] Manual Page) \ /Author (Rick Richardson) \ /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ + /Creator (groff \n(.x.\n(.y.\n(.Y \-man) \ /CreationDate (\*[an-extra1]) \ /ModDate (\*[an-extra1]) \ /DOCINFO" diff --git a/oakdecode.1in b/oakdecode.1in index e248af7..4e421a8 100644 --- a/oakdecode.1in +++ b/oakdecode.1in @@ -55,7 +55,7 @@ $ oakdecode < testpage.oak 15 (16) (no args) bih0 w h l0 bih5 dlen plen unk yOff P subP 3c (64) 00010000 2176 256 256 58030020 1050 1056 000 64 3 0 - DL = 0, D = 0, P = 1, - = 0, XY = 2176 x 256 + DL = 0, D = 0, P = 1, \- = 0, XY = 2176 x 256 L0 = 256, MX = 32, MY = 0 Order = 3 ILEAVE SMID Options = 88 LRLTWO TPDON TPBON diff --git a/opldecode.1in b/opldecode.1in index 9706bb0..45d0544 100644 --- a/opldecode.1in +++ b/opldecode.1in @@ -33,11 +33,11 @@ Print file offsets. Set Debug level [0]. .SH EXAMPLES -Decode an Raster Object stream file created by foo2lava-wrapper -z1. +Decode an Raster Object stream file created by foo2lava-wrapper \-z1. .nf .ft CW -$ foo2lava-wrapper -z1 testpage.ps | opldecode -h +$ foo2lava-wrapper \-z1 testpage.ps | opldecode \-h 0: Event=StartOfJob; 11: OSVersion=WindowsXP; 25: DrvVersion=2.0.1410.0; @@ -53,7 +53,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h 11e: RasterObject.Height=6400; 137: RasterObject.Data#20= - DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 L0 = 128, MX = 0, MY = 0 Order = 3 ILEAVE SMID Options = 92 LRLTWO TPDON TPBON DPON @@ -66,7 +66,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h 10e4a: RasterObject.Height=6400; 10e63: RasterObject.Data#20= - DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 L0 = 128, MX = 0, MY = 0 Order = 3 ILEAVE SMID Options = 92 LRLTWO TPDON TPBON DPON @@ -79,7 +79,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h 25a17: RasterObject.Height=6400; 25a30: RasterObject.Data#20= - DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 L0 = 128, MX = 0, MY = 0 Order = 3 ILEAVE SMID Options = 92 LRLTWO TPDON TPBON DPON @@ -93,7 +93,7 @@ $ foo2lava-wrapper -z1 testpage.ps | opldecode -h 3f68c: RasterObject.Height=6400; 3f6a5: RasterObject.Data#20= - DL = 0, D = 0, P = 1, - = 0, XY = 9792 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9792 x 6400 L0 = 128, MX = 0, MY = 0 Order = 3 ILEAVE SMID Options = 92 LRLTWO TPDON TPBON DPON diff --git a/osx-hotplug/osx-hplj-hotplug.1in b/osx-hotplug/osx-hplj-hotplug.1in index 326d066..cd27b0e 100644 --- a/osx-hotplug/osx-hplj-hotplug.1in +++ b/osx-hotplug/osx-hplj-hotplug.1in @@ -3,7 +3,7 @@ #include "../macros.man" #endif .SH NAME -osx-hplj-hotplug - Daemon for downloading firmware files for Mac OS X +osx-hplj-hotplug \- Daemon for downloading firmware files for Mac OS X .SH SYNOPSIS .B osx-hplj-hotplug .RI [ options ] diff --git a/printer-profile.1in b/printer-profile.1in index 0f52054..9328db4 100644 --- a/printer-profile.1in +++ b/printer-profile.1in @@ -29,11 +29,11 @@ Manuf is "dell". Model is "1355". Edit the script for additional models. .SH OPTIONS - -b 1|2 Bits per pixel (1) - -r XRESxYRES Resolution. Default=''. () - -P rem-print Remote print (64-bit) machine, or none (amd) - -S rem-scan Remote scan (ColorMunki) machine, or none (mac) - -D lvl Debug level + \-b 1|2 Bits per pixel (1) + \-r XRESxYRES Resolution. Default=''. () + \-P rem-print Remote print (64-bit) machine, or none (amd) + \-S rem-scan Remote scan (ColorMunki) machine, or none (mac) + \-D lvl Debug level .SH EXAMPLES Profile the Samsung clp-315: diff --git a/qpdldecode.1in b/qpdldecode.1in index d8b2f35..7f9804b 100644 --- a/qpdldecode.1in +++ b/qpdldecode.1in @@ -54,7 +54,7 @@ Decode an QPDL stream file created by foo2qpdl. len=56(0x38) magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, checksum=0x356 - DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 L0 = 6400, MX = 0, MY = 0 Order = 0 Options = 72 LRLTWO TPBON @@ -64,7 +64,7 @@ Decode an QPDL stream file created by foo2qpdl. len=56(0x38) magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, checksum=0x356 - DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 L0 = 6400, MX = 0, MY = 0 Order = 0 Options = 72 LRLTWO TPBON @@ -74,7 +74,7 @@ Decode an QPDL stream file created by foo2qpdl. len=56(0x38) magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, checksum=0x356 - DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 L0 = 6400, MX = 0, MY = 0 Order = 0 Options = 72 LRLTWO TPBON @@ -84,7 +84,7 @@ Decode an QPDL stream file created by foo2qpdl. len=56(0x38) magic=0x39abcdef, len=20(0x14), unk=0,0,0,0,0,0, checksum=0x356 - DL = 0, D = 0, P = 1, - = 0, XY = 9984 x 6400 + DL = 0, D = 0, P = 1, \- = 0, XY = 9984 x 6400 L0 = 6400, MX = 0, MY = 0 Order = 0 Options = 72 LRLTWO TPBON diff --git a/slxdecode.1in b/slxdecode.1in index 7f9ebc5..30f24bc 100644 --- a/slxdecode.1in +++ b/slxdecode.1in @@ -80,7 +80,7 @@ SLT_START_PAGE, 16 items [Page 1] SLI_0x10f, 1 (0x1) SLT_JBIG_BIH, 0 items Data: 20 bytes - DL = 0, D = 0, P = 1, - = 0, XY = 4896 x 6392 + DL = 0, D = 0, P = 1, \- = 0, XY = 4896 x 6392 L0 = 128, MX = 0, MY = 0 Order = 0 Options = 8 TPBON diff --git a/xqxdecode.1in b/xqxdecode.1in index 488d192..fc32d76 100644 --- a/xqxdecode.1in +++ b/xqxdecode.1in @@ -37,7 +37,7 @@ Decode an XQX stream file created by foo2xqx. .nf .ft CW -$ xqxdecode -h < testpage.xm +$ xqxdecode \-h < testpage.xm 0: \\033%-12345X@PJL JOB 12: @PJL SET JAMRECOVERY=OFF 2b: @PJL SET DENSITY=3 @@ -78,7 +78,7 @@ $ xqxdecode -h < testpage.xm 230: XQXI_0x80000000, 64 (0x40) 23c: XQXI_0x40000000, 0 (0x0) 248: XQXI_BIH(0x40000002) - DL = 0, D = 0, P = 1, - = 0, XY = 9856 x 6432 + DL = 0, D = 0, P = 1, \- = 0, XY = 9856 x 6432 L0 = 128, MX = 16, MY = 0 Order = 3 ILEAVE SMID Options = 92 LRLTWO TPDON TPBON DPON diff --git a/zjsdecode.1in b/zjsdecode.1in index ea6c443..567f840 100644 --- a/zjsdecode.1in +++ b/zjsdecode.1in @@ -74,7 +74,7 @@ ZJT_START_PAGE, 17 items ZJI_MINOLTA_PAGE_NUMBER, 1 (0x1) ZJT_JBIG_BIH, 0 items Data: 20 bytes - DL = 0, D = 0, P = 1, - = 0, XY = 10200 x 6600 + DL = 0, D = 0, P = 1, \- = 0, XY = 10200 x 6600 L0 = 128, MX = 16, MY = 0 Order = 3 ILEAVE SMID Options = 92 LRLTWO TPDON TPBON DPON -- cgit v1.2.3 From c9878678e2bf7b415470474e6c7ba7493e6b3bd3 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:43:59 +0200 Subject: Fix various spelling errors: precission supress langauge Gbp-Pq: Name 0016-Fix-various-spelling-errors.patch --- icc2ps/cmscgats.c | 2 +- icc2ps/cmsio1.c | 2 +- icc2ps/cmsmatsh.c | 4 ++-- icc2ps/cmsps2.c | 4 ++-- icc2ps/icc2ps.c | 4 ++-- oakdecode.c | 2 +- qpdldecode.c | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/icc2ps/cmscgats.c b/icc2ps/cmscgats.c index 042429f..db4ab3f 100644 --- a/icc2ps/cmscgats.c +++ b/icc2ps/cmscgats.c @@ -620,7 +620,7 @@ void ReadReal(LPIT8 it8, int inum) if (it8->ch == '.') { // Decimal point double frac = 0.0; // fraction - int prec = 0; // precission + int prec = 0; // precision NextCh(it8); // Eats dec. point diff --git a/icc2ps/cmsio1.c b/icc2ps/cmsio1.c index 9f9d6e4..1bd4e23 100644 --- a/icc2ps/cmsio1.c +++ b/icc2ps/cmsio1.c @@ -1162,7 +1162,7 @@ LCMSBOOL ReadCLUT(LPLCMSICCPROFILE Icc, size_t Offset, LPLUT NewLUT) AdjustEndianessArray16(NewLUT ->T, NewLUT->Tsize / sizeof(WORD)); } else { - cmsSignalError(LCMS_ERRC_ABORTED, "Unknow precission of '%d'", CLUT.prec); + cmsSignalError(LCMS_ERRC_ABORTED, "Unknow precision of '%d'", CLUT.prec); return FALSE; } diff --git a/icc2ps/cmsmatsh.c b/icc2ps/cmsmatsh.c index 634c9f3..971f931 100644 --- a/icc2ps/cmsmatsh.c +++ b/icc2ps/cmsmatsh.c @@ -75,7 +75,7 @@ int ComputeTables(LPGAMMATABLE Table[3], LPWORD Out[3], LPL16PARAMS p16) AllLinear += cmsIsLinear(PtrW, p16 -> nSamples); } - // If is all linear, then supress table interpolation (this + // If is all linear, then suppress table interpolation (this // will speed greately some trivial operations. // Return 1 if present, 0 if all linear @@ -192,7 +192,7 @@ LPMATSHAPER cmsAllocMatShaper(LPMAT3 Matrix, LPGAMMATABLE Tables[], DWORD Behavi AllLinear += cmsIsLinear(PtrW, NewMatShaper -> p16.nSamples); } - // If is all linear, then supress table interpolation (this + // If is all linear, then suppress table interpolation (this // will speed greately some trivial operations if (AllLinear != 3) diff --git a/icc2ps/cmsps2.c b/icc2ps/cmsps2.c index 6c352a7..31592e7 100644 --- a/icc2ps/cmsps2.c +++ b/icc2ps/cmsps2.c @@ -54,7 +54,7 @@ LCMSAPI DWORD LCMSEXPORT cmsGetPostScriptCRDEx(cmsHPROFILE hProfile, int Intent, Color Space Arrays (CSA) ================================================================================== - In order to obtain precission, code chooses between three ways to implement + In order to obtain precision, code chooses between three ways to implement the device -> XYZ transform. These cases identifies monochrome profiles (often implemented as a set of curves), matrix-shaper and LUT-based. @@ -1456,7 +1456,7 @@ int WriteOutputLUT(LPMEMSTREAM m, cmsHPROFILE hProfile, int Intent, DWORD dwFlag OutputFormat = CHANNELS_SH(nChannels) | BYTES_SH(2); // For absolute colorimetric, the LUT is encoded as relative - // in order to preserve precission. + // in order to preserve precision. RelativeEncodingIntent = Intent; if (RelativeEncodingIntent == INTENT_ABSOLUTE_COLORIMETRIC) diff --git a/icc2ps/icc2ps.c b/icc2ps/icc2ps.c index 7c7df2b..8f78a55 100644 --- a/icc2ps/icc2ps.c +++ b/icc2ps/icc2ps.c @@ -139,8 +139,8 @@ void Help(void) fprintf(stderr, "%cb - Black point compensation (CRD only)\n", SW); fprintf(stderr, "%cu - Do NOT generate resource name on CRD\n", SW); - fprintf(stderr, "%cc<0,1,2> - Precission (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only)\n", SW); - fprintf(stderr, "%cn - Alternate way to set precission, number of CLUT points (CRD only)\n", SW); + fprintf(stderr, "%cc<0,1,2> - Precision (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only)\n", SW); + fprintf(stderr, "%cn - Alternate way to set precision, number of CLUT points (CRD only)\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "This program is intended to be a demo of the little cms\n" diff --git a/oakdecode.c b/oakdecode.c index 0653954..2ec1b1e 100644 --- a/oakdecode.c +++ b/oakdecode.c @@ -101,7 +101,7 @@ usage(void) "Options:\n" " -d basename Basename of .pbm file for saving decompressed planes\n" " -r basename Basename of .jbg file for saving raw planes\n" -" -i Supress display of image records\n" +" -i Suppress display of image records\n" " -o Print file offsets\n" " -D lvl Set Debug level [%d]\n" , Debug diff --git a/qpdldecode.c b/qpdldecode.c index d6336df..633ba97 100644 --- a/qpdldecode.c +++ b/qpdldecode.c @@ -82,7 +82,7 @@ usage(void) "\n" " Decode a QPDL stream into human readable form.\n" "\n" -" A Quick Page Description Langauge (QPDL) is the printer language" +" A Quick Page Description language (QPDL) is the printer language" " used by some Samsung printers, such as the CLP-600n.\n" "\n" " Also known as SPLC." -- cgit v1.2.3 From e543d752efdd1241c3ca8e4b3471832e14d13940 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:44:00 +0200 Subject: Delay firmware transfer for UDEV automatic printer setup Gbp-Pq: Name 0017-Delay-firmware-transfer-for-UDEV-automatic-printer-s.patch --- hplj1000 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hplj1000 b/hplj1000 index 21ca570..6b74601 100755 --- a/hplj1000 +++ b/hplj1000 @@ -32,6 +32,15 @@ esac PROGNAME="$0" +# +# Wait some time before installing the firmware so that probing for +# automatic printer setup which happens immediately after turning on +# the printer does not interfere with the firmware transfer to the +# printer +# https://bugs.launchpad.net/ubuntu/+source/foo2zjs/+bug/543177 +# +sleep 3 + # # Set $DEV to, e.g. /dev/usb/lp0, to force the device you want # Else, leave it null to automatically detect the device -- cgit v1.2.3 From 084b3f76c492d59ee0c94aee7f6d55b2f95e4bd0 Mon Sep 17 00:00:00 2001 From: Till Kamppeter Date: Tue, 4 Oct 2016 11:44:01 +0200 Subject: Removed the lines in the UDEV script for the automatic firmware upload into the printer which remove the UDEV rules files for HPLIP's automatic firmware upload. Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/foo2zjs/+bug/783389 Gbp-Pq: Name 0018-Removed-the-lines-in-the-UDEV-script-for-the-automat.patch --- hplj1000 | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/hplj1000 b/hplj1000 index 6b74601..6bc0d18 100755 --- a/hplj1000 +++ b/hplj1000 @@ -151,16 +151,6 @@ case "$0" in ;; esac -# -# Remove HPLIP proprietary rules! -# -model=` echo "$MODEL" | tr 'A-Z' 'a-z' ` -rm -f /etc/udev/rules.d/*hpmud*laserjet_${model}* -rm -f /etc/udev/rules.d/*hpmud_support.rules -rm -f /etc/udev/rules.d/*hpmud_plugin.rules -rm -f /lib/udev/rules.d/*hpmud_support.rules -rm -f /lib/udev/rules.d/*hpmud_plugin.rules - # # The special command line argument "install-usermap" will install # the proper entry into the /etc/hotplug/usb.usermap file -- cgit v1.2.3 From ccf4d3188a997e897e808054b57a37ad8a7f0b84 Mon Sep 17 00:00:00 2001 From: Till Kamppeter Date: Tue, 4 Oct 2016 11:44:02 +0200 Subject: The firmware upload script tried to upload the firmware via the usblp kernel module and with the CUPS USB backend (using libusb) in parallel, making the printer crash. Bug-Ubuntu: https://bugs.launchpad.net/bugs/1003843 Gbp-Pq: Name 0019-The-firmware-upload-script-tried-to-upload-the-firmw.patch --- hplj1000 | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/hplj1000 b/hplj1000 index 6bc0d18..2cd24b9 100755 --- a/hplj1000 +++ b/hplj1000 @@ -262,8 +262,14 @@ if [ "$DEV" != "" ]; then # force downloading to a specific device # load_usblp "$DEV" -elif [ -x $PRINTERID -o -x $USB_BACKEND ]; then - if [ -x $PRINTERID ]; then +elif [ -x $USB_BACKEND ]; then + # + # If we have CUPS installed, use the CUPS "usb" backend, as then we do + # not need to care whether the system uses the usblp kernel module or + # libusb + # + load_cups +elif [ -x $PRINTERID ]; then # # Sniff around for printers that need a firmware download # @@ -282,20 +288,6 @@ elif [ -x $PRINTERID -o -x $USB_BACKEND ]; then fi fi done - if [ "$usblps" != " " ]; then - # All done! - exit - fi - fi - - if [ -x $USB_BACKEND ]; then - # - # If we have CUPS installed, use the CUPS "usb" backend, as then we do - # not need to care whether the system uses the usblp kernel module or - # libusb - # - load_cups - fi else log "HP LaserJet $MODEL firmware was not downloaded..." log "...couldn't find $PRINTERID, DEV is not set, and CUPS not installed." -- cgit v1.2.3 From 895178d7e5178493d62a51cebeec5c9adbb487b9 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:44:03 +0200 Subject: Prevent an infinite loop when loading the firmware. When using the load_cups method, the CUPS backend will internally unload and reload the usblp module. This will generate SUBSYSTEM=usbmisc events that need to be ignored in the CUPS code path, or this script will be rerun in an infite loop. But when using the load_usblp method, the usblp module is obviously needed. So in this situation we need to ignore the SUBSYSTEM=usb events. Bug-Debian: http://bugs.debian.org/663868 Author: Peter De Wachter Gbp-Pq: Name 0020-Prevent-an-infinite-loop-when-loading-the-firmware.patch --- hplj1000 | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/hplj1000 b/hplj1000 index 2cd24b9..0461f24 100755 --- a/hplj1000 +++ b/hplj1000 @@ -24,12 +24,6 @@ # Mike Morgan (2004) # -# udev calls us twice on FC4! Just want /dev/usb/lp -case "$DEVNAME" in -/dev/usb/usb*) exit;; # Bug: FC4 -/dev/bus/usb/*) exit;; # Bug: Ubuntu 14 -esac - PROGNAME="$0" # @@ -261,6 +255,7 @@ if [ "$DEV" != "" ]; then # # force downloading to a specific device # + if [ "$SUBSYSTEM" != "usbmisc" ]; then exit; fi load_usblp "$DEV" elif [ -x $USB_BACKEND ]; then # @@ -268,11 +263,13 @@ elif [ -x $USB_BACKEND ]; then # not need to care whether the system uses the usblp kernel module or # libusb # + if [ "$SUBSYSTEM" != "usb" ]; then exit; fi load_cups elif [ -x $PRINTERID ]; then # # Sniff around for printers that need a firmware download # + if [ "$SUBSYSTEM" != "usbmisc" ]; then exit; fi usblps=`find /dev/usb -type c -name 'lp*'`" "`find /dev -type c -name 'usblp*'` for dev in $usblps; do status=`$PRINTERID $dev 2>/dev/null | grep -y "hp LaserJet $MODEL"` -- cgit v1.2.3 From f08e899c6b8baf9b7f5f4b9b4d6224ce2d25834e Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Tue, 4 Oct 2016 11:44:04 +0200 Subject: Build manpages reproducibly, through reading the MODTIME from debian/changelog exclusively, and giving LC_ALL=C.UTF-8 TZ=UTC to various commands Gbp-Pq: Name 0021-Build-manpages-reproducibly-through-reading-the-MODT.patch --- Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 4410c6f..2420cd3 100644 --- a/Makefile +++ b/Makefile @@ -80,6 +80,8 @@ endif ifeq ($(UNAME),SunOS) MODTIME= `ls -e $$1 | cut -c42-61` endif +# Define modtime from the debian changelog, for all files +MODTIME= LC_ALL=C.UTF-8 TZ=UTC date -d "$$(dpkg-parsechangelog -SDate)" "+%a %b %d %T %Y" # # Files for tarball @@ -1578,12 +1580,12 @@ install-doc: doc $(INSTALL) -c -m 644 ChangeLog $(DOCDIR) GROFF=/usr/local/test/bin/groff -GROFF=groff +GROFF=LC_ALL=C.UTF-8 TZ=UTC groff manual.pdf: $(MANPAGES) osx-hotplug/osx-hplj-hotplug.1 -$(GROFF) -t -man \ `ls $(MANPAGES) \ osx-hotplug/osx-hplj-hotplug.1 \ - | sort` \ + | LC_ALL=C.UTF-8 sort` \ | ps2pdf - $@ README: README.in -- cgit v1.2.3